볼트(네트워크 프로토콜)
Bolt (network protocol)원저작자 | 네오 테크놀로지 |
---|---|
안정된 릴리스 | 버전 1 |
기입처 | 다양한 언어 |
운영 체제 | 조금도 |
플랫폼 | 크로스 플랫폼 |
유형 | 네트워크 프로토콜 |
면허증. | Creative Commons 3.0 Attribution-ShareAlike |
웹 사이트 | boltprotocol |
볼트 프로토콜(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개 이상의 세그먼트로 구성된 속성 그래프를 통과하는 방향 보행 기록입니다. |
레퍼런스
- ^ "Announcing openCypher for Amazon Neptune: Building better graph applications with openCypher and Gremlin together". aws.amazon.com. July 29, 2021. Retrieved July 30, 2021.
- ^ "Implementing The Bolt Protocol v4". memgraph.com. October 29, 2020. Retrieved July 28, 2021.
- ^ "Introducing Bolt, Neo4j's Upcoming Binary Protocol – Part 1 - DZone Database". dzone.com. Retrieved June 2, 2017.
- ^ "Bolting Forward: The Neo4j 3.0 Milestone 1 Release Is Here - Neo4j Graph Database". neo4j.com. December 4, 2015. Retrieved June 2, 2017.
- ^ Martin, Alexander J. (April 26, 2016). "Neo4j bolts on binary protocol to up its graph database game". theregister.co.uk. Retrieved June 2, 2017.
- ^ "Neo4j 3.0 Released with Binary Communication Protocol and Standardised Drivers". InfoQ. Retrieved June 2, 2017.
- ^ "Neo Technology Releases Neo4j 3.0". tomsitpro.com. April 26, 2016. Archived from the original on May 7, 2017. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.
- ^ "Bolt Protocol, Version 1". boltprotocol.org. Retrieved June 2, 2017.