Графы и базы данных: Neo4jВ ряде прикладных задач приходится работать с данными, которые по своей природе имею вид графа (семантические сети, графы ассоциаций, маршруты движения и т.д.). Использовать реляционную СУБД в качестве хранилища может быть неудобно и неэффективно. В таких случаях можно получить положительный эффект, перейдя на графовую СУБД, например на Neo4j. Neo4j — это NoSQL графовая СУБД с открытым исходным кодом, реализованная на Java и Scala. Разработкой проекта c 2003 года занимается американская компания Neo Technology. Neo4j поставляется в двух редакциях: Community и Enterprise. Исходный код доступен на GitHub. По состоянию на текущий момент Neo4j является самой распространенной графовой СУБД. Neo4j использует собственный формат хранения данных, специально разработанный для хранения информации в виде графов. Такое подход позволяет применить дополнительную оптимизацию и повысить эффективность системы в сравнении с моделированием графов средствами реляционный СУБД. Более того, разработчики системы утверждают, что они провели дополнительную оптимизацию для SSD-накопителей, при этом для обработки графа не требуется его полная загрузка в оперативную память. Система поддерживает транзакции (ACID и соответствует спецификациям JTA, JTS и XA). Для работы с базой данных реализованы библиотеки для многих популярных языков программирования Java, С++, Perl, PHP, Python, Ruby, Go и др., а также есть REST API. Расширить программный интерфейс можно как с помощью серверных плагинов, так и с помощью неуправляемых расширений (unmanaged extensions); плагины могут добавлять новые ресурсы к REST-интерфейсу для конечных пользователей, а расширения позволяют получить полный контроль над программным интерфейсом, и могут содержать произвольный код, поэтому их следует использовать с осторожностью. Если вам приходилось работать с объектной моделью данных или диаграммами связей, то работа с Neo4j вам покажется знакомой. В БД граф состоит из узлов и связей. Каждый узел может содержать произвольное число атрибутов (ключ-значение), произвольное число тегов, служащих для определения роли узла и мета-данные (индексы и ограничения). Связи между узлами всегда имею направления, начальный и конечный узел, тип. Связи также как и узлы могут иметь атрибуты (наиболее типичные - вес, время, рейтинг и т.п.). Основное требование в Neo4j - не должно быть сломанных связей (нельзя удалить узел, не удалив все его связи или создать связь не указав двух узлов). Если вы используете в качестве сервера Debian, то для установки доcтаточно выполнить следующие команды:
В СУБД используется собственный язык запросов — Cypher. Он является не только языком запросов, но и языком манипулирования данными, так как предоставляет функции CRUD для графового хранилища. Пример запроса на Cypher:
Что эквивалентно SQL запросу в реляционной СУБД
Для создания структуры, графа можно воспользоваться запросом вида
Результатом выполнения будет граф: Для извлечения пользователей, которые имеют доступ к проекту
Для получения более детальной информации по Neo4j посетите сайт проекта 31.08.2016 |
популярные тэги
наука
интересно
новости
технологии
история
go
golang
программирование
it
искусственный интеллект
путешествия
природа
космос
ai
базы данных
медицина
science
анализ текстов
ии
text mining
робототехника
авто
музыка
роботы
интернет
нейронные сети
robots
space
вокруг света
postgresql
алгоритмы
гитара
животные
оружие
google
nosql
авиация
здоровье
техника
auto
|