Bolt (сетевой протокол) - Bolt (network protocol)

Болт
Оригинальный автор (ы)Neo Technology
Стабильный выпуск
Версия 1
Написано вРазличные языки
Операционная системаЛюбой
ПлатформаКроссплатформенность
ТипСетевой протокол
ЛицензияЛицензия Creative Commons 3.0 Attribution-ShareAlike
Интернет сайтболтпротокол.org

В Болт Протокол (Болт) это ориентированный на соединение сетевой протокол используется для клиент-сервер общение в база данных Приложения. Он работает над TCP подключение или WebSocket.

Bolt ориентирован на инструкции, позволяя клиенту отправлять сообщения, содержащие инструкцию, состоящую из одной строки и набора типизированных параметров. Сервер отвечает на каждый оператор сообщением результата и дополнительным потоком записей результатов.

Разработано для использования в База данных графов Neo4j, Bolt был сильно вдохновлен бинарным сетевым протоколом PostgreSQL и имеет формат обмена данными, полученный из Пакет сообщений.

История

Протокол Болта был впервые представлен общественности в ноябре 2015 года во время интервью, проведенного Дунканом Брауном и опубликованного на DZone.[1] Первый выпуск программного обеспечения, реализующего протокол, произошел в декабре 2015 года в рамках важной версии Neo4j Server.[2] В апреле 2016 года был выпущен Neo4j Server 3.0, который содержал первую серверную реализацию протокола вместе с набором клиентских драйверов Bolt. Этот релиз привлек внимание нескольких основных СМИ.[3][4][5]

Управление версиями

Протокол поддерживает явное управление версиями и согласование версий между клиентом и сервером. Существует только одна опубликованная версия протокола: версия 1.

Обзор протокола - версия 1

Обмен сообщениями

Типичное взаимодействие в сетевом протоколе Bolt

И клиенты, и серверы Bolt отправляют данные через соединение в виде последовательности сообщений. Каждое сообщение имеет тип (обозначается байтом «подпись») и может включать дополнительные данные. Клиент управляет взаимодействием, и каждое сообщение, отправленное клиентом, вызывает отправку одного или нескольких ответных сообщений сервером.

Сообщения клиента:

ТипПодпись
В ЭТОМ0x01[6]
ПРОБЕГ0x10[7]
DISCARD_ALL0x2F[8]
PULL_ALL0x3F[9]
ACK_FAILURE0x0E[10]
ПЕРЕЗАГРУЗИТЬ0x0F[11]

Сообщения сервера:

ТипПодпись
УСПЕХ0x70[12]
ОТКАЗ0x7F[13]
ИГНОРИРУЕТСЯ0x7E[14]
ЗАПИСЫВАТЬ0x71[15]

Кодировка передачи сообщений

Каждое сообщение кодируется последовательностью байтов. Эти байты передаются с использованием двоичного фрагментированное кодирование, где каждому фрагменту предшествует беззнаковый, прямой порядок байтов 16-битное целое число, обозначающее количество следующих за ним байтов. Длина 0 используется для обозначения конца сообщения.

Обработка сбоев

Клиент может отправить несколько сообщений на сервер, не дожидаясь ответа.[16] Сервер обрабатывает каждое сообщение последовательно. Однако, поскольку между сообщениями, отправленными клиентом, могут быть логические зависимости, сервер не будет оценивать запросы, которые он получает после отправки FAILURE в ответ на предыдущее сообщение. Вместо этого он будет отправлять IGNORED сообщение в ответ на каждое клиентское сообщение, пока клиент не подтвердит сбой, отправив сообщение ACK_FAILURE.

Это похоже на обработку сбоев и восстановление в PostgreSQL проводной протокол.

Кодирование данных

Bolt поддерживает кодирование для ряда различных типов данных.

ТипОписание
Ноль [17]Представляет отсутствие значения.
Булево [18]Логическое значение true или false.
Целое число [19]64-битное целое число со знаком.
Плавать [20]64-битное число с плавающей запятой.
Нить [21]Строка в кодировке UTF-8.
Список [22]Упорядоченный сбор значений.
карта [23]Неупорядоченный набор значений с ключами.
Узел [24]Узел в График свойств с дополнительными свойствами и метками.
Отношение [25]Направленное типизированное соединение между двумя узлами в График свойств. Каждое отношение может иметь свойства и всегда иметь идентичность.
Дорожка [26]Запись направленной прогулки по График свойств, состоящий из последовательности из нуля или более сегментов.

Рекомендации

  1. ^ «Представляем Bolt, грядущий двоичный протокол Neo4j - Часть 1 - База данных DZone». dzone.com. Получено 2 июня, 2017.
  2. ^ "Рывок вперед: релиз Neo4j 3.0 Milestone 1 уже здесь - база данных Neo4j Graph". neo4j.com. 4 декабря 2015 г.. Получено 2 июня, 2017.
  3. ^ 12:24, 26 апреля 2016 года в; Алекс; tweet_btn (), эр Дж. Мартин. "Neo4j использует двоичный протокол, чтобы улучшить свою игру с графической базой данных". theregister.co.uk. Получено 2 июня, 2017.CS1 maint: числовые имена: список авторов (связь)
  4. ^ «Neo4j 3.0 выпущен с двоичным протоколом связи и стандартизованными драйверами». InfoQ. Получено 2 июня, 2017.
  5. ^ "Neo Technology выпускает Neo4j 3.0". tomsitpro.com. 26 апреля 2016 г. Архивировано с оригинал 7 мая 2017 г.. Получено 2 июня, 2017.
  6. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  7. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  8. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  9. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  10. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  11. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  12. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  13. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  14. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  15. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  16. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  17. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  18. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  19. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  20. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  21. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  22. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  23. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  24. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  25. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.
  26. ^ «Протокол Bolt, Версия 1». boltprotocol.org. Получено 2 июня, 2017.

внешняя ссылка