Bult (nätverksprotokoll)

Bult
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 boltprotocol .org

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

En typisk interaktion i Bolt-nätverksprotokollet

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.

externa länkar