3Box Research: hajutatud andmebaaside GUN, OrbitDB ja Scuttlebutt võrdlus

Populaarsete hajutatud andmebaasiprotokollide sarnasused ja erinevused

See postitus sisaldab 3Boxi meeskonna tehtud uuringute kokkuvõtet. Toome välja sarnasused ja erinevused populaarsete hajutatud andmebaasitehnoloogiate vahel ja ütleme lõpuks, miks otsustasime tugineda OrbitDB-le.

Ülevaade populaarsetest levitatud andmebaasidest

Tundub, et veebis3 on lõputut pakkumist uusi ja põnevaid tehnoloogiaid, mis lahendavad teie probleemid uudsel viisil. Ethereumi kasutajate sotsiaalse andmebaasi 3Box kujundamisel vajasime ahelavälise sisu hoidmiseks ja jagamiseks hajutatud andmebaasi (DDB) lahendust. Alustasime mõne turul populaarseima DDB-rakenduse uurimisega. Oleme väga põnevil, et saame oma avastusi avatud lähtekoodiga jagada ja kogukonnaga jagada.

See uurimistöö annab ülevaate kolmest erinevast hajutatud andmebaasi protokollist, mida 3Boxi uurimisel ja arendamisel silmas peeti: GUN, OrbitDB ja Secure Scuttlebutt (SSB).

RELV

GUN on detsentraliseeritud, ühenduseta-esimene graafikute andmebaas. See pakub arendajatele hõlpsat liidest, et luua võrguühenduseta töötavaid rakendusi, mis sünkroonitakse automaatselt teiste sõlmedega pärast rakenduse ühendamist koordinatsiooniserveriga. Selle kirjutamise ajal on sellel umbes 3 000 igakuist allalaadimist (npm) ja sellel on aktiivne kogukond.

OrbitDB

OrbitDB on peer-to-peer andmebaasi protokoll, samuti protokolli rakendamine. See pakub põhiprotokolli peal erinevat tüüpi andmebaase ja võimaldab kasutajatel oma tüüpe rakendada. Selle kirjutamise ajal on sellel umbes 3 000 igakuist allalaadimist (npm) ja seda arendavad Haja võrgud.

Turvaline Scuttlebutt (SSB)

SSB on peer-to-peer logipood, mida kasutatakse andmebaasi, identiteedipakkuja ja sõnumside süsteemina. Seda tuntakse peamiselt selle kui sotsiaalse võrgustiku kasutamise pärast; Patchwork on nende populaarseim klient. Nende kliendil Scuttlebot on praegu umbes 3 000 igakuist allalaadimist (npm). SSB-l on nende sotsiaalvõrgustikus üsna aktiivne kasutajaskond.

Hajutatud andmebaasi kihid

Püstolit, OrbitDB ja Scuttlebutt uurides märkasime, et DDB arhitektuuridel on mõned sarnasused. Protokolle saab mõelda eraldi kihtides:

  1. Võrgundus: suhtlusprotokoll, mis hoiab sõlmed sünkroonis
  2. Sündmuste logi: andmebaasi põhiandmete mudel
  3. Kasutaja autentimine: juurdepääsu kontrollimise meetod andmebaasile
  4. Liides: arendajatele avatud API

Selle jaotise ülejäänud osas hinnatakse kolme DDB-d vastavalt nendele kihtidele, alustades võrgustamisest.

1. Võrgundus

Hajutatud andmebaasisüsteemid peavad värskendused usaldusväärsete sõlmede vahel usaldusväärselt edastama. Võrgukiht määratleb, kuidas DDB sõlmed suhtlevad ja lepivad kokku nende värskendustega. Võrgukiht on mis tahes hajutatud andmebaasi väga oluline aspekt, kuna halb võrgukiht võib põhjustada värskenduste kaotamise ja sõlmede erineva oleku.

Uurime, kuidas kolm DDB-d rakendavad oma p2p-võrgu protokolle:

GUN rakendab nende võrguteenuse virna, kasutades kõige kaasaegsemaid veebrtc- ja veebivõrgutehnoloogiaid. See tähendab, et brauserid saavad üksteisega otse suhelda, ilma et oleks vaja ühtegi serverit (välja arvatud veebi server, mis peab ühenduse üle läbirääkimisi pidama, mis kehtib kõigi brauseripõhiste P2P-tehnoloogiate kohta).

SSB määratleb ja juurutab kohandatud P2P-võrgu. See võimaldab teil leida kohalikus võrgus eakaaslasi, luua ühenduse pubidega (avalikud sõlmpunktid) ja avastada teiste kasutajate reklaamitud pubisid. See võimaldab SSB-l töötada, ilma et oleks vaja, et keskserver oleks töövalmis ja töökorras.

OrbitDB kasutab libp2p, mis on modulaarne p2p teek, mis suudab suhelda paljude erinevate transportide kaudu ja töötab paljudes erinevates keskkondades. js-libp2p võimaldab brauseri klientidel suhelda veebiserveri serveritega, teiste brauseri klientidega webrtc kaudu ja mujal. Praegu kasutatakse seda IPFS-is, pariteedisubstraadis, ja seda kasutatakse ka Eth2.0-s.

2. Riigi juhtimine

Hajutatud andmebaasisüsteemid peavad andmeid modelleerima nii, et kasutajad saaksid tagada nende terviklikkuse. Erinevate süsteemide abil saavutatakse see erineval viisil. Üks lähenemisviis on lingitud andmete loendi loomine. Kasutada võib ka erinevat tüüpi CRDT-sid.

Lingitud loendit kasutatakse põhiandmemudelina kahes uuritud hajutatud andmebaasisüsteemis. Iga link on eelmise kirje räsi; ja iga kirje on andmebaasi autonoomne värskendus. Lingitud loendite süsteemides rakendamisel on siiski erinevusi:

SSB kasutab ainult lisamise logi, mida nad kutsuvad kanaliks. Nende dokumentide põhjal leiame, et see logi eeldab, et konflikte pole. Selles mudelis eeldatakse, et kasutaja teab alati oma voo uusimat olekut. See võib osutuda problemaatiliseks, kui kasutajal on mitu seadet, mis pakuvad vastuolulisi värskendusi, mis võib hõlpsasti tekkida siis, kui kasutaja lülitub ühenduseta ühte seadmesse, kuid mitte teise. Palun andke meile teada, kui teil on rohkem teavet selle kohta, kas SSB sellega mingil viisil tegeleb, kuna me pole sellest teadlikud.

OrbitDB kasutab CRDT-sid, mis põhinevad ainult lisamisel logil, mis suudab kahvliharusid ühendada ja võimaliku järjepidevuse tagada. See tähendab, et kliendid saavad minna võrguühenduseta ja luua vastuolulisi värskendusi, kuid uuesti võrku minnes nad sünkroonitakse ja lõppevad sama olekuga.

GUN kasutab olekupõhist CRDT-d, mis tähendab, et see ei kasuta ainult lisa logi. Selle asemel edastab see süsteemi oleku igal ajahetkel. Neil on siin lühike kirjeldus.

3. Kasutaja autentimine

Andmebaasid vajavad viisi, kuidas hallata õigusi selle üle, kes saab mitmesuguseid toiminguid teha. Kuna hajutatud andmebaasid ei saa juurdepääsu kontrollimise lubadele tugineda keskserverile, võib autentimine tugineda avaliku võtme krüptograafiale.

SSB-l on identiteedi kontseptsioon, kus voog võib kuuluda ainult ühele identiteedile. SSB puhul on identiteet lihtsalt asümmeetriline võtmepaar. See sobib suurepäraselt selliste juhtumite jaoks nagu Twitteri sarnased sotsiaalvõrgustikud, kus kasutajad teevad ülemaailmseid postitusi, kuid see võib olla vähem ideaalne kommentaaride sektsioonide jms jaoks.

OrbitDB-l on juurdepääsu kontrollisüsteem, kus saate määratleda avalike võtmete komplekti DB loomise ajal. See võimaldab teil omada DB, mida mitmed kasutajad saavad korraga värskendada. Praegu ei saa avalike võtmete algset komplekti muuta, ehkki täpsema autentimissüsteemi kallal töötatakse.

GUN-il on pseudonüümil ja paroolil põhinev autentimissüsteem. Nende näiteid vaadates näib, et inimestele on dünaamiliselt võimalik juurde pääseda, kuid nende dokumentatsioon puudub.

4. Liides

Kasutajad ja paindlikkus valmistavad andmebaaside valimisel arendajatele muret. Nii et me küsisime endalt, kui lihtne on liides või API, mis võimaldab arendajatel andmebaasiga suhelda ja selle peale rakendusi luua?

SSB-l on pistikprogrammide kontseptsioon, mis pakuvad SSB logis erinevaid vaateid. Nende pistikprogrammide kirjutamiseks ei leidnud me tegelikult palju dokumentatsiooni, kuid tundub, et peate põhimõtteliselt kirjutama kaardi ja vähendama funktsiooni.

OrbitDB pakub erinevaid võimalusi erinevat tüüpi andmepoodidele, millel on üsna selge API. Logipoed on üsna sarnased SSB-kanalitega, samas kui võtmeväärtusega kauplustes on sarnane liides localStorage'iga, mis on saadaval kõigis tavalistes veebibrauserites.

GUN kasutab graafika kontseptsiooni liidesena DB manipuleerimiseks. Põhimõtteliselt saate sõlme, seejärel saate sinna andmeid lisada või värskendusi kuulata. Nende teremaailma näide aitab teil mõista, kuidas see töötab.

Andmete varundamine ja majutamine

Me ei ole veel arutanud, kus kasutaja andmed nendes erinevates süsteemides varundatakse. Põhjuseks on see, et hajutatud andmebaasid teevad ära suure töö salvestusruumi arendajatelt eemaldamisel. Siiski tahame kindlasti hinnata nende kolme süsteemi aluseks olevaid andmesalvestus- ja hostivõrke, et kontrollida nende saadavust, vastupidavust ja kasutatavust. See oleks teie kasutajatele kohutav kogemus, kui kaotaksite juurdepääsu oma andmetele isegi lühikeseks ajaks.

Mõned küsimused, mida võiksite kaaluda: Mis saab siis, kui teie kasutaja kaotab oma telefoni või arvuti, kus kõik andmed on salvestatud? Või mis siis, kui kasutajaA soovib saada teavet kasutajaB kohta, kui kasutajaA pole ühenduseta?

GUN võimaldab kasutajatel luua ühenduse http-serveriga, mis majutab kõiki andmeid kasutaja DB-s. Http-server töötab püstoli DB eksemplari ja kordab kõiki muudatusi oma klientidelt.

SSB-l on pubide kontseptsioon, mis on lihtsalt avalikud SSB-sõlmed, mis jälgivad paljusid kasutajaid. Kui kasutajad kaotavad oma andmed, saavad nad pubist koopia tagasi saada - kui see on endiselt saadaval. Märkus: kasutajad peavad selgesõnaliselt taotlema, et neile järgneks pubi.

Teisest küljest ei ole OrbitDB-l andmeid varundava sõlme loomulikku kontseptsiooni. Selle asemel kasutab ta pubibaudi protokolli libp2p, et tuvastada eakaaslasi, kes kopeerivad antud DB eksemplari. See võimaldab kasutaja andmebaasil aktiivselt varundada mitut võrdõiguslikku eksemplari, ilma et kasutaja peaks ühega neist selgesõnaliselt ühenduma. Me arvame, et see on päris kena.

Järeldus

Üldiselt on kolmel andmebaasil vähe sarnasusi ja kõik need on alles väljatöötamisel. Tulevikus kujutame ette, et mõni neist projektidest võib hakata oma kihte välja vahetama. Näiteks arvaksime, et oleks väga lahe, kui SSB töötaks libp2p peal!

OrbitDB

OrbitDB

Praegu tundub, et OrbitDB pakub kolmest kaalutud variandist kõige paindlikumat hajutatud andmebaasisüsteemi.

  • Orbiidi liides pakub kõige laiemat potentsiaalsete kasutusjuhtumite valikut. Orbiti pakutavad mitmesugused andmehoidlad pakuvad valikulisust ja paindlikkust paljude eri tüüpi rakenduste ja tööriistade ehitamiseks väga laias kasutusvaldkonnas.
  • Orbiti võrk on üles ehitatud tuttavatele hästi hooldatud tehnoloogiatele. libp2p ja ipfs loovad Orbiti süsteemile tugeva aluse, millega paljud Ethereumi kogukonna liikmed on tõenäoliselt juba tuttavad. Teised märkimisväärsed libp2p eelised on see
  • Orbiidi saab brauseris hõlpsalt käivitada. See on jälle libp2p tõttu.
  • Orbiti võrk võimaldab paljudel eakaaslastel andmeid hostida ja jagada. libp2p võimaldab OrbitDB-l hõlpsalt sünkroonida andmebaaside värskendusi mitmelt eemalt, mis võimaldab paljudel eakaaslastel andmeid hostida. Seetõttu võimaldab Orbit luua võrgu, millega igaüks saab liituda, et hoida andmeid kättesaadavana, muutes kogu võrgu töökindlamaks.

RELV

3Boxi meeskond leidis, et GUN on huvitav ja uurime graafiku kontseptsiooni edasi. Projekti üks puudus on aga see, et dokumentatsioon on üsna räpane, mis raskendab DB kasutamise mõistmist.

SSB

Turvaline Scuttlebutt näib olevat pigem spetsiifiline hajutatud sotsiaalse võrgustiku rakendus kui andmebaas, kuhu rakendused luua. Ja tõepoolest, sotsiaalne võrgustik on see, mida meeskond ütleb, et nad ehitavad. SSB on lahe süsteem, kuid tundub, et see on piiratud ja paindmatu funktsionaalsus. Tõenäoliselt jätavad arendajad väga piiratud võimalustega võimaluse ehitada midagi väljaspool standardset ühe voo põhist sotsiaalvõrgustikku. Sellele on keeruline luua mitmekesine rakenduste komplekt.

3Box on üles ehitatud OrbitDB-le

3Box loob veeb3 jaoks sotsiaalseid profiile; ja otsustasime kõigil ülalnimetatud põhjustel OrbitDB peal üles ehitada.

Rakendus 3Box võimaldab kasutajatel luua oma Ethereumi aadressi jaoks sotsiaalse profiili, oma teabe üles laadida ja sisse logida.

Meie Profiilide API abil on Ethereumi kontode kohta teabe saamine ja seadmine lihtne, mis parandab pardalevõtmist, muudab andmete jagamise valutuks ja aitab arendajatel anda kasutajatele oluliste andmete üle kontrolli.

Arutelu jätkamine

3Box on aktiivne kogukond, keda huvitavad kõik levitatavad andmebaasid. Kui teil on mõtteid, tagasisidet, kogemusi, soovite panustada või soovite integreerida:

Liituge meie ebakõladega

Me hindame ja julgustame selle uurimistöö ümber toimuvat dialoogi. Meie eesmärk on muuta kogukonna liikmetele väärtuslikuks. Ärge kõhelge kommentaari jätmast, eriti kui me jätsime midagi vahele või oleme eksinud. Täname teid toetuse eest ja rõõmsat #buidlingut!