Является ли Berkeley DB XML жизнеспособной базой данных базы данных?

По-видимому, BDB-XML существует примерно с 2003 года, но я только недавно наткнулся на него на веб-сайте Oracle: Berkeley DB XML. Здесь рекламный ролик:

Oracle Berkeley DB XML - это встраиваемая XML-база данных с открытым кодом, основанная на XQuery, на документы, хранящиеся в контейнерах, и индексированные на основе их содержимого. Oracle Berkeley DB XML построен поверх Oracle Berkeley DB и наследует его богатые функции и атрибуты. Как и Oracle Berkeley DB, он запускается в процессе с приложением, не требующим управления людьми. Oracle Berkeley DB XML добавляет парсер документов, XML-указатель и движок XQuery поверх Oracle Berkeley DB, чтобы обеспечить быстрый и эффективный поиск данных.

Мне кажется, что базовые идеи технически обоснованы и, вероятно, более зрелые, чем новые DB на основе документов, такие как CouchDB или MongoDB. Насколько мне известно, у него есть поддержка C, С++, Ruby и Perl. Он даже имеет возможности HA, такие как автоматическая репликация с использованием модели master/slave с автоматическими выборами.

Однако я не могу найти какие-либо проекты, которые его используют. Есть что-то принципиально неправильное? Является ли лицензия слишком обременительной? Это слишком сложно?

Почему он не используется?

Ответы

Ответ 1

Раньше я был менеджером продуктов для продуктов Berkeley DB в Oracle. Я уже более восьми лет работаю над этими базами данных BDB, я написал "рекламу", которую вы скопировали в свой вопрос.

Коммерчески мы используем в (неисчерпывающий список, только с головы):  - Autodesk использует BDB XML в Mapquest  - Farelogix использует BDB XML для системы бронирования  - Starwood Hotels использует BDB XML для управления информацией о свойствах, которыми они управляют  - Juniper Networks использует BDB XML в менеджере безопасности NetScreen  - многие из которых я не могу назвать из-за ограничений по контракту...  - и так далее...

Berkeley DB XML был относительно проигнорирован в мире с открытым исходным кодом, почему я понятия не имею. Здесь есть несколько проектов, и они использовали его, ничего общего с публикой, о которой я знаю. Недавно я увидел отличный пост в блоге о том, как использовать BDB XML из Emacs. После настройки вы можете запускать операторы XQuery по XML в интерактивном режиме в текстовом редакторе. Тем не менее, это очень выгодно для коммерческого использования и использования с открытым исходным кодом.

XQilla - это проект, созданный инженерами BDB XML из нескольких других проектов XML, которые мы вязали на протяжении многих лет. Мы открываем исходный код (лицензия Apache 2.0) XQilla, потому что это отличная библиотека XML-анализа XQuery и XML. Мы являемся компанией с базой данных, поэтому кусок, который берет XML после его анализа и организует его в наших базах данных btree, а также работу по оптимизации запросов, индексированию, статистике и целой тонне другого кода - это то, что находится под XQilla, но выше BDB btree, склеивая эти два вместе в BDB XML. Не стесняйтесь использовать его, если он решает вашу проблему, там вообще нет базы данных.

Продукт, построенный с нуля для XML, как правило, имеет несколько структур транзакций в своем ядре, которые управляют информацией на диске. Там не так много оптимизации, которую можно сделать, что мы еще не сделали в Berkeley DB и используем в Berkeley DB XML. Сказать, что база данных, созданная с нуля для управления XML, будет значительно лучше, чем BDB XML говорит, что там что-то отсутствует в Berkeley DB, я не думаю, что здесь есть обоснованный аргумент, но я готов узнать, если у кого-то есть информация о параллельной структуре транзакционных данных, критически важной для эффективного хранения XML, которое BDB еще не реализует.

eXist - это база данных Java XML, у нас есть Java JNI API, если вы хотите, и мы обычно избиваем штаны eXist с помощью тестов производительности, стабильности и масштабируемости.

Sedna - хорошая XML-база данных, это Apache 2.0, поэтому она не является двойной лицензией, а просто ПО FLOSS. Я бы предложил вам сравнить его с BDB XML, вы можете быть удивлены.

MarkLogic - отличный сервер баз данных XML/XQuery, они создали очень прочный продукт. Это не программная библиотека, это сервер. Существуют значительные различия между BDB XML и MarkLogic, но они оба коммерчески доступны - только BDB XML является открытым исходным кодом.

Кто-то упомянул блог Эллиота Расти Гарольда о состоянии баз данных XML, будьте осторожны, примерно в 2007 году. Эй, разве это не было, если бы существовала какая-либо база данных NoSQL?; -)

Взгляните на Kimbro Staken старый, но все же соответствующий обзор (повернулся в технический документ Oracle), это хорошо, но также датировано. "Используйте базовую базу данных XML для ваших данных XML: решение, когда собственная база данных XML на основе XQuery лучше, чем база данных SQL"

Реальная власть на протяжении многих лет была Рон Буррет. У него есть что сказать по этому поводу.

MongoDB и CouchDB находятся в другом сегменте рынка. Они распределяют, разделяют, в конечном счете, совместимые с BASE-управлением (не ACID) данные, а некоторые считают, что они делают это очень хорошо. Я думаю, что они молоды, жюри все еще не работает. Они готовы к хорошему старту, и я надеюсь, что они продолжат расти, хранение данных - это трудная вещь, чтобы получить право, и один размер не подходит для всех проблем/потребностей. Распространенная история BDB XML построена на одномастном, многореплицированном, всегда согласованном (если хотите) логарифмической репликации и алгоритмах выбора на основе PAXOS, когда мастер терпит неудачу. Мы не разделяем данные, каждый node содержит одни и те же данные (вся база данных). Мы не разрешаем писать везде, только у мастера. Мы поддерживаем больше, чем TCP/IP для репликации (черт возьми, вы можете использовать обычную аппаратную шину на свой сервер, если хотите). Мы создали наш продукт HA для решения задач масштабируемости, доступности системы и отказоустойчивости. Распределенные системы NoSQL предназначены для записи в любом месте многораздельного управления данными. Выбор хорош, не так ли?:)

XML как схема данных, а XQuery как язык для доступа к XML-контенту и управления им был и остается очень успешным решением. Возможно, не так много на более открытых сайтах, использующих решения NoSQL в наши дни (это прекрасно и интересно для меня), но в большей степени это касается управления документами, финансов, геномики, биоинформатики, обмена данными, обмена сообщениями и т.д. XML может быть нишевой базой данных по сравнению с SQL/реляционными продуктами, но он, безусловно, намного более успешный, чем объектные базы данных или любой новый ребенок в решении для базы данных NoSQL. Каждое решение для хранения данных имеет свое место, XML будет продолжать делать полезные вещи далеко в будущем.

В конце дня я надеюсь, что вы выбрали базу данных в соответствии с вашими потребностями.

Ответ 2

Единственное, что нужно иметь в виду, это лицензия Berkeley DB. Если вы не собираетесь открывать исходный код своего проекта, вам нужно будет купить лицензию у Oracle, поэтому я подозреваю, что вы больше этого не видите. В остальном все базы данных Berkeley DB отличные. Я склонен использовать их для чего-либо, что я не собираюсь распространять (в проектах дома).

Ответ 3

Из моего опыта Berkeley DB XML имеет много обещаний и много подходящих вариантов использования. Но вы должны быть осторожны, чтобы не ожидать, что он будет работать во всех случаях. Обратите внимание, что последний выпуск был Berkeley DB XML 2.5.16 22 декабря 2009 года.

Технология, на которой она основана, Berkeley DB, очень надежна и ослепительно быстра, если вы правильно ее настроите для своего прецедента. Есть много деталей, чтобы получить право (например, включить транзакции, вести журнал, понять все флаги, необходимые для работы MVCC). Я считаю, что большинство людей имеют проблемы из-за этой сложности.

Однако я столкнулся с несколькими недостатками. Самое большое, что планировщик запросов не будет использовать индексы при сортировке. Это означает, что вы не можете сделать довольно общий шаблон доступа к данным, который эквивалентен:

SELECT * FROM table ORDER BY time DESC LIMIT 100;

Если вы сделаете это, Berkeley DB проверит все значения времени на диске перед заказом, что замедлит работу, если вы перейдете за пределы нескольких десятков тысяч узлов. Кто-то еще сообщил об этом здесь:

https://forums.oracle.com/forums/message.jspa?messageID=9754987#9754987

Вы также можете перечислять любые индексы напрямую, но тогда вы теряете возможность делать специальные запросы.

Также сообщается на форумах какое-то странное поведение, связанное с типами индексов и производительностью:

https://forums.oracle.com/forums/message.jspa?messageID=9753022#9753022

Итак, хотя доступ на основе ключей быстрый и надежный, будьте осторожны с его незрелым планировщиком запросов.

Ответ 4

В зависимости от ваших потребностей. Я не буду рекомендовать один собственный xml-DB поверх другого, но могу сказать, что издательская индустрия является примером целого сектора, который в значительной степени отказался от реляционных баз данных и переместил большое время на собственные базы данных xml для обработки контента своих публикаций, Наиболее заметным (и самым дорогим) является тот, который принадлежит MarkLogic. eXistDB - это источник с открытым исходным кодом, который, кажется, получает некоторую тягу.

Вот отличная статья на эту тему одного из выдающихся гуру-гуру Эллиота Расти Гарольда. http://cafe.elharo.com/xml/the-state-of-native-xml-databases/

Ответ 5

Лучшие [*] XML-репозитории - это те, что построены с нуля для поддержки XML, например MarkLogic или eXist.

Однако механизм хранения для BDB-XML - почтенный механизм Berkeley DB, один из самых распространенных встроенных механизмов баз данных. Он маленький, быстрый и стабильный.

сам BDB-XML - это, безусловно, продукт. Раньше это было продано под именем Sleepycat, если это поможет вам найти ссылки. Это комбинация механизма хранения BDB с движком XQilla XQuery.

Также вы можете найти дополнительную информацию для поиска XQilla. Это довольно мощный движок и все еще открытый источник.

[*] "лучше", конечно, будучи субъективным термином.

Ответ 6

Итак, в заключение, это все причины, по которым BDB-XML не кажется широко используемым:

  • Только для встроенных локальных баз данных (хотя существуют положения для выполнения репликации master-slave)
  • Не бесплатно для коммерческого использования.
  • Многие конкурирующие продукты, которые были построены с нуля для поддержки XML

Кажется, нет никаких причин не использовать его, но также не так много, чтобы выделиться из соревнования. Кроме того, недавнее соревнование имеет больше "Ох, блестящий!" апелляции и сами базы данных XML по-прежнему являются нишевым рынком.

Ответ 7

Я был за последнее время и наткнулся на Sedna XML dbms.

Ответ 8

"Есть ли в этом что-то принципиально?"

Да. Это XML.

И, к сожалению, это означает, что те, кто его изобрел, не потрудились взглянуть на силу уже существующих концепций и технологий, как, например, реляционная алгебра и реляционное исчисление.

Делать лучше, чем это не тривиальная задача (и это вежливо), и все, кто пробовал до сих пор, потерпели неудачу.

Это должно вам что-то сказать.