В чем разница между базой данных Titan и Neo4j?
Я работал над реляционной базой данных; но теперь хочу узнать о графе базы данных. Я узнал, что эти два являются графической базой данных. В чем разница между этими двумя базами данных. Что мы должны предпочитать среди них?
3 ответа
Один из подходов состоит в том, чтобы просто попытаться выбрать одну базу данных над другой. Например, вы можете быстро поискать, чтобы найти, что Titan был разветвлен в JanusGraph, где он более активно поддерживается. В своем исследовании вы можете обнаружить, что существуют и другие графические базы данных с открытым исходным кодом, такие как OrientDb, ChronoGraph или Sqlg, а также коммерческие альтернативы, такие как Microsoft CosmosDb, DSE Graph или IBM Graph. Как вы решаете сейчас?
Существует графическая структура, которая связывает воедино все эти графы, включая Neo4j/Titan (и больше, чем перечисленные здесь): Apache TinkerPop. TinkerPop предоставляет абстракцию для различных графовых баз данных и графических процессоров, позволяя использовать один и тот же код с разными настраиваемыми бэкэндами. Этот шаблон очень похож на тот, который вы найдете в SQL с JDBC, что помогает сделать вашего поставщика кода независимым.
Вы можете попробовать все различные поддерживаемые графовые базы данных, прежде чем сделать выбор, и вы можете довольно быстро выполнить этот тип прототипирования / тестирования с помощью консоли Gremlin. Вы сможете сделать самосознанный выбор относительно того, что является лучшим способом для вашего проекта.
Когда я заканчиваю эту статью, мне приходит в голову, что я не ответил прямо на ваш вопрос. Если вы только начинаете и просто заинтересованы в изучении графовых баз данных, то я, вероятно, не рекомендую начинать с Titan/JanusGraph, так как для начала требуется немного настройки (схемы, выбор бэкенда и т. Д.). Начните с TinkerGraph или Neo4j, используя консоль Gremlin, чтобы опробовать некоторые простые обходы графиков и перейдите оттуда.
ПервоначальноTitan был поддержан Aurelius, который был куплен DataStax в 2015 году. Этот шаг был разработан, чтобы дать DataStax толчок в мир Graph DB, поскольку теперь они предлагают свой собственный корпоративный продукт "DSE Graph". С тех пор Титан был раздвоен (как уже упоминалось) в JanusGraph.
Приятной особенностью Titan/Janus (IMO) является то, что он "подключается" к другим существующим серверным и поисковым технологиям. Так что он будет "хорошо играть" с такими вещами, как Cassandra, HBase, Hadoop, Solr и ElasticSearch.
Недостаток в том, что поддержка сообщества жесткая. Проект Titan был фактически убит, и Янус получил колоссальные 0,23 на DBEngines. Это делает его 16-м по популярности графом DB (231-е место в целом), что довольно мало.
Neo4j поддерживается Neo Technology и считается лидером в сообществе Graph DB (оценка 38,52 сейчас, 1-й график DB и 21-й в целом). Это открытый исходный код, но контролируется Neo Technologies, поэтому они могут определять разницу в наборе функций между открытым исходным кодом и предприятием.
Приятной особенностью Neo4j является то, что у них есть множество учебных пособий и учебных пособий, встроенных прямо в браузер Neo4j, который представляет собой приятный и удобный веб-интерфейс. Их документация первоклассна, проста для чтения и поиска, и у них есть довольно хорошие последователи здесь, на Переполнении стека.
Скриншот браузера Neo4j:
Недостаток Neo4j заключается в том, что некоторые функции (например, кластеризация) доступны только в корпоративной версии. Но если вы работаете в крупной компании, которая не возражает выделять $ для корпоративной лицензии, это может не иметь большого значения.
Последовательность: Titan/Janus является частью толпы "возможной согласованности", в то время как Neo4j стремится быть последовательным (особенно в сценарии причинной кластеризации). Хотя согласованность может быть настроена с помощью конфигурации в обоих случаях, с Titan / Janus, которая может зависеть от вашего выбора подключаемого бэкэнда (например, обычно строго соответствует HBase, хотя в конечном итоге согласуется с Cassandra).
Рекомендация:
Если вы только начинаете изучать графовые базы данных и моделирование, вы не ошибетесь с Neo4j. Просто загрузите / установите версию сообщества, запустите ее и выполните :play movies
как ваша первая команда (учебник, который проведет вас через загрузку, моделирование и запрос отношений фильма).
Если у вас есть некоторый опыт работы с графиком, и вы не возражаете против поиска неисправностей / поиска в Google, чтобы выяснить некоторые вещи (например, как установить максимальный размер кадра для Thrift), то вы, вероятно, могли бы сделать некоторые действительно крутые вещи с Titan.
Попробуйте каждый из них, и посмотрите, какой из них работает для вас.
Существует гораздо больше, чем две графовые базы данных - есть десятки. При этом есть две с реальной долей рынка: Neo4j и Titan/JanusGraph. Но есть десятки других графовых данных, каждая из которых имеет свои сильные стороны для различных областей применения. При этом я бы не стал копаться во всех нишевых игроках, чтобы начать с изучения основной идеи графовых баз данных с помощью одного из двух ведущих игроков.
Neo4j является самым зрелым, с наиболее хорошо упакованной установкой и документацией, тоннами справочного кода и поддержкой от широкого круга партнеров.
Следующим по популярности является Titan / JanusGraph, так как он бесплатный / с открытым исходным кодом и имеет очень сильную поддержку (например, IBM, Google, Hortonworks, AWS, ...). Есть недавняя сложность в том, что лидеры проекта Titan были приобретены, заморозив проект Titan. Но сообщество раздвоило проект в JanusGraph. Таким образом, хотя JanusGraph - это новый проект, это в буквальном смысле тот же код Titan с еще более широкой отраслевой поддержкой, чем у Titan.
С этим связан язык, используемый для работы с графиками. Neo4j использует свой проприетарный язык Cypher, в то время как почти все остальные используют Gremlin и набор инструментов с открытым исходным кодом TinkerPop (который является частью набора проектов с открытым исходным кодом Apache). Почти все графовые базы данных, включая Neo4j, поддерживают Gremlin и TinkerPop. Так, например, вы можете использовать Cypher или Gremlin для запроса Neo4j, хотя Neo (и некоторые другие проприетарные поставщики баз данных графов), так сказать, поддерживают Gremlin как гражданина второго сорта. Например, вы можете подключиться к Neo с помощью Gremlin из (внешней) консоли Gremlin, но вы не можете использовать Gremlin в (очень хорошей) консоли Neo4j.
Обратите внимание, что есть много графических баз данных, которые поддерживают Gremlin, кроме Titan/JanusGraph. Одним из новых участников, который очень интересен, является Microsoft Azure Cosmos DB, которая является базой данных управляемых графов, которая "дешева и проста", если вы уже используете Azure. И есть несколько поставщиков, которые предоставляют управляемый JanusGraph.
Для личного обучения я бы сказал, что Neo4j проще всего настроить и изучить - вы загружаете и запускаете его и открываете веб-браузер на их веб-консоли, что занимает всего несколько минут. При этом, если вы чувствуете себя комфортно в командной строке, для установки и запуска JanusGraph потребовалось всего полчаса, так что это не так уж сложно.
Для изучения концепций Neo4j отлично подходит. Язык запросов Neo4j, Cypher, и язык запросов JanusGraph, Gremlin, семантически идентичны, просто пишутся по-разному, поэтому вы в любом случае изучите концепции.
Для построения реальной системы любой из них мог бы работать (и есть много успешных после обоих подходов).
Что бы вы ни выбрали, вам нужно подумать о том, хотите ли вы быть стратегически привязанными к одному поставщику (Neo4j) или в более широком сообществе, основанном на стандартах. Существует уровень комфорта в выборе лидера рынка с самым зрелым продуктом - Neo4j. И есть уровень комфорта при выборе открытых стандартов с сильной отраслевой поддержкой - JanusGraph. Так что IMO нет "неправильного" ответа - люди, использующие любой из них, счастливы и успешны. Но так как вы должны выбирать, вам нужно подумать о том, что вам удобнее в долгосрочной перспективе.
Neo4j использует собственную графическую технологию.
- Технология нативных графов обеспечивает эффективное хранение данных за счет записи узлов и отношений, близких друг к другу.
- Оптимизирует граф БД.
- Благодаря встроенной технологии графов обработка становится быстрее, так как в ней используется безиндексная корректировка. Это означает, что каждый узел напрямую ссылается на свои соседние узлы.
Titan (теперь JanusGraph) использует технологию неродных графов.
- В non-native мы используем разные серверные части хранилища, такие как Cassandra, HBase.
- С неродной обработкой становится медленнее по сравнению с нативной, потому что база данных использует много типов индексов для связывания узлов вместе.