Какие факторы следует учитывать при выборе мультимодельной СУБД? (OrientDB против ArangoDB)

Я хочу окунуться в мир мультимодальных СУБД, у меня нет конкретных вариантов использования, я просто хочу начать учиться.

Я обнаружил, что есть два наиболее заметных из них: OrientDB и ArangoDB, но не смог найти никакого значимого сравнения, без мнения между ними. Может ли кто-нибудь пролить свет на разницу в функциях между ними и какие-либо предостережения при использовании одного над другим? Если я выучу один, смогу ли я легко перейти на другой?

(Я также отметил FoundationDB, но это частная собственность, и я, вероятно, не буду ее рассматривать)

Этот вопрос касается общего сравнения между OrientDB и ArangoDB для тех, кто хочет узнать о мультимодельных СУБД, а не самоуверенных ответьте, что лучше.


person dayuloli    schedule 17.02.2015    source источник
comment
Я один из разработчиков ArangoDB, поэтому не могу давать объективных ответов. Исключение составило последнее о переходе. К сожалению, в мире NoSQL нет такого общего языка запросов, как SQL. Gremlin — это шаг к общему QL для баз данных Graph, но, ИМХО, остается много открытых вопросов. Когда Datastax купит Titan, я не знаю, что будет с Tinkerpop3. Поэтому вам нужно будет изучить совершенно другой язык запросов для истинной мультимодели. Обход выполняется на Java (Orient) или JavaScript (ArangoDB) — опять же на другом языке.   -  person fceller    schedule 17.02.2015
comment
Я основатель OrientDB (поэтому это необъективно) и могу сказать, что OrientDB — это мультимодельная СУБД на уровне движка, в то время как ArangoDB и FoundationDB просто реализовали слои поверх нее. Это все равно, что использовать Hibernate поверх Oracle, думая, что у вас есть СУБД. Мой 0,02.   -  person Lvca    schedule 17.02.2015
comment
Я другой основатель ArangoDB и поэтому тоже предвзят. Лука, боюсь, вы ошиблись: ArangoDB с самого начала проектировалась и создавалась как мультимодельная БД. Все три модели данных вместе с полной поддержкой API и языка запросов реализованы в механизме БД как первоклассные граждане и с высокопроизводительным кодом C++. Неправда, что графики и ключ/значение реализованы только как слои поверх хранилища документов.   -  person weinberger    schedule 18.02.2015
comment
Привет, Вайнбергер, GraphDB определяется как смежность без индекса. ArangoDB использует хэш-индекс для перекрестных отношений, поэтому, извините, он не свободен от индекса. Это скорее JOIN. Это похоже на обход отношений с РСУБД.   -  person Lvca    schedule 19.02.2015
comment
Кто придумал это определение? Это больше маркетинг, чем что-либо еще. Когда мы выполняем обход, это не JOIN. То что вы написали это неправда. j.mp/1EOt8gk   -  person weinberger    schedule 25.02.2015


Ответы (1)


Отказ от ответственности: я больше не рекомендую OrientDB, см. мои комментарии ниже.


Я могу высказать чуть менее предвзятое мнение, попользовавшись и ArangoDB, и OrientDB. Это все еще предвзято, поскольку я являюсь автором драйвера OrientDB для node.js - oriento, но у меня нет личный интерес к компании или продукту, я просто обязательно использовал подробнее OrientDB.

ArangoDB и OrientDB нацелены на один и тот же рынок и имеют много общего:

  1. Оба мультимодельные, вы можете использовать их для хранения документов, графиков и простых ключей/значений.
  2. Оба имеют поддержку Gremlin, но это решительно второй класс по сравнению с их собственными предпочитаемыми языками запросов.
  3. Оба поддерживают серверные «хранимые процедуры» в JavaScript. В обеих системах это происходит через немного менее идиоматический JavaScript API, хотя ArangoDB намного лучше. Это будет исправлено в следующей версии OrientDB.
  4. Оба предлагают REST API, оба предназначены для использования в качестве «API-сервера» через обработчики запросов JavaScript. Это намного практичнее в ArangoDB, чем в OrientDB.
  5. Оба распространяются под разрешительной лицензией.
  6. Оба являются ACID и имеют поддержку транзакций, но в обоих случаях транзакции являются операциями на стороне сервера — они больше похожи на атомарные пакеты команд, чем на виды транзакций, к которым вы могли бы привыкнуть в традиционной СУБД.

Однако отличий очень много:

  1. В ArangoDB нет понятия «ссылки», которые являются очень полезной функцией OrientDB. Они допускают однонаправленные отношения (точно так же, как гиперссылки в Интернете) без накладных расходов на ребра.
  2. ArangoDB is written in C++ (and JavaScript), whereas OrientDB is written in Java. Both have their advantages:
    • Being written in C++ means ArangoDB uses V8, the same high performance JavaScript engine that powers node.js and Google Chrome. Whereas being written in Java means OrientDB uses Nashorn, which is still fast but not the fastest. This means that ArangoDB can offer a greater level of compatibility with the node.js ecosystem compared to OrientDB.
    • Написание на Java означает, что OrientDB работает на большем количестве платформ, включая, например. Raspberry Pi. Это также означает, что OrientDB может использовать множество других технологий, написанных на Java, например. OrientDB имеет превосходную поддержку полнотекстового/геопространственного поиска через Lucene, которая недоступна для ArangoDB.
  3. OrientDB использует диалект SQL в качестве языка запросов, тогда как ArangoDB использует свой собственный язык, называемый AQL. Теоретически AQL лучше, потому что он разработан специально для этой проблемы, хотя на практике он очень похож на SQL, но с другими ключевыми словами, и это еще один язык для изучения, в то время как реализация OrientDB кажется намного более удобной, если вы привыкли к SQL . SQL является декларативным, тогда как AQL является императивным — здесь YMMV.
  4. ArangoDB - это база данных "в основном в памяти", она работает лучше всего, когда большая часть ваших данных помещается в ОЗУ. Это может или не может быть подходящим для ваших нужд. OrientDB не имеет этого ограничения (но также любит оперативную память).
  5. OrientDB полностью объектно-ориентирована — она поддерживает классы со свойствами и наследованием. Это исключительно полезно, потому что это означает, что ваша структура базы данных может отображаться 1-1 в структуру вашего приложения, без необходимости использовать уродливые хаки, такие как ActiveRecord. ArangoDB поддерживает что-то довольно похожее через модели в Foxx, но это больше похоже на дополнительный аддон, чем на основную часть работы базы данных.
  6. ArangoDB предлагает большую гибкость через Foxx, но она не была разработана людьми с сильным серверным JS. фоны и часто изобретает велосипед. Вместо того чтобы использовать для обработки запросов такие фреймворки, как express, они создали собственный клон Sinatra, что, конечно, делает его почти таким же, как экспресс (экспресс также является клоном Sinatra), но немного отличается, и означает, что ни промежуточное ПО, ни плагины можно использовать повторно. Точно так же они встраивают V8, но не libuv, что означает, что они не предлагают те же неблокирующие API, что и node.js, и поэтому пользователи не могут быть уверены в том, будет ли там работать данный модуль npm. Это означает, что нетривиальные приложения не могут использовать ArangoDB в качестве замены серверной части, что сводит на нет большую часть потенциальной полезности Foxx.
  7. OrientDB поддерживает первоклассные индексы уровня свойств и уровня базы данных. Вы можете запрашивать и вставлять в определенные индексы напрямую для максимальной эффективности. Я не видел поддержки этого в ArangoDB.
  8. OrientDB — более устоявшийся вариант со многими высокопоставленными пользователями. ArangoDB новее, менее известна, но быстро развивается.
  9. Документация ArangoDB превосходна, и они предлагают официальные драйверы для многих различных языков программирования. Документация OrientDB не так хороша, и, хотя есть драйверы для большинства платформ, они поддерживаются сообществом и поэтому не всегда обновляются передовыми функциями OrientDB.
  10. Если вы используете Java (или мост Java), вы можете встроить OrientDB непосредственно в свое приложение в виде библиотеки. Этот вариант использования невозможен в ArangoDB.
  11. OrientDB имеет концепцию пользователей и ролей, а также безопасность на уровне записи. Это может быть убийственной функцией для вас, это для меня. Он также поддерживает аутентификацию на основе токенов, поэтому OrientDB можно использовать в качестве основного средства авторизации/аутентификации пользователей. OrientDB также имеет интеграцию с LDAP. Напротив, ArangoDB поддерживает только очень простой вариант аутентификации.

Обе системы имеют свои преимущества, поэтому выбор между ними зависит от вашей ситуации:

  • Если вы создаете небольшое приложение и являетесь веб-разработчиком, оптимизирующим производительность труда разработчиков, возможно, вам будет проще быстро приступить к работе с ArangoDB.

  • Если вы создаете более крупное приложение, которое потенциально может хранить много гигабайт или терабайт данных, или иметь много тысяч одновременных пользователей, или имеете «корпоративные» варианты использования, или вам нужны тонкие элементы управления безопасностью, OrientDB — это то, что вам нужно.

  • Если вы храните RDF или связанные данные с аналогичной структурой, выберите OrientDB.

  • Если вы используете Java, просто выберите OrientDB.

Примечание. Это (мое мнение) состояние дел сегодня, все быстро меняется, и я бы не стал недооценивать безжалостную эффективность потрясающей команды, стоящей за ArangoDB, я просто думаю что это не совсем так, пока :)


Чарльз Пик (codemix.com)

person codemix    schedule 19.02.2015
comment
К сожалению, я не могу удалить этот ответ, но я хотел бы отозвать свою рекомендацию использовать OrientDB. С момента написания этого ответа мы столкнулись с некоторыми действительно серьезными фундаментальными проблемами с OrientDB, которые вынудили нас перейти на другую систему. - person codemix; 04.06.2015
comment
Почему, большое заявление, чтобы бросить в конце после всего этого. Нам нужно больше информации - person Samuel Goldenbaum; 12.06.2015
comment
Я не могу дать много подробностей из-за NDA, но мы столкнулись с длинной чередой проблем, которые были прямым результатом того, как разрабатывалась OrientDB, а не концептуально. Проще говоря, она не разработана в соответствии с высокими стандартами, которые вы ожидаете от поставщика баз данных, и, хотя она заявляет о множестве функций, многие из этих функций недоработаны или просто не реализованы. не работает. Мы потратили много времени и усилий, работая над OrientDB для наших клиентов, и в итоге это их всех разочаровало. - person codemix; 12.06.2015
comment
@codemix Вы не можете удалить, но вы можете отредактировать и добавить какое-то заявление об отказе от ответственности вверху, ваш комментарий легко не заметить, но то, что вы написали, важно для людей, которые собираются принимать некоторые решения о выборе поставщика базы данных. - person Wirone; 01.12.2015
comment
Этому посту чуть больше года, и (не говоря уже о том, что вы изменили свою точку зрения), поскольку оба эти продукта быстро развиваются, я полагаю, что ситуация немного изменилась по сравнению с тем, что было, когда это превосходное резюме было впервые написано. Можете ли вы или, возможно, кто-либо еще отредактировать сообщение и добавить более актуальную информацию? Устранил ли ArangoDB какой-либо из выявленных недостатков (например, улучшенную аутентификацию, лучшую производительность, когда данные не находятся в ОЗУ, или асинхронный API)? Имеет OrientDB, будь то с точки зрения возможностей, стабильности или подхода к разработке? - person eggyal; 03.02.2016