볼트(네트워크 프로토콜)

Bolt (network protocol)
볼트
원저작자네오 테크놀로지
안정된 릴리스
버전 1
기입처다양한 언어
운영 체제조금도
플랫폼크로스 플랫폼
유형네트워크 프로토콜
면허증.Creative Commons 3.0 Attribution-ShareAlike
웹 사이트boltprotocol.org

볼트 프로토콜(Bolt)은 데이터베이스 응용 프로그램에서 클라이언트-서버 통신에 사용되는 연결 지향 네트워크 프로토콜입니다.TCP 접속 또는 WebSocket 경유로 동작합니다.

Bolt는 스테이트먼트 지향이므로 클라이언트는 단일 문자열과 입력된 파라미터 세트로 구성된 스테이트먼트를 포함하는 메시지를 전송할 수 있습니다.서버는 결과 메시지와 결과 레코드의 선택적 스트림으로 각 스테이트먼트에 응답합니다.

볼트는 아마존 [1]넵튠, Neo4j [2] Memgraph 그래프 데이터베이스에서 사용됩니다.


역사

볼트 프로토콜은 2015년 11월 던컨 브라운이 진행한 인터뷰에서 처음 공개되었고 DZone에서 [3]발표되었습니다.프로토콜을 구현하는 소프트웨어의 첫 번째 릴리스는 2015년 12월 Neo4j Server의 [4]마일스톤 릴리스의 일부로 이루어졌습니다.2016년 4월, Neo4j Server 3.0이 출시되었으며 이 프로토콜의 첫 번째 서버 구현과 함께 Bolt 클라이언트 드라이버 제품군을 포함했습니다.이 릴리스는 여러 주류 [5][6][7]언론으로부터 주목을 받았습니다.

버전 관리

이 프로토콜은 클라이언트와 서버 간의 명시적 버전 관리 및 버전 협상을 지원합니다.공개된 프로토콜 버전은 버전 1뿐입니다.

프로토콜 개요 - 버전 1

메시지

볼트 네트워크 프로토콜의 일반적인 상호 작용

볼트 클라이언트와 서버는 모두 접속을 통해 일련의 메시지로 데이터를 전송합니다.각 메시지에는 유형("서명" 바이트로 표시됨)이 있으며 추가 데이터가 포함될 수 있습니다.클라이언트가 인터랙션을 실행해, 클라이언트가 송신하는 각 메세지에 의해서, 1 개 이상의 응답 메세지가 서버에 의해서 송신됩니다.

클라이언트 메시지:

유형 서명
초기화 0x01[8]
달려. 0x10[9]
폐기_모든. 0x2F[10]
풀_ALL 0x3F[11]
ACK_FAILURE 0x0E[12]
리셋 0x0F[13]

서버 메시지:

유형 서명
성공. 0x70[14]
실패. 0x7F[15]
무시당하다 0x7E[16]
기록. 0x71[17]

메시지 전송 부호화

각 메시지는 바이트 시퀀스로 인코딩됩니다.이러한 바이트는 바이너리 청크 부호화를 사용하여 전송됩니다.각 청크 앞에는 부호 없는 빅엔디안 16비트 정수가 붙습니다.이 정수는 바로 이어지는 바이트 수를 나타냅니다.메시지의 끝을 나타내기 위해 길이0 이 사용됩니다.

장애 처리

클라이언트는 응답을 [18]기다리지 않고 서버에 여러 메시지를 보낼 수 있습니다.서버는 각 메시지를 순차적으로 처리합니다.다만, 클라이언트가 송신하는 메시지간에 논리적인 의존관계가 있는 경우가 있기 때문에, 서버는 앞의 메시지에 대한 응답으로 FAILURE를 송신한 후에 수신한 요구를 평가하지 않습니다.대신 클라이언트가 ACK_를 전송하여 장애를 확인할 때까지 모든 클라이언트메시지에 대한 응답으로 INSORGED 메시지를 보냅니다.FAILURE 메시지

이는 Postgre의 장애 처리 및 복구와 유사합니다.SQL 와이어 프로토콜.

데이터 부호화

볼트는 다양한 데이터 유형의 인코딩을 지원합니다.

유형 묘사
특수한 순서 값이 없음을 나타냅니다.
부울 부울 true 또는 false.
정수 64비트 부호 있는 정수
플로트 64비트 부동소수점 번호
스트링 UTF-8 부호화 스트링
리스트 값의 순서가 매겨진 집합입니다.
지도 순서가 매겨진 키의 값 집합입니다.
노드 속성 그래프에 옵션 속성 및 레이블이 있는 노드입니다.
관계 속성 그래프에서 두 노드 간의 유도된 형식 연결입니다.각 관계에는 속성이 있을 수 있으며 항상 ID가 있습니다.
패스 0개 이상의 세그먼트로 구성된 속성 그래프를 통과하는 방향 보행 기록입니다.

레퍼런스

  1. ^ "Announcing openCypher for Amazon Neptune: Building better graph applications with openCypher and Gremlin together". aws.amazon.com. July 29, 2021. Retrieved July 30, 2021.
  2. ^ "Implementing The Bolt Protocol v4". memgraph.com. October 29, 2020. Retrieved July 28, 2021.
  3. ^ "Introducing Bolt, Neo4j's Upcoming Binary Protocol – Part 1 - DZone Database". dzone.com. Retrieved June 2, 2017.
  4. ^ "Bolting Forward: The Neo4j 3.0 Milestone 1 Release Is Here - Neo4j Graph Database". neo4j.com. December 4, 2015. Retrieved June 2, 2017.
  5. ^ Martin, Alexander J. (April 26, 2016). "Neo4j bolts on binary protocol to up its graph database game". theregister.co.uk. Retrieved June 2, 2017.
  6. ^ "Neo4j 3.0 Released with Binary Communication Protocol and Standardised Drivers". InfoQ. Retrieved June 2, 2017.
  7. ^ "Neo Technology Releases Neo4j 3.0". tomsitpro.com. April 26, 2016. Archived from the original on May 7, 2017. Retrieved June 2, 2017.
  8. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  9. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  10. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  11. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  12. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  13. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  14. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  15. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  16. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  17. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  18. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  19. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  20. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  21. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  22. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  23. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  24. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  25. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  26. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  27. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
  28. ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.

외부 링크