Bult (nätverksprotokoll)
Originalförfattare | Neo-teknik |
---|---|
Stabil frisättning | Version 1 |
Skrivet i | Olika språk |
Operativ system | Några |
Plattform | Cross-plattform |
Typ | Nätverksprotokoll |
Licens | Creative Commons 3.0 Erkännande-Dela Lika |
Hemsida |
Boltprotokollet ( Bolt ) är ett anslutningsorienterat nätverksprotokoll som används för klient- serverkommunikation i databasapplikationer . Den fungerar över en TCP- anslutning eller WebSocket .
Bolt är statement-orienterad, vilket gör att en klient kan skicka meddelanden som innehåller ett uttalande som består av en enda sträng och en uppsättning inskrivna parametrar. Servern svarar på varje påstående med ett resultatmeddelande och en valfri ström av resultatposter.
Historia
Bolt-protokollet introducerades först för allmänheten i november 2015, under en intervju genomförd av Duncan Brown och publicerad på DZone . Den första utgåvan av programvara som implementerar protokollet inträffade i december 2015, som en del av en milstolpeversion av Neo4j Server. I april 2016 släpptes Neo4j Server 3.0 och innehöll den första serverimplementeringen av protokollet, tillsammans med en uppsättning Bolt-klientdrivrutiner. Denna release fick uppmärksamhet från flera vanliga medier.
Versionering
Protokollet stöder explicit versionshantering och versionsförhandling mellan klienten och servern. Det finns bara en publicerad version av protokollet: version 1.
Protokollöversikt - version 1
Meddelanden
Boltklienter och servrar skickar båda data över anslutningen som en sekvens av meddelanden. Varje meddelande har en typ (betecknad med en "signatur"-byte) och kan innehålla ytterligare data. Klienten driver interaktionen och varje meddelande som skickas av klienten kommer att orsaka att ett eller flera svarsmeddelanden skickas av servern.
Kundmeddelanden:
Typ | Signatur |
---|---|
I DET | 0x01 |
SPRINGA | 0x10 |
DISCARD_ALL | 0x2F |
DRAG_ALLA | 0x3F |
ACK_FAILURE | 0x0E |
ÅTERSTÄLLA | 0x0F |
Servermeddelanden:
Typ | Signatur |
---|---|
FRAMGÅNG | 0x70 |
FEL | 0x7F |
IGNORERAD | 0x7E |
SPELA IN | 0x71 |
Kodning för meddelandeöverföring
Varje meddelande är kodat i en sekvens av byte. Dessa byte överförs med hjälp av en binär chunk-kodning , där varje chunk föregås av ett osignerat, big-endian 16-bitars heltal som anger antalet byte som omedelbart följer. En längd på 0 används för att beteckna slutet av meddelandet.
Felhantering
En klient kan skicka flera meddelanden till en server utan att först vänta på ett svar. Servern bearbetar varje meddelande sekventiellt. Men eftersom det kan finnas logiska beroenden mellan meddelanden som skickas av klienten, kommer servern inte att utvärdera förfrågningar som den tar emot efter att ha skickat FAILURE som svar på ett föregående meddelande. Istället kommer det att skicka ett IGNORED meddelande som svar på varje klientmeddelande, tills klienten bekräftar felet genom att skicka ett ACK_FAILURE-meddelande.
Detta liknar felhantering och återställning i PostgreSQL- trådprotokollet.
Datakodning
Bolt stöder kodning för ett antal olika datatyper.
Typ | Beskrivning |
---|---|
Null | Representerar frånvaron av ett värde. |
Boolean | Boolean sant eller falskt. |
Heltal | 64-bitars signerat heltal. |
Flyta | 64-bitars flyttal. |
Sträng | UTF-8-kodad sträng. |
Lista | Beställd värdesamling. |
Karta | Oordnad, nyckelad samling av värden. |
Nod | En nod i ett egenskapsdiagram med valfria egenskaper och etiketter. |
Relation | En riktad, typad anslutning mellan två noder i en egenskapsgraf. Varje relation kan ha egenskaper och har alltid en identitet. |
Väg | Posten för en riktad vandring genom en egenskapsgraf, bestående av en sekvens med noll eller fler segment. |