Является ли Berkeley DB XML жизнеспособной базой данных?
по-видимому, BDB-XML существует, по крайней мере, с 2003 года, но я только недавно наткнулся на него на веб-сайте Oracle: Berkeley DB XML. Вот объявление:
Oracle Berkeley DB XML-это встраиваемая XML-база данных с открытым исходным кодом с доступом на основе XQuery к документам, хранящимся в контейнерах и индексируемым на основе их содержимого. Oracle Berkeley DB XML построен поверх Oracle Berkeley DB и наследует его богатые возможности и атрибуты. Как Oracle Беркли ДБ, он работает в процессе с приложением без необходимости человеческого администрирования. Oracle Berkeley DB XML добавляет анализатор документов, XML-индексатор и движок XQuery поверх Oracle Berkeley DB, чтобы обеспечить быстрый и эффективный поиск данных.
Мне кажется, что лежащие в основе идеи технически обоснованы и, вероятно, более зрелыми, чем новые основанные на документах DBs, такие как CouchDB или MongoDB. Насколько я могу определить, он поддерживает C, C++, Ruby и Perl. Он даже имеет HA-возможности, такие как автоматическая репликация с использованием модели master/slave с автоматическим выбором.
однако я не могу найти никаких проектов, которые его используют. Есть ли что-то фундаментально неправильное в этом? Лицензия слишком обременительна? Это слишком сложно?
Почему он не используется?
8 ответов
Я был менеджером по продуктам Berkeley DB в Oracle. Я работаю над этими базами данных BDB уже более восьми лет, я написал "blurb", который вы скопировали в свой вопрос.
коммерчески мы использованы в (неисчерпывающий список, как раз с верхней части моей головы): - 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, потому что это отличная библиотека XQuery и XML-анализа. Мы-компания баз данных, поэтому часть, которая принимает XML после его анализа и организует его в наши базы данных btree, а также работу по оптимизации запросов, индексированию, статистике и вся тонна другого кода-это то, что сидит под XQilla, но над btree BDB, склеивая их вместе в BDB XML. Не стесняйтесь использовать его, если он решает вашу проблему, это не база данных там вообще.
продукт, построенный с нуля для XML, обычно имеет несколько транзакционных структур данных в своем ядре, которые управляют информацией на диске. Не так много оптимизации можно сделать, чего мы еще не сделали в Berkeley DB и не использовали в Berkeley DB XML. Сказать, что база данных построена с самого начала для управления XML будет значительно лучше, чем BDB XML говорит, что чего-то не хватает в Berkeley DB, я не думаю, что здесь есть оправданный аргумент, но я готов узнать, есть ли у кого-то информация о параллельной транзакционной структуре данных, критичной для эффективного хранения XML, которую BDB еще не реализует.
eXist-это база данных JAVA XML, у нас есть Java JNI API, если вы хотите, и мы обычно отбиваем штаны в производительности, тесты стабильности и масштабируемости.
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 база данных"
реальная власть на протяжении многих лет была Рон Bourrett. Ему есть что сказать по этому поводу.
MongoDB и CouchDB находятся в другом сегменте рынка. Они распределяют, секционируют, в конечном итоге согласовывают управление данными в базовом стиле (не кислотном), и некоторые считают, что они делают это очень хорошо. Я думаю, они молоды, присяжные еще не пришли. Они находятся в хорошем начале, и я надеюсь, что они продолжают расти, хранение данных трудно получить правильно и один размер не подходит для всех проблем/потребностей. Распределенная история BDB XML построена на основе одного мастера, мультиреплики всегда согласованной (если хотите) репликации на основе журнала и алгоритмов выборов на основе PAXOS, когда мастер терпит неудачу. Мы не разделяем данные, каждый узел содержит одни и те же данные (вся база данных). Мы не позволяем писать везде, только у мастера. Мы поддерживаем больше, чем TCP/IP для репликации (черт, вы можете использовать аппаратную шину, настроенную на ваш сервер, если хотите). Мы построили наш продукт HA для того чтобы разрешить считывани-масштабируемость, наличие системы и отказоустойчивость. Распределенные системы NoSQL предназначены для записи в любом месте секционированного управления данными. Выбор хорош, верно? :)
XML как схема данных и XQuery как язык для доступа и управления XML-контентом были и остаются очень успешным решением. Может быть, не так много в более публичных веб-сайтах, использующих решения NoSQL в эти дни (что прекрасно и интересно для меня), но тем более в Управление документами, финансы, геномика, биоинформатика, обмен данными, обмен сообщениями и многое другое. XML может быть нишевой базой данных по сравнению с SQL / реляционными продуктами, но она, безусловно, намного успешнее, чем объектные базы данных или любой новый ребенок в решении block NoSQL database. Каждое решение для хранения данных имеет свое место, XML будет продолжать делать полезные вещи далеко в будущем.
в конце концов, я надеюсь, что вы выбираете базу данных соответствует вашим потребностям.
одна вещь, которую нужно иметь в виду, - это лицензия Berkeley DB. Если вы не собираетесь открывать исходный код своего проекта, вам нужно будет купить лицензию у Oracle, поэтому я подозреваю, что вы не видите больше. В противном случае все базы данных Berkeley DB превосходны. Я склонен использовать их для всего, что я не собираюсь распространять (в домашних проектах).
из моего опыта 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
Итак, в то время как доступ на основе ключа быстрый и надежный, будьте осторожны с его незрелым планировщиком запросов.
зависит от ваших потребностей. Я не буду рекомендовать одну собственную XML-БД над другой, но я могу сказать вам, что издательская индустрия является примером целого сектора, который в значительной степени отказался от реляционных баз данных и переместился в собственные базы данных xml для обработки содержимого своих публикаций. Наиболее заметным (и самым дорогим) является тот, который от MarkLogic. eXistDB-это открытый источник, который, похоже, получает некоторую тягу.
вот отличная статья на эту тему один из выдающихся xml-гуру, Эллиот расти Гарольд. http://cafe.elharo.com/xml/the-state-of-native-xml-databases/
лучшие [*] репозитории XML-это те, которые построены с нуля для поддержки XML, например MarkLogic или eXist.
тем не менее, механизм хранения для BDB-XML является почтенным Berkeley DB engine, одним из самых распространенных встроенных движков баз данных. Он небольшой, быстрый и стабильный.
также вы можете найти более подробную информацию поиск XQilla. Это довольно мощный двигатель, и все еще с открытым исходным кодом.
[*] "лучший", конечно, субъективное понятие.
Итак, в заключение, это все причины, почему BDB-XML не кажется широко используемым:
- разрешает только встроенные локальные базы данных (хотя есть положения для выполнения репликации master-slave)
- не бесплатно для коммерческого использования
- многие конкурирующие продукты, которые были построены с нуля для поддержки XML
кажется, нет никаких причин не использовать его, но также не так много, чтобы он выделялся из соревнование. Кроме того, недавний конкурс имеет больше "о, блестящий!"сами базы данных appeal и XML по-прежнему являются нишевым рынком.
" Есть ли что-то фундаментально неправильное в этом?"
да. Это XML.
и, к сожалению, это означает, что те, кто изобрел его, не потрудились взглянуть на силу уже существующих концепций и технологий, таких как, скажем, реляционная алгебра и реляционное исчисление.
делать лучше, чем те, это не тривиальная задача (и это вежливо), и все, кто пытался до сих пор потерпел неудачу.
Это должно сказать вам что-то.