3Box-tutkimus: Hajautettujen tietokantojen GUN, OrbitDB ja Scuttlebutt vertailu

Samankaltaisuudet ja erot suosittujen hajautettujen tietokantaprotokollien välillä

Tämä viesti sisältää yhteenvedon 3Box-tiimin suorittamasta tutkimuksesta. Hahmottelemme yhtäläisyyksiä ja eroja suosittujen hajautettujen tietokantatekniikoiden välillä ja sanomme lopulta, miksi päätimme rakentaa OrbitDB: lle.

Yleiskatsaus suosituista hajautetuista tietokannoista

Web3: ssa näyttää olevan loputon tarjonta uusia ja jännittäviä tekniikoita, jotka väittävät ratkaisevan ongelmasi uusilla tavoilla. Suunnitellessamme 3Boxia, sosiaalista tietokantaa Ethereumin käyttäjille, tarvitsimme hajautettua tietokanta (DDB) -ratkaisua ketjun sisällön pitämiseen ja jakamiseen. Aloitimme tutkimalla joitain nykyään markkinoiden suosituimpia DDB-toteutuksia. Olemme erittäin innoissamme avoimen lähdekoodin havainnoista ja jaamme ne yhteisölle.

Tämä tutkimus antaa yleiskuvan kolmesta erilaisesta hajautetusta tietokantaprotokollasta, joita harkittiin 3Box-tutkimuksen ja -kehityksen aikana: GUN, OrbitDB ja Secure Scuttlebutt (SSB).

ASE

GUN on hajautettu, offline-ensimmäinen, kuvaajatietokanta. Se tarjoaa kehittäjille helpon käyttöliittymän luoda offline-tilassa toimivia sovelluksia, jotka synkronoidaan automaattisesti muihin solmuihin, kun sovellus on kytketty koordinaattoripalvelimeen. Kirjoittamishetkellä sillä on noin 3 kt kuukausittaisia ​​latauksia (npm) ja sillä on aktiivinen yhteisö.

OrbitDB

OrbitDB on vertaistietokantaprotokolla, samoin kuin protokollan toteutus. Se tarjoaa erityyppisiä tietokantoja ydinprotokollan päälle ja antaa käyttäjille mahdollisuuden toteuttaa omat tyyppinsä. Kirjoittamishetkellä sillä on noin 3 kt kuukausittaisia ​​latauksia (npm), ja sen ovat kehittäneet Haja-verkot.

Turvallinen Scuttlebutt (SSB)

SSB on vertaisverkkoloki, jota käytetään tietokantaan, identiteetin tarjoajana ja viestijärjestelmänä. Se tunnetaan ensisijaisesti käytöstä sosiaalisena verkostona; Patchwork on heidän suosituin asiakas. Heidän asiakkaansa Scuttlebot lataa tällä hetkellä noin 3 kt kuukausittain (npm). SSB: llä on melko aktiivinen käyttäjien yhteisö sosiaalisessa verkostossa.

Hajautetun tietokannan kerrokset

Tutkiessaan Gunia, OrbitDB: tä ja Scuttlebuttia huomasimme, että DDB-arkkitehtuureilla on muutamia yhtäläisyyksiä. Protokollia voidaan ajatella erillisissä kerroksissa:

  1. Verkottuminen: viestintäprotokolla, joka pitää solmut synkronoituna
  2. Tapahtumaloki: tietokannan perustietomalli
  3. Käyttäjän todennus: pääsynvalvontamenetelmä tietokantaan
  4. Käyttöliittymä: kehittäjille altistunut API

Tässä lopussa tässä osassa arvioidaan kolme DDB: tä näiden kerrosten mukaan, verkottumisesta alkaen.

1. Verkottuminen

Hajautettujen tietokantajärjestelmien on kommunikoitava luotettavasti päivityssolmujen välillä. Verkkokerros määrittelee kuinka DDB-solmut kommunikoivat ja sopivat näistä päivityksistä. Verkkokerros on erittäin tärkeä osa hajautettua tietokantaa, koska huono verkkokerros voi johtaa päivitysten unohtamiseen ja epäjohdonmukaiseen tilaan solmujen välillä.

Tarkastellaan kuinka kolme DDB: tä toteuttavat p2p-verkkoprotokollansa:

GUN toteuttaa heidän verkkopinonsa käyttämällä huipputeknistä webrtc- ja verkkojoukoteknologiaa. Tämä tarkoittaa, että selaimet voivat kommunikoida suoraan toistensa kanssa ilman minkään palvelimen tarvetta (paitsi webrtc-palvelin neuvottelemaan yhteyttä, mikä pätee kaikkiin selainpohjaisiin p2p-tekniikoihin).

SSB määrittelee ja toteuttaa mukautetun p2p-verkon. Sen avulla voit löytää paikallisen verkon ikäisensä, muodostaa yhteyden pubeihin (julkisiin solmuihin) ja löytää muiden käyttäjien mainostamia pubeja. Tämä antaa SSB: n toimia ilman, että luottaa keskuspalvelimen toimintaan.

OrbitDB käyttää libp2p: tä, joka on modulaarinen p2p-kirjasto, joka pystyy kommunikoimaan monien eri siirtojen kautta ja toimii monissa eri ympäristöissä. js-libp2p antaa selainasiakkaille mahdollisuuden kommunikoida verkkojoukopalvelimien, muiden selainasiakkaiden kanssa webrtc: n ja muun kautta. Sitä käytetään tällä hetkellä IPFS: ssä, pariteettisubstraatissa, ja sitä käytetään Eth2.0: ssa.

2. Valtionhallinto

Hajautettujen tietokantajärjestelmien on mallinnettava tiedot siten, että käyttäjät voivat taata tietojen eheyden. Tämä saavutetaan eri tavoin eri järjestelmillä. Yksi lähestymistapa on linkitetyn luettelon luominen tietoihin. Myös erityyppisiä CRDT-laitteita voidaan käyttää.

Yhdistettyä luetteloa käytetään perustietomallina kahdessa tutkittavassa hajautetussa tietokantajärjestelmässä. Jokainen linkki on hash edellisestä merkinnästä; ja jokainen merkintä on itsenäinen päivitys tietokantaan. Linkitettyjen luetteloiden toteuttamisessa järjestelmissä on kuitenkin eroja:

SSB käyttää vain liitettävää lokia, jota he kutsuvat syötteeksi. Niistä, jotka voimme löytää heidän asiakirjoistaan, näyttää siltä, ​​että tämä loki olettaa, että konflikteja ei ole. Tässä mallissa heidän oletetaan, että käyttäjä tietää aina syötteen viimeisimmän tilan. Tästä voi tulla ongelmallista, jos käyttäjällä on useita laitteita, jotka tarjoavat ristiriitaisia ​​päivityksiä, mikä voi tapahtua helposti, jos käyttäjä siirtyy offline-tilaan yhdellä laitteella, mutta ei toisella. Kerro meille, jos sinulla on enemmän käsitystä siitä, käsitteleekö SSB tätä jollain tavalla, koska emme tiedä.

OrbitDB käyttää CRDT-tiedostoja, jotka perustuvat vain lisäyslokiin, joka pystyy haarukoimaan ja yhdistämään tarjoamalla mahdollisen johdonmukaisuuden. Tämä tarkoittaa, että asiakkaat voivat siirtyä offline-tilaan ja luoda ristiriitaisia ​​päivityksiä, mutta kun he siirtyvät jälleen verkkoon, he synkronoidaan ja päätyvät samaan tilaan.

GUN käyttää tilapohjaista CRDT: tä, mikä tarkoittaa, että se ei käytä vain liitettävää lokia. Sen sijaan se viestii järjestelmän tilan milloin tahansa. Heillä on lyhyt kuvaus täällä.

3. Käyttäjän todennus

Tietokannat tarvitsevat tavan hallita käyttöoikeuksia siihen, kuka voi suorittaa erilaisia ​​toimintoja. Koska hajautetut tietokannat eivät voi luottaa keskuspalvelimeen hallita pääsynvalvontaoikeuksia, todentaminen voi sen sijaan luottaa julkisen avaimen salaukseen.

SSB: llä on identiteetin käsite, jossa syöte voi olla vain yhden identiteetin omistuksessa. Tunnus SSB: ssä on yksinkertaisesti epäsymmetrinen avainpari. Tämä sopii erinomaisesti tapauksiin, kuten Twitterin kaltaiset sosiaaliset verkostot, joissa käyttäjät lähettävät maailmanlaajuisia viestejä, mutta voivat olla vähemmän ihanteellisia kommenttiosiin jne.

OrbitDB: llä on pääsynhallintajärjestelmä, jossa voit määrittää joukon julkisia avaimia DB: n luomisessa. Tämän avulla sinulla on DB, jonka useat käyttäjät voivat päivittää kerralla. Tällä hetkellä julkisten avainten alkuperäistä sarjaa ei voida muuttaa, vaikkakin edistyneempää todennusjärjestelmää kehitetään.

GUN: llä on varmennusjärjestelmä, joka perustuu aliakseen ja salasanaan. Heidän esimerkkejään katsottuna näyttää siltä, ​​että ihmisille on mahdollista antaa dynaaminen pääsy, mutta heidän dokumentointinsa puuttuvat.

4. Rajapinta

Käytettävyys ja joustavuus ovat kehittäjien huolenaiheita tietokantaa valittaessa. Joten kysyimme itseltämme, kuinka helppoa käyttöliittymä tai sovellusliittymä on, jonka avulla kehittäjät voivat olla vuorovaikutuksessa tietokannan kanssa ja rakentaa sovelluksia sen päälle?

SSB: llä on konsepti laajennuksista, jotka tarjoavat erilaisia ​​“näkymiä” SSB-lokiin. Emme todellakaan löytäneet paljon dokumentaatiota näiden laajennusten kirjoittamisesta, mutta näyttää siltä, ​​että sinun on periaatteessa kirjoitettava kartta ja vähennettävä toimintoa.

OrbitDB tarjoaa erilaisia ​​vaihtoehtoja erityyppisille tietovarastoille, joilla on melko selkeä sovellusliittymä. Lokikaupat ovat melko samanlaisia ​​kuin SSB-syötteet, kun taas avain-arvokaupoissa on samanlainen käyttöliittymä kuin localStoragessa, joka on saatavana kaikissa tavanomaisissa selaimissa.

GUN käyttää kuvaajan käsitettä käyttöliittymänä manipuloidaksesi DB: tä. Periaatteessa saat solmun, voit sitten laittaa siihen tietoja tai kuunnella sen päivityksiä. Heidän hello-maailman esimerkki auttaa sinua ymmärtämään, miten se toimii.

Tietojen varmuuskopiointi ja ylläpito

Emme ole vielä keskustelleet siitä, missä käyttäjän tiedot varmuuskopioidaan näissä eri järjestelmissä. Tämä johtuu siitä, että hajautetut tietokannat tekevät hienoa työtä abstraktia varastointitiedot kehittäjille. Haluamme kuitenkin ehdottomasti arvioida näiden kolmen järjestelmän taustalla olevat tallennus- ja isäntäverkot tarkistaakseen saatavuuden, joustavuuden ja käytettävyyden. Käyttäjillesi olisi hirvittävää kokemusta menettää pääsy tietoihinsä, vaikka vain hetkeksi.

Joitakin kysymyksiä, joita kannattaa harkita: Entä jos käyttäjä kadottaa puhelimen tai tietokoneen, johon kaikki tiedot on tallennettu? Entä jos userA haluaa tietoja userB: stä, kun userA on offline-tilassa?

GUN antaa käyttäjille mahdollisuuden muodostaa yhteyden http-palvelimeen, joka isännöi kaikkia käyttäjän DB: n tietoja. Http-palvelin ajaa ase-DB: n ilmentymää ja toistaa kaikki muutokset asiakkailleen.

SSB: llä on käsite pubeista, jotka ovat yksinkertaisesti julkisia SSB-solmuja, jotka seuraavat monia käyttäjiä. Jos käyttäjät menettävät tietonsa, he voivat saada kopion takaisin pubista - jos se on edelleen saatavana. Huomaa: käyttäjien on nimenomaisesti pyydettävä pubin seuraamista.

OrbitDB: llä ei toisaalta ole omaperäistä käsitettä solmusta, joka varmuuskopioi tietoja. Sen sijaan se käyttää libp2p-pubsub-protokollaa löytääkseen vertaisia, jotka toistavat annetun DB-ilmentymän. Tämän avulla käyttäjän tietokanta voidaan varmuuskopioida aktiivisesti useisiin vertaisversioihin ilman, että käyttäjän tarvitsee muodostaa nimenomainen yhteys mihinkään niistä. Mielestämme se on aika siistiä.

johtopäätös

Kaikilla kolmella tietokannalla on yleisesti joitain samankaltaisuuksia, ja ne kaikki ovat vielä kehitystyön alkuvaiheessa. Tulevaisuudessa kuvittelemme, että jotkut näistä hankkeista saattavat alkaa siirtää joitain niiden tasoja. Esimerkiksi meidän mielestämme olisi todella hienoa, jos SSB toimisi libp2p: n päällä!

OrbitDB

OrbitDB

Tällä hetkellä näyttää siltä, ​​että OrbitDB tarjoaa joustavimman hajautetun tietokantajärjestelmän kolmesta tarkastellusta vaihtoehdosta.

  • Orbit-rajapinta tarjoaa laajimman mahdollisen käyttötavan. Orbitin tarjoamat monipuoliset tietovarastot tarjoavat valinnaisuuden ja joustavuuden monen tyyppisten sovellusten ja työkalujen rakentamiseen hyvin monenlaisille käyttötapoille.
  • Orbit-verkko on rakennettu tuttujen, hyvin ylläpidettyjen tekniikoiden päälle. libp2p ja ipfs tarjoavat vankan perustan Orbit-järjestelmälle, jonka monet Ethereum-yhteisön jäsenet todennäköisesti tuntevat. Muita merkittäviä etuja libp2p on, että se
  • Orbita voidaan käyttää helposti selaimessa. Tämä johtuu jälleen libp2p: stä.
  • Orbit-verkon avulla monet vertaiskäyttäjät voivat isännöidä ja jakaa tietoja. libp2p sallii OrbitDB: n helposti synkronoida useiden vertaisten tietokantapäivitykset, mikä sallii useiden vertaisten isännöidä tietoja. Tästä syystä Orbit mahdollistaa verkon luomisen, johon kuka tahansa voi liittyä tietojen pitämiseksi saatavilla, mikä tekee koko verkosta entistä tukevamman.

ASE

3Box-tiimi piti GUN: sta mielenkiintoista, ja tutkimme tarkemmin kuvaajakonseptia. Yksi projektin haittapuoli on kuitenkin se, että dokumentaatio on melko sotkuista, mikä vaikeuttaa ymmärrystä siitä, kuinka DB: tä voidaan käyttää.

SSB

Suojattu Scuttlebutt näyttää enemmän kuin erityinen hajautettu sosiaalisen verkoston sovellus kuin tietokanta, johon sovellukset voidaan rakentaa. Ja todellakin, sosiaalinen verkosto on mitä joukkue sanoo rakentavansa. SSB on viileä järjestelmä, mutta näyttää olevan rajoitettu ja joustamaton toiminnallisuudessa. Tämä jättää kehittäjien todennäköisesti yrittämään rakentaa mitä tahansa normaalin yksisyöttöisen sosiaalisen verkoston ulkopuolelle erittäin rajallisilla vaihtoehdoilla. Haaste on rakentaa sen päälle monipuolinen sovellusjoukko.

3Box on rakennettu OrbitDB: lle

3Box rakentaa sosiaalisia profiileja web3: lle; ja päätimme rakentaa OrbitDB: n päälle kaikista edellä mainituista syistä.

3Box-sovelluksen avulla käyttäjät voivat luoda sosiaalisen profiilin Ethereum-osoitteelleen, ladata tietonsa ja kirjautua sisään dappiin.

Profiles-sovellusliittymämme avulla on helppoa hankkia ja asettaa tietoja Ethereum-tileistä. Tämä parantaa koneeseen pääsyä, tekee tietojen jakamisesta vaivatonta ja auttaa kehittäjiä antamaan käyttäjille hallintaan tärkeät tiedot.

Jatketaan keskustelua

3Box on aktiivinen yhteisö, joka on kiinnostunut kaikista hajautetuista tietokannoista. Jos sinulla on ajatuksia, palautetta, kokemusta, haluat osallistua tai haluat integroitua:

Liity erimielisyyteen

Arvostamme ja rohkaisemme tämän tutkimuksen ympärillä olevaa vuoropuhelua. Tavoitteenamme on tehdä arvokasta yhteisön jäsenille. Älä epäröi jättää kommenttia, varsinkin jos meillä ei ole mitään tai olemme virheellisiä. Kiitos tuestasi ja onnellinen #buidling!