Mam dość duży xml (> 10mb w rozmiarze & 40+ elementów). Obecnie przechowujemy taki xml w Oracle db i wykorzystujemy xquery do wysyłania zapytań i pobierania części xml. Ten proces jest powolny i wymaga wielu wywołań db. Badamy mongodb, aby zapisać ten xml i zapytać go. Po prostu przekonwertowałem xml na json i wczytałem do kolekcji mongo i szybko zapisałem ogromne dane json. I przechowuje węzły XML jako zagnieżdżone dokumenty. Ale kiedy zapytanie (przy użyciu find) dla najbardziej wewnętrznego elementu, zawsze zwraca cały dokument, zawierający również węzły o nieodpowiednich wartościach elementów. Oczekuję tylko kilku węzłów, które pasują do podanej wartości węzła. Daj mi znać, jeśli istnieje jakikolwiek najlepszy sposób przechowywania tak dużych plików xml w Mongo db. A także daj mi znać, jak odzyskać wewnętrzne węzły o dokładnych wartościach określonych w zapytaniu. Z góry dziękuję.Przechowywanie dużych plików XML w MongoDB
Odpowiedz
Jest to zachowanie filtrowania osadzonego dokumentu wielopoziomowego, zwykle filtr dopasowujący zwróci cały dokument, a nie podzbiory.
Sprawdź moje odpowiedzi na mongodb-querying-array-elements-within-a-document i how-to-find-the-matched-record-in-mongodb uzyskać więcej informacji
Może można dodać przykładowy schemat xml Obecnie nie masz, ktoś pomoże zorganizować aplikację.
Istnieje kilka faktów należy pamiętać:
numer 1- MongoDB zwraca tylko cały dokument w zależności od tego, czy to hit, czy nie, nie ma funkcji, aby wrócić tylko jego część (10 Październik 2011) i jeśli potrzebujesz filtrowania, musisz go zaimplementować za pomocą własnego kodu.
Numer 2- należy zwrócić uwagę na słowo kluczowe elemmatch. Wskazuje, aby wyszukiwać niektóre trafienia tylko w tym samym poddokumentu, ale nie htourghout całego dokumentu, więc możesz być zdezorientowany tutaj.
Numer 3 - nie ma właściwej strategii dzielenia agregatu na kolekcję w mongo w porównaniu do RDBMS-ów. Tak więc inna reprezentacja danych może rozwiązać twoją sprawę.
Number 4 - mimo numer 3 uwagą o „braku właściwej drodze”, istnieje ogólne zalecenie, aby zachować dokumenty rozmiar mniejszy niż 10 MB
Należy spojrzeć na Sausalito bazy danych XML: http://www.28msec.com. Używa MongoDB jako magazynu danych.
Czy zastanawiałeś się nad wypróbowaniem aktualnej bazy danych XML, takiej jak BaseX (http://basex.org)? Może to dać lepsze wyniki, w szczególności, jeśli i tak użyłeś XQuery.
Miałem ten sam problem. W moim przypadku węzeł najwyższego poziomu w każdym pliku XML zawsze zawierał olbrzymią listę mniejszych węzłów, więc ostatecznie zapisałem te elementy. Aby to zrobić, napisałem własne narzędzie wiersza poleceń xml-to-json. Użyłem go do konwersji 10 GB danych XML do JSON, w formacie, który może jeść mongoimport.
- 1. Przetwarzanie dużych plików xml
- 2. Parsowanie dużych plików pseudo-xml w pythonie
- 3. Parsowanie bardzo dużych plików XML w php
- 4. Wyświetlanie dużych plików XML w czasie zaćmienia?
- 5. Przechowywanie obrazów: system MongoDb kontra system plików
- 6. Przechowywanie dużych ilości danych: DB lub system plików?
- 7. Używanie python lxml.etree do dużych plików XML
- 8. Przechowywanie bardzo dużych liczb całkowitych w MySQL
- 9. Dzielenie dużych plików XML na porcje zarządzalne dla Hadoop
- 10. PHP - Odczyt i naprawa dużych niepoprawnych plików XML
- 11. Parsowanie bardzo dużych plików XML i rozesłanie do obiektów Java
- 12. Ładowanie dużych plików XML i radzenie sobie z MemoryError
- 13. Zarządzanie pamięcią dużych plików
- 14. CodeIgniter Przesyłanie dużych plików
- 15. Przechowywanie plików w SQL Server
- 16. Przechowywanie plików w Heroku - alternatywy?
- 17. Historyczne przechowywanie danych w MongoDB - najlepsza praktyka?
- 18. Przechowywanie xml wewnątrz obiektu json
- 19. MVC ActionResult dla dużych plików wideo
- 20. Przesyłanie plików dużych plików PHP/AJAX
- 21. Przechowywanie plików obrazów, plików psd, plików ai, flash w subversion
- 22. Jak używać programu Nokogiri :: XML :: Reader do analizowania dużych plików XML?
- 23. Przechowywanie R.drawowalnych identyfikatorów w tablicy XML
- 24. Rozszerzenie dużych plików dla git
- 25. FSEvents i kopiowanie dużych plików
- 26. Skuteczne odczytywanie dużych plików tekstowych
- 27. Clojure - Przyspiesz przetwarzanie dużych plików
- 28. Przechowywanie dużych ramek danych w redis przez R
- 29. Czy przechowywanie dużych zmiennych w zamknięciu może powodować problemy?
- 30. ANTLR4 Python parsowanie dużych plików
Możesz użyć prognoz, aby uzyskać część dokumentu: https://docs.mongodb.com/v3.2/tutorial/project-fields-from-query-results/ –