Какие факторы следует учитывать при выборе МУЛЬТИМОДЕЛЬНОЙ СУБД? (OrientDB против ArangoDB)

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

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

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

этот вопрос задает генерал сравнение между OrientDB и ArangoDB для тех, кто хочет узнать о МНОГОМОДЕЛЬНЫХ СУБД, и не самоуверенный ответ, о котором лучше.

1 ответов


предупреждение: Я бы больше не рекомендовал OrientDB, см. мои комментарии ниже.


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

ArangoDB и OrientDB оба таргетинг на аналогичный рынок и имеет много общего:

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

однако, есть много различий:

  1. ArangoDB не имеет понятия "ссылки", которые являются очень полезной функцией в OrientDB. Они позволяют однонаправленные отношения (так же, как гиперссылка в интернете), без накладных расходов ребер.
  2. ArangoDB написан на C++ (и JavaScript), тогда как OrientDB написан на Java. Оба имеют свои преимущества:
    • будучи написанным на C++ , ArangoDB использует V8, тот же высокопроизводительный JavaScript-движок, который питает узел.js и Google Chrome. В то время как запись на Java означает, что OrientDB использует Nashorn, который по-прежнему быстр, но не самый быстрый. Это означает, что ArangoDB может предложить больший уровень совместимости с узлом.экосистема js по сравнению с 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 не имеет этого ограничения (но также любит RAM).
  5. OrientDB полностью объектно-ориентирован-он поддерживает классы со свойствами и наследованием. Это исключительно полезно, потому что это означает, что ваша структура базы данных может сопоставлять 1-1 со структурой приложения, без необходимости в уродливых взломах, таких как ActiveRecord. ArangoDB поддерживает что-то довольно похожее через модели в Foxx, но это больше похоже на дополнительный аддон, а не на основную часть работы базы данных.
  6. ArangoDB предлагает большую гибкость через Фокс, но он не был разработан людьми с сильным серверным фоном JS и изобретает колесо много времени. Вместо того, чтобы использовать фреймворки, такие как экспресс для обработки их запросов они создали свой собственный клон Синатра, что, конечно, делает его почти таким же, как express (express также является клоном Sinatra), но тонко отличается и означает, что ни один из промежуточного программного обеспечения или плагинов express не может быть повторно использован. Аналогично, они встраивают V8, но не libuv, что означает, что они не предлагают те же неблокирующие API, что и node.js и, следовательно, пользователи не могут быть уверены о том, будет ли там работать данный модуль npm. Это означает, что нетривиальные приложения не могут использовать ArangoDB в качестве замены бэкэнда, что отрицает большую потенциальную полезность Foxx.
  7. OrientDB поддерживает индексы уровня свойств первого класса и уровня базы данных. Вы можете запрашивать и вставлять в определенные индексы напрямую для максимальной эффективности. Я не видел поддержки этому в ArangoDB.
  8. OrientDB более установленный вариант, с много максимум пользователи профиля. ArangoDB новее, менее известных, но быстро растет.
  9. документация ArangoDB превосходна, и они предлагают официальные драйверы для многих различных языков программирования. Документация OrientDB не так хороша, и, хотя для большинства платформ есть драйверы, они работают на уровне сообщества и поэтому не всегда обновляются с функциями OrientDB bleeding edge.
  10. если вы используете Java( или Java bridge), вы можете встроить OrientDB непосредственно в ваше приложение, как библиотека. Этот вариант использования невозможен в ArangoDB.
  11. OrientDB имеет концепцию пользователей и ролей, а также Рекордный Уровень Безопасности. Это может быть убийственной особенностью для вас, это для меня. Он также поддерживает аутентификацию на основе токенов, поэтому можно использовать OrientDB в качестве основного средства авторизации/аутентификации пользователей. OrientDB также имеет интеграцию LDAP. Напротив, arangodb поддерживает только очень простой auth выбор.

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

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

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

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

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

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


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