Neo4J 3.x + бинарный Bolt
От: Mamut Швеция http://dmitriid.com
Дата: 23.11.15 13:20
Оценка: 8 (1)
Интересно будет тем, кто пользуется или интересуется graph databases

В третьей версии Neo4J (ожидается в следующем году) будет поставляться двоичный протокол для общения с базой под названием Bolt.

Интервью о протоколе:
— Часть 1. https://dzone.com/articles/introducing-bolt-neo4js-upcoming-binary-protocol-p
— Часть 2. https://dzone.com/articles/introducing-bolt-neo4js-upcoming-binary-protocol-c

Протокол уже доступен в альфа-релизах Neo4J: http://alpha.neohq.net Там же — драйвера на Питоне, Яве и Яваскрипте.

Описание с пошаговой реализацией на Питоне тут: https://github.com/nigelsmall/bolt-howto

Сама спецификация пока раскинута по комментам в сорцах. Например: https://github.com/nigelsmall/bolt-howto/blob/master/packstream.py

В отдаленном будущем Bolt заменит REST API к базе.


dmitriid.comGitHubLinkedIn
Отредактировано 23.11.2015 20:38 Mamut [ищите в других сетях] . Предыдущая версия .
Re: Neo4J 3.x + бинарный Bolt
От: SergASh  
Дата: 25.11.15 18:52
Оценка:
M>В отдаленном будущем Bolt заменит REST API к базе.

А что было не так с REST API ?
Re[2]: Neo4J 3.x + бинарный Bolt
От: kl Германия http://stardog.com
Дата: 30.11.15 10:13
Оценка:
Здравствуйте, SergASh, Вы писали:

M>>В отдаленном будущем Bolt заменит REST API к базе.


SAS>А что было не так с REST API ?


Производительность общения с СУБД через HTTP не всегда устраивает.

PS. Наша компания (и я в том числе) так же делает свою графовую СУБД, хоть и в более узкой нише чем neo4j. У нас двоичный протокол (называется SNARL, сделан на основе Google Protobuf) был всегда.
no fate but what we make
Re: Neo4J 3.x + бинарный Bolt
От: Spinifex Россия https://architecture-cleaning.ru/
Дата: 01.12.15 05:39
Оценка:
Здравствуйте, Mamut, Вы писали:

Мне в Neo4j очень понравился Cypher. Писал те же самые запросы, что у нас сейчас на SQL сделаны получается гораздо выразительнее. Вместо экрана запроса 3-4 строчки. Просто здорово!
Но очень смутила производительность. Делал разные проверки, но наиболее запомнилась проверка на связность двух узлов. В несколько десятков раз получилось медленнее, чем на SQL Server. Для тех же самых данных.
Кто-нибудь знает про аналогичные Cypher языки, надстройки для SQL баз данных? Я так прикинул можно было бы написать свой транслятор в принципе... Но лучше взять что-то готовое.
Re[2]: Neo4J 3.x + бинарный Bolt
От: kl Германия http://stardog.com
Дата: 01.12.15 09:13
Оценка:
Здравствуйте, Spinifex, Вы писали:

S>Кто-нибудь знает про аналогичные Cypher языки, надстройки для SQL баз данных? Я так прикинул можно было бы написать свой транслятор в принципе... Но лучше взять что-то готовое.


Это сложнее чем тебе кажется. Cypher не стандартизирован и даже семантика его операторов формально не описана (насколько я знаю), поэтому трансляция в SQL *в общем случае* — дело мутное (например, непонятно как доказывать корректность). Поэтому общих трансляторов и нет. Можно написать транслятор для частных случаев.

В качестве сравнения можешь посмотреть на SPARQL — он стандартизирован W3C, его семантика формальна и есть реализации на основе трансляции в SQL (например, так поступает Virtuoso). Правда насколько это быстрее получается чем нативная реализация — зависит от модели данных и самих запросов.
no fate but what we make
Re[3]: Neo4J 3.x + бинарный Bolt
От: Spinifex Россия https://architecture-cleaning.ru/
Дата: 01.12.15 11:40
Оценка:
Здравствуйте, kl, Вы писали:

kl>Здравствуйте, Spinifex, Вы писали:


S>>Кто-нибудь знает про аналогичные Cypher языки, надстройки для SQL баз данных? Я так прикинул можно было бы написать свой транслятор в принципе... Но лучше взять что-то готовое.


kl>Это сложнее чем тебе кажется. Cypher не стандартизирован и даже семантика его операторов формально не описана (насколько я знаю), поэтому трансляция в SQL *в общем случае* — дело мутное (например, непонятно как доказывать корректность). Поэтому общих трансляторов и нет. Можно написать транслятор для частных случаев.


kl>В качестве сравнения можешь посмотреть на SPARQL — он стандартизирован W3C, его семантика формальна и есть реализации на основе трансляции в SQL (например, так поступает Virtuoso). Правда насколько это быстрее получается чем нативная реализация — зависит от модели данных и самих запросов.

SPARQL это уже совсем не то. Даже Gremlin мне не так понравился...
Да и я вобщем-то и не настаиваю прямо на стандартизированном трансляторе, достаточно иметь что-то похожее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.