Что такое Py2neo: Python вместо Cypher в приложениях с Neo4j

Neo4j Cypher Python Py2neo, обучение Neo4j курсы примеры, Neo4j Python для аналитиков данных примеры курсы обучение, графовая аналитика больших данных примеры курсы обучение, Data Science Neo4j обучение курс, анализ графов с Neo4j, Neo4j Cypher Merge примеры курсы обучение, обучение большим данным, Data Analyst Neo4j курсы примеры обучение, Школа Больших Данных Учебный Центр Коммерсант

В рамках продвижения нашего нового курса по графовой для аналитики больших данных аналитике больших данных, сегодня познакомимся с клиентской Python-библиотекой Neo4j под названием Py2neo, которая позволяет отказаться от языка запросов Cypher. Читайте далее, что это такое, как работает и где пригодится.

Python вместо Cypher в приложениях для Neo4j

Манипуляции с данными в графовой базе Neo4j выполняются средствами SQL-подобного языка запросов Cypher. Он оптимизирован для графов, определяет и использует отношения данных, исследуя взаимосвязи во всех направлениях, чтобы обнаружить ранее невидимые отношения и кластеры. Однако, Python дает большую гибкость в работе с данными. Поэтому многие Data Scientist’ы предпочитают его для различных программ, включая автоматизацию процесса создания узлов и связей. В этом случае отлично пригодится библиотека Py2neo – Python-пакет, который работает с Neo4j. Его можно установить его с помощью менеджера пакетов pip через всем известную команду pip install py2neo в командной строке. Далее можно открывать любимый Python-редактор и запускать граф в Neo4j.

Итак, клиентская Python-библиотека Py2neo включает набор инструментов для работы с Neo4j из приложений Python и из командной строки. Библиотека поддерживает как Bolt, так и HTTP и предоставляет высокоуровневый API, OGM, инструменты администрирования, интерактивную консоль, лексический шифратор Cypher для Pygments и многие другие функциональные возможности, которые пригодятся для анализа графов. Напомним, Bolt — это прикладной протокол для выполнения запросов к базе данных с помощью языка запросов Cypher через обычное TCP-соединение или WebSocket. Bolt наследует свою базовую систему типов от PackStream, по которой обычно передаются его сообщения. Каждая версия Bolt предоставляет ряд расширений системы типов через механизм расширения типов PackStream – двоичный формат представления для обмена данными с широким набором типов, который обеспечивает уровень синтаксиса для протокола обмена сообщениями Bolt.

Начиная с версии 2021.1, Py2neo содержит полную поддержку маршрутизации, представленную кластером Neo4j, что можно включить с помощью URI neo4j://… или путем передачи параметра routing=True в конструктор Graph. Вообще Py2neo состоит из нескольких отдельных областей API, ядром которых является Graph API. Класс Graph представляет базу данных графа, предоставляемую службой Neo4j, работающей на одном экземпляре или кластере, и которая обеспечивает доступ к большей части наиболее часто используемых функций Py2neo. Для удобства все основные функции и классы экспортируются из корневого пространства имен Py2neo, включая все функции подключения и управления базами данных, а также сопоставление сущностей и основные ошибки. Объекты Node и Relationship являются ключевыми в этой библиотеке, расширяя класс Subgraph и предоставляя исчерпывающий набор типов данных и операций структуры графа.

Что внутри библиотеки Py2neo и как с ней работать

Импортировав Py2neo в свой Python-скрипт, можно подключиться к графу в Neo4j, создав объект Graph:

from py2neo import Graph
graph = Graph("bolt://myserver:7687", auth=("neo4j", "psswrd"))

Как показывает этот пример кода, помимо URI подключения нужно передать настройки, принимаемые конструктором Graph: учетные данные (пользователь, пароль), хост и порт. Также можно передать логический флаг безопасности, указать нужную схему данных и user_agent. Py2neo предоставляет несколько логических уровней API поверх официального драйвера Python. API-интерфейс Cypher самого низкого уровня предоставляет средства выполнения Cypher, очень похожие на те, что есть в драйвере, но с некоторыми дополнительными функциями, например, приведение к объекту таблицы:

graph.run("MATCH (a:Person)
RETURN a.name, a.born LIMIT 3").to_table()

Следующий уровень, Entity API, оборачивает Cypher в удобные функции, которые обеспечивают полный набор CRUD-операций над объектами Node и Relationship. Это может сделать код приложения более понятным. Например, NodeMatcher создает и выполняет оператор Cypher MATCH и возвращает объекты Node:

 [(a["name"], a["born"])
 for a in graph.nodes.match("Person").limit(3)]

Другие методы Entity API включают Graph.create(), Graph.delete() и Graph.merge(), а также аналогичные варианты транзакций. При этом Graph.merge()полностью переписан для внутреннего использования UNWIND-предложения Cypher, чтобы устранить некоторые предыдущие проблемы с производительностью для метода при масштабном использовании. О том, как работает MERGE-запрос в Neo4j, мы писали здесь.

Наконец, на самом верхнем уровне в Py2neo находится API OGM, который позволяет создавать объекты GraphObject, которые заключают узлы в собственные классы и предоставляют атрибуты для моделирования их отношений и свойств. Сопоставитель узлов NodeMatcher предлагает DSL, который можно использовать для поиска узлов, соответствующих определенному набору критериев. Обычно, один узел можно идентифицировать, передав определенную пару ключ-значение метки и свойства. Однако, допускается любое количество меток и любое условие, поддерживаемое предложением WHERE в запросе Cypher.

Узнайте, как применять эти и другие средства анализа графов для аналитики больших данных в реальных проектах, вы узнаете на специализированных курсах в нашем лицензированном учебном центре обучения и повышения квалификации для разработчиков, менеджеров, архитекторов, инженеров, администраторов, Data Scientist’ов и аналитиков Big Data в Москве:

Я даю свое согласие на обработку персональных данных и соглашаюсь с политикой конфиденциальности.

Источники

  1. https://medium.com/smith-hcv/graph-databases-neo4j-and-py2neo-for-the-absolute-beginner-8989498ebe43
  2. https://py2neo.org/2021.1/
  3. https://neo4j.com/developer-blog/py2neo-v4-the-next-generation/
Поиск по сайту