В последние дни компании все чаще используют приложения графовых баз данных в соответствующих областях. Графические базы данных, такие как Amazon Neptune, Janusgraph, Neo4j, IBM Graph, Anzograph и т. Д., Подходят для нескольких типов приложений, включающих наборы данных с высокой степенью связи, таких как предоставление рекомендаций на основе социального графа, выполнение обнаружения мошенничества и предоставление графа знаний. рекомендации по продукту. Именно здесь традиционный SQL объединяет огромный набор данных и становится неэффективным в системе реляционной базы данных.

Концепция графа

Реальные объекты и отношения между объектами могут быть отображены с помощью узлов (то есть вершин) и ребер соответственно.

Я считаю, что, просто взглянув на два изображения выше, вы достаточно сообразительны, чтобы определить, что такое вершины, ребра и свойства. Поэтому я не буду здесь вдаваться в подробности.

Поскольку выяснилось, что Janusgraph представляет собой масштабируемую транзакционную базу данных с открытым исходным кодом, которая поддерживает модель граф свойств, мы можем построить социальный граф, граф знаний, представляющий данные в контексте определенным образом. что машины и люди могут легко понять. Теперь у нас достаточно причин, чтобы начать работу с Jansugraph.

Поговорим о Янусгафе :)

Janusgraph - это распределенная база данных графов с открытым исходным кодом, с подключаемым хранилищем и механизмами индексирования.

Архитектура для JanusGraph

Модульная архитектура Janusgraph поддерживает сторонние адаптеры.

В разделе S torage Backends мы можем подключить Cassandra, Hbase, Bigquery и т. Д. К нашим потребностям. Например, Apache Cassandra обычно используется для случаев в реальном времени, когда требуется масштабируемость и высокая доступность без ущерба для производительности, а Hbase - для аналитики и т. Д. Здесь, в этом руководстве, мы будем настраивать с помощью Cassandra.

В качестве Index-Backend мы будем использовать Lucene. В следующем учебном пособии мы подключим и поиграем с настройкой Elasticsearch, которая требуется для индексирования нескольких свойств, полнотекстового, географического сопоставления, строкового поиска и т. Д.

Возникает следующий вопрос, как мы будем взаимодействовать с графом? Самый простой способ - это Консоль Gremlin. Мы тоже можем подключиться к Python, но сейчас это не наша цель. Обычно подключение Janusgraph к python происходит позже, когда выполняется базовая настройка и разрабатывается приложение на python, которое будет выполнять запросы к Janusgraph.

Считайте Консоль Gremlin инструментом, работающим с любым сервером с поддержкой TinkerPop. Janusgraph - это движок базы данных с поддержкой TinkerPop. Gremlin Console - это интерактивная оболочка, которая дает вам доступ к данным, управляемым сервером Janusgraph, также известным как Gremlin Server .

Настройка JanusGraph

Сначала мы запустим apache Cassandra и Janusgraph на нашей локальной машине. После этого мы будем использовать Gremlin Console для подключения к серверу Janusgraph, работающему на локальном компьютере.

Конфигурация кассандры

Здесь мы перейдем к Cassandra-3.11.0. Скачать по этой ссылке. Распакуйте tar-файл и перейдите в каталог /apache-cassandra-3.11.0/bin . Откройте окно терминала и выполните команду ниже в том же каталоге. Теперь сервер Cassandra будет включен и будет прослушивать порт 9042.

./cassandra -f

Конфигурация янусграфа

Чтобы скачать Janusgraph, вы можете перейти прямо по этой ссылке и взять ее. Загрузите по ссылке и извлеките zip-файл в каталог. Войдите в каталог /janusgraph-0.5.3/ , который состоит из нескольких папок, таких как bin, conf, data, db и т. Д.

Чтобы настроить Cassandra как серверную часть хранилища, а Lucene как серверную часть индекса, нам нужно изменить файл gremlin-server.yam l, который находится внутри /janusgraph-0.5.3/conf/gremlin-server каталог.

Внутри каталога /janusgraph-0.5.3/conf/ вы увидите файлы с расширением .properties, которое в основном используется для настройки серверной части хранилища и индексации. Например, файл janusgraph-cassandra-es.properties, это означает, что Janusgraph предоставляет протокол серверной части хранилища cassandrathrift и elasticsearch (для целей индексации) для использования с cassandra. cassandrathrift - устаревший протокол. Мы будем использовать новый протокол связи Cassandra (на момент написания) cql для работы.

Мы будем работать с файлом конфигурации janusgraph-cql-lucene.properties . К сожалению, этот файл там недоступен. Итак, давайте создадим его и поместим в каталог /janusgraph-0.5.3/conf/ .

janusgraph-cql-lucene.properties

gremlin.graph=org.janusgraph.core.JanusGraphFactory
storage.backend=cql
#The hostname or comma-separated list of hostnames of storage #backend servers. This is only applicable to some storage backends, #such as cassandra and hbase.
storage.hostname=127.0.0.1
#This is the keyspace name where janusgraph will store the tables #and if this keyspace does not exist janugraph will create it
storage.cql.keyspace=janusgraph
cache.db-cache = true
cache.db-cache-clean-wait = 20
cache.db-cache-time = 180000
cache.db-cache-size = 0.5
index.search.backend=lucene
index.search.directory=../db/searchindex

Сервер Janusgraph не использует файл janusgraph-cql-lucene.properties напрямую, на самом деле он будет использовать файл конфигурации gremlin-server.yaml для укажите на добавленный файл janusgraph-cql-lucene.properties. Для этого нам нужно будет отредактировать файл gremlin-server.yaml .

Отредактированный раздел gremlin-server.yaml

graphs: {
#graph: conf/janusgraph-inmemory.properties
graph: conf/janusgraph-cql-lucene.properties
}

Теперь нам нужно запустить другое окно терминала (мы уже сохранили сервер Cassandra, используя одно окно терминала) и выполнить следующую команду.

./bin/gremlin-server.sh

Теперь Janusgraph будет работать и прослушивать порт 8182. Теперь у нас есть серверы Cassandra и Janusgraph, работающие на одной машине.

Подключитесь к серверу JanusGraph

В новом окне терминала запустите Gremlin Console.

./bin/gremlin.sh

Он откроет консоль gremlin, и теперь мы подключим ее к Gremlin Server, выполнив следующие команды на той же консоли.

:remote connect tinkerpop.server conf/remote.yaml session
:remote console

Чтобы проверить, все ли в порядке, напишите «график» в Gremlin Console и нажмите Enter, появится следующая информация.

==>standardjanusgraph[cql:[127.0.0.1]]

Это означает, что в Graph используется cql в качестве протокола внутреннего хранилища и сервер Cassandra, работающий на 127.0.0.1.

Немного изучите Янусграф

Давайте попробуем создать вершину, если Янусграф может взаимодействовать с Кассандрой, потому что, когда вы создаете вершину, Янусграф сохранит вершину в таблице Кассандры. Выполните следующую команду в консоли Gremlin.

g.addV(‘User’).property(‘name’,’subhendu’)

При выполнении команды узел был сохранен в базе данных Cassandra. Чтобы посмотреть, как Cassandra хранит данные, откройте другое окно терминала, войдите в /apache-cassandra-3.11.0/bin и выполните в терминале следующую команду.

./cqlsh

Откроется клиент Cassandra.

PS. Если отображается ошибка, убедитесь, что вы установили python, потому что cqlsh - это инструмент для Python.

Теперь выполните следующую команду в открытой клиентской консоли, чтобы увидеть доступные пространства клавиш.

DESCRIBE KEYSPACES;

Если до сих пор все идет хорошо, вы также найдете одно из пространств ключей с именем janusgraph. Давайте использовать это пространство ключей.

USE janusgraph;
DESCRIBE TABLES;

Тогда мы сможем увидеть все таблицы, созданные в пространстве ключей janusgraph. мы видим одну из самых важных таблиц, называемую Edgetore, где хранятся информация о графах, вершинах и ребрах. Если вы выполните команду ниже, вы получите представление о том, как Cassandra хранит данные. Хотя это относится к сфере компетенции Кассандры.

SELECT * FROM edgestore;

PS - Мы только что использовали бэкэнд индекса Lucene, но еще не закончили с индексированием. Как только данные будут загружены в график, мы выполним индексацию

Заключение

Изначально я планировал показать практики загрузки пакетных данных только в этом руководстве, но он стал настолько длинным, что, думаю, мне придется добавить больше статей, чтобы включить такие темы, как практика загрузки пакетных данных, elasticsearch, настроенный как серверная часть индексации, и использование ConfiguredGraphFactory и др.

Ах, да! Вы зашли так далеко, Престижность вам😎!
Если вы найдете эту статью полезной, нажмите кнопку хлопка и не стесняйтесь наверстать упущенное, если вам понадобится помощь по этой теме.