Bolt (síťový protokol) - Bolt (network protocol)
Původní autoři | Neo technologie |
---|---|
Stabilní uvolnění | Verze 1 |
Napsáno | Různé jazyky |
Operační systém | Žádný |
Plošina | Cross-platform |
Typ | Síťový protokol |
Licence | Creative Commons 3.0 Attribution-ShareAlike |
webová stránka | šroubový protokol |
The Bolt Protocol (Šroub) je orientované na připojení síťový protokol používá klient-server komunikace v databáze aplikace. Funguje přes a TCP připojení nebo WebSocket.
Bolt je orientovaný na příkazy a umožňuje klientovi odesílat zprávy obsahující příkaz skládající se z jediného řetězce a sady typových parametrů. Server reaguje na každý výpis zprávou o výsledku a volitelným streamem záznamů o výsledcích.
Vyvinuto pro použití v Databáze grafů Neo4j, Bolt byl silně inspirován binárním síťovým protokolem z PostgreSQL a obsahuje formát pro výměnu dat odvozený od MessagePack.
Dějiny
Boltův protokol byl poprvé představen veřejnosti v listopadu 2015, během rozhovoru, který provedl Duncan Brown a byl zveřejněn dne DZone.[1] První vydání softwaru implementujícího protokol proběhlo v prosinci 2015 jako součást milníkového vydání serveru Neo4j Server.[2] V dubnu 2016 byl vydán server Neo4j Server 3.0, který obsahoval první serverovou implementaci protokolu doprovázenou sadou klientských ovladačů Bolt. Toto vydání získalo pozornost několika médií hlavního proudu.[3][4][5]
Správa verzí
Protokol podporuje explicitní správu verzí a vyjednávání verzí mezi klientem a serverem. Existuje pouze jedna publikovaná verze protokolu: verze 1.
Přehled protokolu - verze 1
Zprávy

Klienti Bolt i servery odesílají data přes připojení jako posloupnost zpráv. Každá zpráva má typ (označený „podpisovým“ bajtem) a může obsahovat další data. Klient řídí interakci a každá zpráva odeslaná klientem způsobí, že jedna nebo více zpráv s odpovědí bude odesláno serverem.
Zprávy klienta:
Typ | Podpis |
---|---|
INIT | 0x01[6] |
BĚH | 0x10[7] |
DISCARD_ALL | 0x2F[8] |
PULL_ALL | 0x3F[9] |
ACK_FAILURE | 0x0E[10] |
RESETOVAT | 0x0F[11] |
Zprávy serveru:
Typ | Podpis |
---|---|
ÚSPĚCH | 0x70[12] |
SELHÁNÍ | 0x7F[13] |
IGNOROVANÉ | 0x7E[14] |
ZÁZNAM | 0x71[15] |
Kódování přenosu zpráv
Každá zpráva je kódována do sekvence bajtů. Tyto bajty jsou přenášeny pomocí binárního souboru blokové kódování, kde každému bloku předchází nepodepsané, big-endian 16bitové celé číslo označující počet bajtů, které bezprostředně následují. K označení konce zprávy se používá délka 0.
Zpracování selhání
Klient může odeslat více zpráv na server, aniž by nejprve čekal na odpověď.[16] Server zpracovává každou zprávu postupně. Protože však mezi zprávami odesílanými klientem mohou existovat logické závislosti, server nebude vyhodnocovat požadavky, které obdrží po odeslání FAILURE v reakci na předchozí zprávu. Místo toho odešle zprávu IGNORED v odpovědi na každou zprávu klienta, dokud klient nepotvrdí selhání odesláním zprávy ACK_FAILURE.
Je to podobné jako při zpracování a zotavení po selhání v PostgreSQL drátový protokol.
Kódování dat
Bolt podporuje kódování pro řadu různých datových typů.
Typ | Popis |
---|---|
Nula [17] | Představuje nepřítomnost hodnoty. |
Booleovský [18] | Booleovská pravda nebo nepravda. |
Celé číslo [19] | 64bitové celé číslo se znaménkem. |
Plovák [20] | 64bitové číslo s plovoucí desetinnou čárkou. |
Tětiva [21] | Řetězec kódovaný UTF-8. |
Seznam [22] | Objednaná sbírka hodnot. |
Mapa [23] | Neuspořádaná klíčovaná kolekce hodnot. |
Uzel [24] | Uzel v a Graf vlastností s volitelnými vlastnostmi a štítky. |
Vztah [25] | Směrované, zadané spojení mezi dvěma uzly v a Graf vlastností. Každý vztah může mít vlastnosti a vždy má svou identitu. |
Cesta [26] | Záznam o řízené procházce a Graf vlastností, skládající se ze sekvence nulového nebo více segmentů. |
Reference
- ^ „Představujeme Bolt, připravovaný binární protokol Neo4j - část 1 - databáze DZone“. dzone.com. Citováno 2. června 2017.
- ^ „Bolting Forward: The Neo4j 3.0 Milestone 1 Release Is Here - Neo4j Graph Database“. neo4j.com. 4. prosince 2015. Citováno 2. června 2017.
- ^ 12:24, 26. dubna 2016 v; Alex; tweet_btn (), er J. Martin. „Neo4j podporuje binární protokol, aby vylepšil svou hru s databází grafů“. theregister.co.uk. Citováno 2. června 2017.CS1 maint: číselné názvy: seznam autorů (odkaz)
- ^ „Neo4j 3.0 vydán s binárním komunikačním protokolem a standardizovanými ovladači“. InfoQ. Citováno 2. června 2017.
- ^ „Neo Technology uvádí Neo4j 3.0“. tomsitpro.com. 26. dubna 2016. Archivovány od originál 7. května 2017. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.
- ^ „Bolt Protocol, verze 1“. boltprotocol.org. Citováno 2. června 2017.