Neo4j APOC библиотека
Теги: data-bases graphs machine-learning
APOC расшифровывается как « Удивительные процедуры на шифровании » . Перед выпуском APOC разработчикам приходилось писать свои собственные процедуры и функции для общих функций, которые Cypher или база данных Neo4j еще не реализовали. Каждый разработчик мог бы написать свою версию этих функций, что привело бы к большому количеству дублирования. APOC - это стандартная служебная библиотека для общих процедур и функций. APOC включает более 450 стандартных процедур, предоставляющих функциональные возможности для утилит, преобразований, обновления графов и многого другого. Они хорошо поддерживаются и их очень легко запускать как отдельные функции или включать в запросы Cypher.
Начиная с Neo4j 4.1.1, доступны две версии библиотеки APOC:
- процедуры и функции APOC Core, которые не имеют внешних зависимостей и не требуют настройки. Это также доступно в Neo4j AuraDB
- APOC Full содержит все, что есть в ядре APOC, а также дополнительные процедуры и функции, которые доступны как в Neo4j Sandbox, Docker-образе и Neo4j Desktop, так и при селф-хостед размещении.
Пример использования:
WITH 'https://raw.githubusercontent.com/neo4j-contrib/neo4j-apoc-procedures/4.3/core/src/test/resources/person.json' AS url
CALL apoc.load.json(url) YIELD value as person
MERGE (p:Person {name:person.name})
ON CREATE SET p.age = person.age, p.children = size(person.children)
Процедура call apoc.help('keyword')
позволяет получить справку по доступным в APOC функциям и процедурам. Подробнее.
Список функций
- конфигурация бд
- import
- export
- Database Integration (интеграция с другими BD ElasticSearch,MongoDB, Couchbase, Redis)
- graph updates
- structures (collections of aggregate functions, maps and conversion to types)
- date time functions
- мат-функции
- дополнительные методы запросов к бд (ближайшие ноды, пути, связанности и т.п.)
- сравнение графов
- выполнение cypher запросов
- Virtual Nodes & Relationships (Graph Projections) - необходимо для работы в [neo4j-ml]. Виртуальные узлы и связи не существуют в графе, они возвращаются только по запросу и могут использоваться для представления проекции графа. Способы применения:
- return only a few properties of nodes/rels to the visualization, e.g. if you have huge text properties
- visualize clusters found by graph algorithms
- aggregate information to a higher level of abstraction
- skip intermediate nodes in a longer path
- hide away properties or intermediate nodes/relationships for security reasons
- graph grouping
- visualization of data from other sources (computation, RDBMS, document-dbs, CSV, XML, JSON) as graph without even storing it
- NLP (google, amazon and azure integration)
- фоновое выполнение
- мониторинг БД
- логирование и ворнинги
- несколько не вошедших в другие разделы функций (к примеру для работы с текстом)
- индексы
Тут список процедур, выполняемых со своей собственной транзакцией
Смотри еще: