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