Вопрос

Я рассматриваю оптимальное решение с открытым исходным кодом для хранения XML-документов с последующим эффективным выполнением запросов.Объем данных будет небольшим.Насколько я понимаю, собственные базы данных XML могут стать подходящим решением для моего случая.Очевидно, они хранят XML-документы очень эффективно.Было бы здорово узнать ваш опыт.Есть предложения по правильному решению?Есть ли у вас опыт использования механизмов хранения XML в ваших приложениях?

Это было полезно?

Решение

В нашей работе мы привыкли работать с собственными XML-серверами.Все в порядке, если ваши данные меньше 100-200 МБ с, но после этого я не смог найти подходящий сервер, который мог бы обрабатывать данные.Я пробовал следующее:

  • существовать:Собственный XML-сервер на основе Java (с открытым исходным кодом):с большими файлами он обычно съедает память JVM, а затем выдает исключение нехватки памяти
  • Седна:Собственный XML-сервер на базе C (с открытым исходным кодом):Может обрабатывать очень большие базы данных, но происходит сбой, если вы пытаетесь запросить неиндексированные данные из базы данных.
  • База данных Tamino XML (собственная):Одна из первых баз данных XML, зрелая, но с дрянной поддержкой xquery (по крайней мере, самая последняя версия, которую мы используем, имеет очень плохую поддержку XQuery), и, как мы видели, даже обученный профессионал не мог правильно настроить ее для быть достаточно быстрым.

Вот мои предложения:

  • Для небольших данных и систем на базе Java попробуйте eXist.Он даже имеет поддержку файловых баз данных, подобных SQlite, что может быть полезно.
  • Для небольших и средних данных, где важна производительность, используйте sedna.По моему тесту он самый быстрый из тройки.
  • Если вам нужна поддержка, используйте Tamino.У него есть как минимум поддержка.

Для больших баз данных (1 ГБ и выше) я бы не рекомендовал ни одну из них (пока).eXist обычно аварийно завершал работу с базой данных размером 200 МБ.sedna вышла из строя с базой данных размером 1 ГБ при запросе чего-то, что не проиндексировано, а tamino не смог загрузить даже 500 МБ данных за один проход, прежде чем произошел сбой всей системы.Конечно, все эти системы развиваются, поэтому, возможно, немного позже их можно будет безопасно использовать, но собственные базы данных XML, к сожалению, все еще незрелы.

Другие советы

Посмотрели ли вы решения, поставляемые основными поставщиками, такие как Oracle XML DB . Я не пробовал, но, безусловно, стоило бы оценить, если у вас есть бюджет на такие вещи!

В Википедии также есть хороший список XML Dbs , который вы, возможно, захотите оценить.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top