В последние дни компании все чаще используют приложения графовых баз данных в соответствующих областях. Графические базы данных, такие как 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 и др.
Ах, да! Вы зашли так далеко, Престижность вам😎!
Если вы найдете эту статью полезной, нажмите кнопку хлопка и не стесняйтесь наверстать упущенное, если вам понадобится помощь по этой теме.