„3Box“ tyrimas: paskirstytų duomenų bazių GUN, „OrbitDB“ ir „Scuttlebutt“ palyginimas

Panašių ir skirtumų tarp populiarių paskirstytų duomenų bazių protokolų

Šiame įraše yra 3Box komandos atliktų tyrimų santrauka. Mes apibūdiname populiarių paskirstytų duomenų bazių technologijų panašumus ir skirtumus ir galiausiai pasakome, kodėl nusprendėme kurti OrbitDB.

Populiarių paskirstytų duomenų bazių apžvalga

Atrodo, kad „web3“ yra nesibaigiantis naujų ir įdomių technologijų, kurios teigia, kad jūsų problemos išspręstos naujais būdais, tiekimas. Kurdami „3Box“, „Ethereum“ vartotojų socialinę duomenų bazę, mums reikėjo paskirstytos duomenų bazės (DDB) sprendimo, kaip išlaikyti ir dalytis ne grandinės turiniu. Mes pradėjome tyrinėti keletą populiariausių DDB diegimų, esančių šiandien. Mes labai džiaugiamės galėdami atvirai naudotis savo atradimais ir pasidalyti jais su bendruomene.

Šis tyrimas pateiks trijų skirtingų paskirstytų duomenų bazių protokolų, kurie buvo svarstomi tiriant ir plėtojant „3Box“, apžvalgą: GUN, OrbitDB ir Secure Scuttlebutt (SSB).

GUNAS

GUN yra decentralizuota, visų neprisijungusi, grafikų duomenų bazė. Tai suteikia lengvą sąsają kūrėjams kurti programas, veikiančias neprisijungus ir kurios automatiškai sinchronizuojamos su kitais mazgais, kai programa prijungiama prie koordinuojančio serverio. Rašymo metu jis atsisiuntė maždaug 3K per mėnesį (npm) ir turi aktyvią bendruomenę.

„OrbitDB“

„OrbitDB“ yra lygiaverčių duomenų bazių protokolas, taip pat protokolo įgyvendinimas. Tai pagrindinio protokolo viršuje teikia įvairių tipų duomenų bazes ir leidžia vartotojams įgyvendinti savo tipus. Rašymo metu ją galima atsisiųsti maždaug 3K per mėnesį (npm) ir ją kuria „Haja“ tinklai.

Saugus „Scuttlebutt“ (SSB)

SSB yra lygiaverčių žurnalų parduotuvė, naudojama kaip duomenų bazė, tapatybės teikėjas ir pranešimų sistema. Visų pirma jis žinomas dėl to, kad yra naudojamas kaip socialinis tinklas; „Patchwork“ yra populiariausias jų klientas. Jų klientas „Scuttlebot“ šiuo metu atsisiunčia maždaug 3K per mėnesį (npm). SSB savo socialiniame tinkle turi gana aktyvią vartotojų bendruomenę.

Paskirstytos duomenų bazės sluoksniai

Tirdami „Gun“, „OrbitDB“ ir „Scuttlebutt“, pastebėjome, kad DDB architektūros turi keletą panašumų. Protokolus galima galvoti atskirais sluoksniais:

  1. Tinklas: ryšio protokolas, palaikantis mazgų sinchronizavimą
  2. Įvykių žurnalas: pagrindiniai duomenų bazės duomenų modeliai
  3. Vartotojo autentifikavimas: prieigos prie duomenų bazės valdymo metodas
  4. Sąsaja: api, paveikta kūrėjų

Šiame likusiame skyriuje bus vertinamos trys DDB pagal šiuos sluoksnius, pradedant nuo tinklo.

1. Tinklų kūrimas

Paskirstytos duomenų bazių sistemos turi patikimai perduoti atnaujinimus tarp kolegų mazgų. Tinklo sluoksnis apibrėžia, kaip DDB mazgai bendrauja ir susitaria dėl šių atnaujinimų. Tinklo sluoksnis yra labai svarbus bet kurios paskirstytos duomenų bazės aspektas, nes blogas tinklo sluoksnis gali praleisti atnaujinimus ir nenuoseklią būseną visuose mazguose.

Išnagrinėsime, kaip trys DDB įgyvendina savo P2P tinklo protokolus:

GUN įgyvendina savo tinklų paketą naudodamas moderniausias webrtc ir internetinių kišenių technologijas. Tai reiškia, kad naršyklės gali tiesiogiai susisiekti viena su kita, nereikalaudamos jokio serverio (išskyrus „webrtc“ serverį derėtis dėl ryšio, kuris galioja visoms naršyklėms skirtoms „P2P tech“).

SSB nustato ir įgyvendina pasirinktinį P2P tinklą. Tai leidžia jums atrasti bendraamžius vietiniame tinkle, prisijungti prie barų (viešų mazgų) ir atrasti kitų vartotojų reklamuojamus barus. Tai leidžia SSB veikti nepasikliaunant centrinio serverio veikimu ir veikimu.

„OrbitDB“ naudoja „libp2p“, kuri yra modulinė „P2p“ biblioteka, galinti susisiekti daugybe skirtingų pervežimų ir dirbti daugybėje skirtingų aplinkų. „js-libp2p“ leidžia naršyklės klientams susisiekti su žiniatinklio serveriais, su kitais naršyklės klientais per „webrtc“ ir dar daugiau. Šiuo metu jis naudojamas IPFS, paritetų substrate, ir bus naudojamas Eth2.0.

2. Valstybės valdymas

Paskirstytos duomenų bazių sistemos turi modeliuoti duomenis taip, kad vartotojai galėtų užtikrinti jų vientisumą. Skirtingos sistemos tai pasiekia skirtingais būdais. Vienas iš būdų yra susieto sąrašo su duomenimis sudarymas. Taip pat gali būti naudojami skirtingi CRDT tipai.

Susietas sąrašas yra naudojamas kaip pagrindinis duomenų modelis dviejose ištirtose duomenų bazių sistemose. Kiekviena nuoroda yra ankstesnio įrašo maiša; ir kiekvienas įrašas yra savarankiškas duomenų bazės atnaujinimas. Tačiau yra skirtumų, kaip susieti sąrašai įgyvendinami sistemose:

SSB naudoja tik pridėjimo žurnalą, kurį jie vadina informacijos santrauka. Iš to, ką galime rasti jų dokumentuose, panašu, kad šiame žurnale daroma prielaida, kad nėra konfliktų. Pagal šį modelį jie daro prielaidą, kad vartotojas visada žino naujausią savo sklaidos kanalą. Tai gali tapti problematiška, jei vartotojas turi kelis įrenginius, teikiančius prieštaringus atnaujinimus, kurie gali lengvai atsirasti, jei vartotojas neprisijungęs naudojasi vienu įrenginiu, bet ne kitu. Praneškite mums, jei turite daugiau įžvalgos apie tai, ar tam tikru būdu tvarko SSB, nes mes to nežinome.

„OrbitDB“ naudoja CRDT, kurie yra pagrįsti tik pridedamu žurnalu, kuris gali suformuoti ir sujungti, užtikrinant galutinį nuoseklumą. Tai reiškia, kad klientai gali prisijungti neprisijungę ir kurti prieštaringus naujinimus, tačiau vėl prisijungdami prie interneto, jie bus sinchronizuojami ir galiausiai turės tą pačią būseną.

GUN naudoja būseną pagrįstą CRDT, tai reiškia, kad jis nenaudoja tik pridedamo žurnalo. Vietoj to, jis bet kada perduoda sistemos būklę. Čia jie yra trumpai aprašyti.

3. Vartotojo autentifikavimas

Duomenų bazėms reikalingas būdas valdyti leidimus, kas gali atlikti įvairius veiksmus. Kadangi paskirstytos duomenų bazės negali remtis centriniu serveriu norėdamos valdyti prieigos kontrolės leidimus, autentifikavimas gali remtis viešojo rakto kriptografija.

SSB turi tapatumo koncepciją, kai kanalas gali priklausyti tik vienai tapatybei. Tapatybė SSB atveju yra tiesiog asimetrinė raktų pora. Tai puikiai tinka tais atvejais, kai panašūs yra „Twitter“ tipo socialiniai tinklai, kuriuose vartotojai skelbia globalius pranešimus, tačiau tai gali būti ne taip idealu komentarų skyriams ir pan.

„OrbitDB“ turi prieigos kontrolės sistemą, kurioje kurdami DB apibrėžiate viešųjų raktų rinkinį. Tai leidžia turėti DB, kurį keli vartotojai gali atnaujinti vienu metu. Šiuo metu nėra galimybės pakeisti pradinio viešųjų raktų rinkinio, nors dirbama modernesnė autentifikavimo sistema.

GUN turi autentifikavimo sistemą, pagrįstą slapyvardžiu ir slaptažodžiu. Pažvelgus į jų pavyzdžius atrodo, kad įmanoma dinamiškai suteikti žmonėms prieigą, tačiau jų dokumentų trūksta.

4. Sąsaja

Programuotojams, renkantis duomenų bazę, kyla rūpesčių dėl tinkamumo ir lankstumo. Taigi paklausėme savęs, kokia lengva yra sąsaja arba API, leidžianti kūrėjams sąveikauti su duomenų baze ir kurti programas ant jos?

SSB yra įskiepių, kurie pateikia skirtingus „vaizdus“ SSB žurnale, koncepcija. Negalėjome rasti daug dokumentų, kaip parašyti šiuos papildinius, bet atrodo, kad iš esmės turite parašyti žemėlapį ir sumažinti funkciją.

„OrbitDB“ siūlo skirtingas parinktis įvairių tipų duomenų saugykloms, turinčioms gana aiškią API. Žurnalai yra gana panašūs į SSB tiekimus, o svarbiausios vertės parduotuvės turi panašią sąsają su „localStorage“, kuri prieinama visose įprastose žiniatinklio naršyklėse.

GUN naudoja grafiko, kaip sąsajos, sąvoką manipuliuoti DB. Iš esmės jūs gaunate mazgą, tada galite įdėti į jį duomenis arba klausytis jo atnaujinimų. Jų sveiko pasaulio pavyzdys padės suprasti, kaip tai veikia.

Duomenų kopijavimas ir talpinimas

Mes dar neaptarėme, kur saugomi vartotojo duomenys šiose įvairiose sistemose. Taip yra todėl, kad paskirstytos duomenų bazės daro didžiulį darbą pašalindamos saugojimo rūpesčius nuo kūrėjų. Tačiau neabejotinai norime įvertinti šių trijų sistemų duomenų saugojimo ir talpinimo tinklus, kad patikrintume, ar jie yra prieinami, atsparūs ir tinkami naudoti. Jūsų vartotojams būtų baisi patirtis prarasti prieigą prie savo duomenų, net trumpam.

Keli klausimai, į kuriuos galite atsižvelgti: O kas, jei jūsų vartotojas pameta telefoną ar kompiuterį, kuriame saugomi visi duomenys? Ar kas, jei „userA“ nori gauti informacijos apie „userB“, kai „userA“ neprisijungęs?

GUN leidžia vartotojams prisijungti prie http serverio, kuriame talpinami visi duomenys vartotojo DB. „Http“ serveris paleidžia ginklo DB egzempliorių ir atkartoja visus pakeitimus iš savo klientų.

SSB turi barų, kurie yra tiesiog vieši SSB mazgai, kurie seka daugelį vartotojų, sąvoką. Jei vartotojai praranda duomenis, jie gali gauti kopiją atgal iš užeigos - jei ji vis dar prieinama. Pastaba: vartotojai turi aiškiai reikalauti, kad juos sektųsi bare.

Kita vertus, „OrbitDB“ neturi vietinės mazgo, kuris sukuria duomenis, sąvokos. Vietoj to, naudodamas pubsub protokolą libp2p, jis nustato bendraamžius, atkartojančius nurodytą DB egzempliorių. Tai leidžia vartotojo duomenų bazėje aktyviai kurti atsargines kopijas keliuose ankstesniuose egzemplioriuose, vartotojui nereikia tiesiogiai prisijungti prie bet kurio iš jų. Mes manome, kad tai gana tvarkinga.

Išvada

Apskritai trys duomenų bazės turi keletą panašumų ir visos jos dar tik kuriamos. Ateityje įsivaizduojame, kad kai kurie iš šių projektų gali pakeisti kai kuriuos jų sluoksnius. Pavyzdžiui, mes galvotume, kad būtų šaunu, jei SSB veiktų ant libp2p!

„OrbitDB“

„OrbitDB“

Šiuo metu atrodo, kad „OrbitDB“ teikia lanksčiausią paskirstytų duomenų bazių sistemą iš trijų nagrinėjamų variantų.

  • „Orbit“ sąsaja siūlo plačiausią galimo naudojimo atvejų spektrą. „Orbit“ siūlomų duomenų saugyklų įvairovė suteikia galimybę pasirinkti ir lanksčiai kurti įvairias programas ir įrankius labai įvairiems naudojimo atvejams.
  • „Orbit“ tinklas sukurtas remiantis pažįstamomis, gerai prižiūrimomis technologijomis. „libp2p“ ir „ipfs“ suteikia tvirtą pagrindą „Orbit“ sistemai, su kuria tikriausiai jau susipažino daugelis „Ethereum“ bendruomenės narių. Kiti pastebimi libp2p pranašumai yra tai, kad jis
  • Orbitą labai lengva paleisti naršyklėje. Tai vėlgi dėl libp2p.
  • „Orbit“ tinklas leidžia daug bendraamžių talpinti ir dalytis duomenimis. libp2p leidžia „OrbitDB“ lengvai sinchronizuoti duomenų bazių atnaujinimus iš kelių bendraamžių, o tai leidžia daugeliui bendraamžių kaupti duomenis. Dėl šios priežasties „Orbit“ leidžia sukurti tinklą, prie kurio gali prisijungti bet kas, kad būtų lengviau prieiti duomenis, kad visas tinklas būtų tvirtesnis.

GUNAS

„3Box“ komanda nustatė, kad GUN yra įdomus, ir mes toliau tyrinėsime grafiko sąvoką. Tačiau vienas projekto trūkumų yra tas, kad dokumentacija yra gana netvarkinga, todėl sunku suprasti, kaip galima naudoti DB.

SSB

Saugus „Scuttlebutt“ atrodo labiau kaip konkreti paskirstyta socialinio tinklo programa, o ne duomenų bazė, kurioje galima kurti programas. Ir iš tiesų, socialinis tinklas yra tai, ką komanda sako, kad jie kuria. SSB yra puiki sistema, tačiau atrodo, kad ji yra ribota ir nelanksti. Tai greičiausiai leis kūrėjams pabandyti sukurti bet ką už standartinio socialinio tinklo, kurio pagrindas yra vienas tiekimas, ribotų galimybių. Sukurti įvairų programų rinkinį bus sudėtinga.

„3Box“ yra pastatytas ant „OrbitDB“

„3Box“ kuria socialinius profilius „web3“; ir mes nusprendėme remtis „OrbitDB“ dėl visų aukščiau paminėtų priežasčių.

„3Box“ programa leidžia vartotojams susikurti savo „Ethereum“ adreso socialinį profilį, įkelti informaciją ir prisijungti prie „dapps“.

Mūsų profilių API leidžia lengvai gauti ir nustatyti informaciją apie „Ethereum“ abonementus. Tai pagerina įtraukimą, palengvina dalijimąsi duomenimis ir padeda kūrėjams suteikti vartotojams galimybę valdyti svarbius duomenis.

Tęsiame diskusiją

„3Box“ yra aktyvi bendruomenė, besidominti visomis dalimis platinamomis duomenų bazėmis. Jei turite minčių, atsiliepimų, patirties, norite prisidėti ar norite integruotis:

Prisijunkite prie mūsų nesantaikos

Mes tikrai norėtume įvertinti ir skatinti dialogą apie šį tyrimą. Mūsų tikslas - padaryti vertingą bendruomenės nariams. Nedvejodami palikite komentarą, ypač jei ką nors praleidome ar esame neteisingi. Dėkojame už palaikymą ir laimingą #buildling!