Blockchains vs centraliserade databaser

Källnod: 1576904

Fyra viktiga skillnader mellan blockkedjor och vanliga databaser

Om du har läst mina tidigare inlägg vet du nu att blockchains helt enkelt är en ny typ av databas. Det vill säga en databas som kan delas direkt, i skrivkänsla, av en grupp icke-förtroende parter utan att behöva en central administratör. Detta står i kontrast till traditionella (SQL- eller NoSQL) -databaser som styrs av en enda enhet, även om någon form av distribuerad arkitektur används inom dess väggar.

Jag gav nyligen ett samtal om blockchains ur informationssäkerhetsperspektivet, där jag drog slutsatsen att blockchains är säkrare än vanliga databaser på vissa sätt och mindre säkra på andra. Med tanke på ledande roll att centraliserade databaser spelar i dagens teknikstapel fick mig att tänka bredare på avvägningarna mellan dessa två tekniker. Faktiskt, när någon frågar mig om MultiKedja kan användas för ett visst syfte, mitt första svar är alltid: "Kan du göra det med en vanlig databas?" I fler fall än du kanske tror är svaret ja av följande enkla skäl:

Om förtroende och robusthet inte är ett problem finns det inget blockchain kan göra som en vanlig databas inte kan.

Detta är en viktig punkt som det finns så mycket missförstånd på. När det gäller de typer av data som kan lagras och de transaktioner som kan utföras på den informationen gör blockchains inget nytt. Och bara för att vara tydlig sträcker sig denna observation även till "smarta kontrakt", trots deras sexiga namn och image. Ett smart kontrakt är inget annat än en datorkod som körs på varje nod i en blockchain - en decennier gammal teknik som kallas Lagrade procedurer gör detsamma för centraliserade databaser. (Du kan inte heller använda en blockchain om den här koden behöver initiera interaktioner med omvärlden.)

Sanningen om blockchains är att, även om de har några fördelar, har de också sina nackdelar. Med andra ord, som de flesta tekniska beslut, kommer valet mellan en blockchain och en vanlig databas ner till en serie av avvägningar. Om du blir blind av hype och dövad av bullret är det osannolikt att du gör det valet objektivt. Så jag hoppas att följande guide kan hjälpa till.

Disintermediation: fördel blockchains

Kärnvärdet för en blockchain är att göra det möjligt för en databas att delas direkt över tillitsgränserna utan att det krävs en central administratör. Detta är möjligt eftersom blockchain-transaktioner innehåller sitt eget giltighetsbevis och deras eget godkännandebevis, istället för att kräva en viss centraliserad applikationslogik för att genomdriva dessa begränsningar. Transaktioner kan därför verifieras och bearbetas oberoende av flera "noder", med blockchain som en konsensusmekanism för att säkerställa att dessa noder förblir synkroniserade.

Varför finns det värde i denna disintermediation? För även om en databas bara är bitar och byte, det är också en konkret sak. Innehållet i en databas lagras i minnet och disken i ett visst datorsystem, och vem som helst med tillräcklig åtkomst till det systemet kan förstöra eller förstöra data inom. Som ett resultat, när du anförtror dina uppgifter till en vanlig databas blir du också beroende av humant organisation där databasen finns.

Nu är världen fylld med organisationer som har förtjänat detta förtroende - regeringar och banker (mestadels), universitet, branschorganisationer och till och med privata företag som Google och Facebook. I de flesta fall, särskilt i den utvecklade världen, fungerar dessa mycket bra. Jag tror att min röst alltid har räknats, ingen bank har stulit mina pengar någonsin och jag har ännu inte hittat ett sätt att betala för bättre betyg. Så vad är problemet? Om en organisation kontrollerar en viktig databas behöver den också en massa människor och processer på plats för att förhindra att databasen manipuleras. Människor behöver anställa, processer måste utformas, och allt detta tar mycket tid och pengar.

Så blockchains erbjuder ett sätt att ersätta dessa organisationer med en distribuerad databas, låst av smart kryptografi. Som så mycket som har kommit förut, utnyttjar de den ständigt ökande kapaciteten hos datorsystem för att ge ett nytt sätt att ersätta människor med kod. Och när den väl har skrivits och felsökt tenderar koden att vara väldigt mycket billigare.

Konfidentialitet: fördel centraliserade databaser

Som jag nämnde verifierar och bearbetar varje nod i en blockchain oberoende varje transaktion. En nod kan göra detta eftersom den har full synlighet i: (a) databasens nuvarande tillstånd, (b) den modifiering som begärs av en transaktion och (c) en digital signatur som bevisar transaktionens ursprung. Detta är utan tvekan ett smart nytt sätt att bygga en databas, och det fungerar verkligen. Så var är fångsten? För många applikationer, särskilt ekonomiskt, är den fullständiga transparensen som varje nod åtnjuter en absolut affärsdämpare.

Hur undviker detta system system som bygger på vanliga databaser? Precis som blockkedjor begränsar de de transaktioner som vissa användare kan utföra, men dessa begränsningar införs i en central plats. Som ett resultat behöver hela databasinnehållet bara vara synligt på den platsen snarare än i flera noder. Begäran om att läsa data går också genom denna centrala myndighet, som kan acceptera eller avvisa dessa förfrågningar som den anser lämpligt. Med andra ord, om en vanlig databas är lässtyrd och skrivstyrd, en blockchain kan endast skrivstyras.

För att vara rättvis finns många strategier tillgängliga för att mildra detta problem. Dessa sträcker sig från enkla idéer som att handla under flera blockchain-adresser till avancerade kryptografiska tekniker som konfidentiella transaktioner och bevis med nollkunskap (utvecklas nu). Ändå, ju mer information du vill dölja i en blockchain, desto tyngre är en beräkningsbörda du betalar för att generera och verifiera transaktioner. Oavsett hur dessa tekniker utvecklas kommer de aldrig att slå den enkla och enkla metoden att dölja data helt.

Robusthet: fördel blockchains

En andra fördel med blockchain-drivna databaser är extrem feltolerans, som härrör från deras inbyggda redundans. Varje nod behandlar varje transaktion, så ingen individuell nod är avgörande för databasen som helhet. På samma sätt ansluts noder till varandra på ett tätt peer-to-peer-sätt, så många kommunikationslänkar kan misslyckas innan saker och ting slipas till stopp. Blockchain säkerställer att noder som gick ner alltid kan komma ikapp de transaktioner de missade.

Så även om det är sant att vanliga databaser erbjuder många tekniker för replikation, blockchains tar detta till en helt ny nivå. För en början krävs ingen konfiguration - anslut bara några blockchain-noder tillsammans och de håller sig automatiskt synkroniserade. Dessutom kan noder läggas till eller tas bort fritt från ett nätverk utan förberedelser eller konsekvenser. Slutligen kan externa användare skicka sina transaktioner till vilken nod som helst eller till flera noder samtidigt, och dessa transaktioner sprids automatiskt och sömlöst till alla andra.

Denna robusthet omvandlar ekonomin för databasens tillgänglighet. Med vanliga databaser uppnås hög tillgänglighet genom en kombination av dyr infrastruktur och katastrofåterställning. En primär databas körs på avancerad hårdvara som övervakas noggrant för problem, med transaktioner replikerade till ett säkerhetskopieringssystem på en annan fysisk plats. Om den primära databasen misslyckas (t.ex. på grund av ett strömavbrott eller katastrofalt maskinvarufel) flyttas aktiviteten automatiskt till säkerhetskopian, som blir den nya primära. När det misslyckade systemet har fixats är det uppradat för att fungera som den nya säkerhetskopian om och när det behövs. Även om allt detta är genomförbart är det dyrt och notoriskt svårt att få rätt.

Istället, om vi hade 10 blockchain-noder som körs i olika delar av världen, allt på råvaruhårdvara? Dessa noder skulle vara tätt kopplade till varandra, dela transaktioner på peer-to-peer-basis och använda en blockchain för att säkerställa konsensus. Slutanvändare som genererar transaktionerna ansluter till (säg) 5 av dessa noder, så det spelar ingen roll om några kommunikationslänkar går ner. Och om en eller två noder misslyckas helt på en viss dag, känner ingen något, för det finns fortfarande mer än tillräckligt med kopior att gå runt. När det händer är denna kombination av lågkostnadssystem och hög redundans precis som Google byggde sin sökmotor så billigt. Blockchains kan göra samma sak för databaser.

Prestanda: fördel centraliserade databaser

Blockkedjor kommer alltid att vara långsammare än centraliserade databaser. Det är inte bara det dagens blockchains är långsamma eftersom tekniken är ny och ooptimerad, men det är ett resultat av naturen av blockchains själva. Du ser, när en transaktion behandlas måste en blockchain göra samma saker som en vanlig databas, men den har ytterligare tre bördor:

  1. Signaturverifiering. Varje blockchain-transaktion måste signeras digitalt med hjälp av ett offentligt-privat kryptografisystem såsom ECDSA. Detta är nödvändigt eftersom transaktioner sprids mellan noder på ett peer-to-peer-sätt, så att deras källa inte annars kan bevisas. Generering och verifiering av dessa signaturer är beräkningsmässigt komplex och utgör den primära flaskhalsen i produkter som våra. Däremot finns det i centraliserade databaser inget behov av att verifiera varje begäran som kommer över den när en anslutning har upprättats.
  2. Konsensusmekanismer. I en distribuerad databas som en blockchain måste ansträngningar göras för att säkerställa att noder i nätverket når konsensus. Beroende på vilken konsensusmekanism som används kan detta innebära betydande fram-och-tillbaka-kommunikation och / eller hantering av gafflar och deras därav följande återställningar. Även om det är sant att centraliserade databaser också måste strida mot motstridiga och avbrutna transaktioner, är dessa mycket mindre troliga när transaktioner köas och bearbetas på en enda plats.
  3. redundans. Det handlar inte om prestanda för en enskild nod, utan den totala mängden beräkning som en blockchain kräver. Medan centraliserade databaser behandlar transaktioner en gång (eller två gånger), måste de i en blockchain behandlas oberoende av varje nod i nätverket. Så mycket mer arbete görs för samma slutresultat.

Summan av kardemumman

Naturligtvis finns det andra sätt på vilka blockkedjor och vanliga databaser kan jämföras. Vi kan prata om kodbasmognad, utvecklares attraktivitet, ekosystembredd och mer. Men ingen av dessa frågor är det inneboende till själva tekniken. Så när det gäller ett långsiktigt beslut om att använda en blockchain är frågan den här: Vad är viktigare för mitt användningsfall? Disintermediation och robusthet? Eller konfidentialitet och prestanda?

När det undersöks i detta enkla ljus är många av de användningsfall som för närvarande diskuteras inte vettigt. Det största problemet tenderar att vara konfidentialitet. Deltagarna i en starkt konkurrensutsatt marknad föredrar naturligtvis integriteten i en centraliserad databas snarare än att avslöja sina aktiviteter för varandra. Detta gäller särskilt om en betrodd central part redan finns och kan tillhandahålla det neutrala territoriet där databasen kan finnas. Även om det kan finnas vissa kostnader för denna centrala leverantör, är detta mer än motiverat av värdet av den integritet som bibehålls. Den enda motivationen för en övergång till blockkedjor skulle vara aggressiv ny reglering.

Icke desto mindre har blockkedjor starka användningsfall, där disintermediation och robusthet är viktigare än konfidentialitet och prestanda. Jag skriver mer om dessa i ett efterföljande inlägg, men de mest lovande områdena vi hittills har sett är: (a) revisionsspår mellan företag, (b) härkomstspårning och (c) lättvikt finansiella system. I alla tre fall har vi hittat människor som bygger på MultiChain med en tydlig syn på distribution, snarare än bara nyfikenhet och experiment. Så om du letar efter sätt på vilka blockkedjor kan ge ditt företag äkta värde, kan de vara ett bra ställe att börja.

Skicka eventuella kommentarer på Link.

Tidsstämpel:

Mer från Multikedja