Laajan käyttäjäkunnan palveleminen luotettavalla, johdonmukaisella ja alhaisella latenssitiedolla on erittäin vaikea haaste mille tahansa taustatiimille. Teimme Ledgerissä strategisen valinnan isännöidä omia blockchain-ydindatapalvelujamme. Koska emme luota kolmansiin osapuoliin, voimme hallita asiakkaidemme tietoja itse ja varmistaa, että taustalla olevat prosessit noudattavat turvallisuusohjeitamme ja suorituskykykeskeisiä palvelutason tavoitteita (SLO).
Mutta tämä strategia tuo myös omat haasteensa.
Ensimmäinen haasteemme on siirtää nämä dataa tuottavat ydinpalvelut pois viileistä ja loistavista noSQL-työkaluista. Tässä artikkelissa sukeltaan siihen, miksi teimme tämän vaikean päätöksen, kuinka monimutkaisia kohtasimme ja mitä hyötyä saimme.
Tämän artikkelin tavoitteena on näyttää tekniset näkökohdat, jotka saivat meidät valitsemaan PostgreSQL:n uudeksi lohkoketjutietojen perustallennuskerroksemme.
Sukella syvälle Blockchain Dataan
Blockchain-datalla on useita keskeisiä ominaisuuksia.
Ensinnäkin se kasvaa jatkuvasti, eikä siitä koskaan poisteta mitään. Käytännössä, vaikka suurin osa lohkoketjusta on muuttumaton, lohkoketjun nuorin osa voi kuitenkin muuttua ratkaistavien konfliktien vuoksi. Itse asiassa, koska ketju on vertaisverkko, useita laillisia lohkoja voi esiintyä tilapäisesti rinnakkain. Yleensä vanhempi poistetaan, mikä johtaa niin kutsuttuun uudelleenjärjestelyyn. Lyhyesti sanottuna data on jaettu muuttumattoman kylmän hännän ja harvoin muuttuvan pään tilan kesken.
Ongelma, jota yritämme ratkaista, on se, että vaikka lohkoketjut sopivat erinomaisesti bysanttilaiseen vikasietoiseen dataan, ne eivät ole yhtä tehokkaita niiden leikkaamiseen ja pilkkomiseen monien akselien yli. Nimittäin tiliin vaikuttaneiden toimintojen luettelon saaminen on erittäin vaikeaa. Jopa tilin saldon saaminen lohkoketjussa, kuten bitcoinissa, on haaste, kun sinulla ei vielä ole tapahtumaluetteloa.
Näiden haasteiden voittamiseksi Ledger Explorer Services indeksoi koko lohkoketjun. Se on suuri, kriittinen ja suorituskykyherkkä palvelu, joka on täysin kirjoitettu Scalassa, jossa käytetään kissojen vaikutus korkean suorituskyvyn suoritusaika. Meillä on yli 10 95 rps bitcoinilla, samalla kun pidämme p100-viiveen alle XNUMX ms. Olemme myös rekrytoimassa 😊.
Hieman historiaa
Tarinamme alussa, paljon ennen kuin tulin yritykseen, Ledger-tietopalvelukerrosta käsitteli sulautettu Neo4j-tietokanta. Jokainen tarjoilulaatikko indeksoi omat tietonsa ja toimitti ne paikallisesti, mikä aiheutti paljon ongelmia.
Tietojen yhdenmukaisuutta esiintymien välillä ei taattu, ja indeksoitavan tilan koko, yhdistettynä neo4j-levyn ja RAM-käyttöön, ei ollut skaalattavissa. Tämä ongelma vain paheni yrityksen kasvaessa, mikä tekee uusien tapausten synnyttämisestä entistä haastavampaa.
Cassandra valittiin sitten tämän uuden asennuksen päätekijäksi: se on klusteroitu, horisontaalisesti skaalautuva tietokanta, joka on CAP-lauseen AP-puolella. Se ratkaisee tiedon jakamiseen liittyvät ongelmat ja mahdollistaa selkeän eron indeksoinnin, blockchain-tietoisen komponentin ja päättömät API-palvelimet.
Mutta mitä järkeä on saada koko historiallinen tila saatavilla, jos emme koskaan aio lukea siitä?
Käyttötapauksemme osalta raakahistoriatietoja tarvitaan harvoin, koska käyttäjätilin tila voidaan koota niistä. Tämä sai meidät haastamaan olemassa olevan tiedontallennusratkaisun, joka perustuu Cassandra-hajautettuun tietokantaan.
Tietojen määrä, joka meidän on tallennettava lohkoketjua kohden, vaikka se on teratavun alueella, ei ole sitä, mitä voidaan kutsua "suureksi dataksi". Lisäksi se osa, jota käytetään vastaamaan useimpiin kyselyihin (alias kuuma polku) on vielä pienempi. Nykyään löytyy helposti hyödykelaitteistopalvelimia, joissa on yli 16 Tt NVMe SSD -tallennustilaa. Vertikaalinen skaalaus on erittäin tehokas työkalu, ja myös relaatiotietokanta on.
Lopuksi, suurin ongelma, joka meillä oli nykyisessä cassandra-asetuksissa, ei ollut tuhlaava tallennusmalli tai huonosti sovitettu datan käyttötapa, vaan kehittäjäystävällisyyden puute. Uuden datapohjaisen ominaisuuden kehittäminen cassandralle on osoittautunut tarpeettoman aikaa vieväksi. Pyrimme toteuttamaan jokaisen uuden akselin, josta meidän on toimitettava tietoja.
Kun otetaan huomioon tiimimme asiantuntemus tietojen mallintamistaidoista ja SQL-taidot, PostgreSQL oli täydellinen ehdokas. Tämä ratkaisu on taistelutestattu, kestävä, helppo laajentaa, joten se on ihanteellinen valinta.
Miksi valitsimme SQL:n NoSQL:n sijaan:
- Lukee / Kirjoittaa saldot: lohkoketjun datan käyttötapaus on ollut vahvasti vinossa lukemisen sijaan kirjoittamisen (lohkoketju kirjoittaa hyvin vähän dataa erittäin kohtuullisella nopeudella, jopa Polygonin kaltaiselle lohkoketjulle). Cassandralla on kyky absorboida erittäin suuri määrä kirjoituksia – lukupolku itse asiassa on kauemmin kuin kirjoituspolku.
- Indeksoinnin tuki: Indeksit ovat DBMS:n keskeinen osa, joka vastaa kyselyihin ja uusiin liiketoimintatapauksiin tai mahdollisuuksiin. Cassandralla on rajoitettu tuki indeksoinnille. Indeksit ovat tehokkaita vain, jos kyselyssä on jo määritetty tapa rajoittaa osiota, jossa kysely suoritetaan. Maksamme täällä kustannukset mielivaltaisesti jaettu tietokanta. PostgreSQL-tuki indekseille on tehokasta, laajennettavissa olevaa ja huippuluokkaa.
- Aggregointituki: Sama tapaus yhdistämiselle; koska Cassandra ei salli usean osion yhdistämistä eikä siedä GROUP BY -lausetta kyselykielessään, sen tuki on tavallaan puutteellista. PostgreSQL ehdottaa laajaa aggregointitukea jopa eksoottisille tietotyypeille, kuten alueille ja jsonb-blobeille.
- Tietojen mallinnus: Cassandra on hyvin, hyvin rajallinen siinä, miten datamallinnus on mahdollista. Taulukko on luotava lähes jokaiselle pyynnölle, johon haluat vastata, ja tiedot on denormalisoitava suuriksi riveiksi (käyttäen leveä pylväskauppa osa C*:sta ja myös se tosiasia, että kirjoittajat ovat halpoja). PostgreSQL antaa meille mahdollisuuden hyödyntää lohkoketjun relaatiota (puhelut, tapahtumat, lohkot) ja säästää levytilaa, mikä rohkaisee tietojen uudelleenkäyttöä.
- Ad-hoc-kyselyt ja auditointi: Kyky käyttää SQL:n täyttä standardia ja tehdä mielivaltaisia kyselyitä tarkoittaa, että voimme tutkia ja etsiä mahdollisia vikojen perimmäisiä syitä tai meillä on tutkivaa tietoa tulevia käyttötapauksia varten. Voimme todella käyttää tietokantaa interaktiivisena ja älykkäänä työkaluna tyhmän tallennustilan sijaan. Näin Cassandrassa ilman laajaa ja kallista analytiikan laskentaklusteria, kuten Presto, Spark jne. (ja koska käytämme metallipalvelimia, meillä ei ole pääsyä helposti synnyttäviin hajautettuihin data-analyysityökaluihin, kuten EMR).
- tallennustilan käyttö: Cassandra olettaa, että varastointi on erittäin halpaa ja että klusteria voidaan helposti laajentaa uusilla koneilla. Se tarkoittaa sitä kaikki indeksien ja aggregaatioiden rajoitukset on maksettava varastoinnin yhteydessä. Ei globaalisti tehokkaita indeksejä ja liitostuki tarkoittaa, että meidän on denormalisoitava ja tallennettava kopio koko taulukosta jokaiselle akselille, jota haluamme kysyä. PostgreSQL säästää meille teratavuja tallennustilaa.
- Johdonmukaisuus: Koska Cassandra on hajautettu, AP-suuntautunut tietokanta (viestintä tapahtuu juoruilla solmujen välillä), johdonmukaisuus on mahdollista vain kirjoitusten suhteen. Voit säätää kunkin lauseen johdonmukaisuuskäytäntöä sekä lukemista että kirjoitusta varten, mutta tämän tietokannan tavoitteena ei koskaan ollut vahva johdonmukaisuus. PostgreSQL:llä on vahva tarina kriittisiin tehtäviin käytetystä, ja se on erittäin joustava. Keskittäminen tarkoittaa myös sitä, että kirjoituspolussa ei ole verkkoa.
- Tapahtumat ja MVCC:
- Tapahtumat: Cassandra tukee vain kevyet kaupat DML-kyselyissä. Joitakin eriä voidaan käyttää (telakka), mutta siinä on lukuisia varoituksia, nimittäin se, että rivien on oltava samassa palvelimessa (= osiossa), jotta niillä ei olisi kauhistuttavaa suorituskykyä.
- MVCC: Cassandra tukee rivien aikaleimausta, mutta täyttä MVCC:tä ei taata. Tiivistys voi poistaa vanhentuneet tiedot, eikä C*:lle voi mitenkään kertoa, ettei sen pitäisi (kuten esimerkiksi PG-tapahtuman yhteydessä).
- PostgreSQL tukee vahvaa MVCC-mallia, joka varmistaa yhtenäisen lukupolun käyttäjillemme.
- työkalut: PostgreSQL:llä on monia muita työkaluja, joita käytetään laajalti tietokannan helppokäyttöiseen käyttöön. Lisäksi työkalu, kuten lentotie varmistaa, että ylläpidämme tietokantaskeeman vahvaa versiointia. Integroimme sen jo onnistuneesti koodikantaamme. Cassandrassa ei ole vastaavaa kypsyystasoa.
- Vaakasuuntainen skaalautuvuus: Tämä on Cassandran tärkein myyntivaltti. Lisää vain koneita tietojesi laajentuessa. PostgreSQL:lle ei ole vastinetta, koska jakaminen ja osiointi on tehtävä manuaalisesti.
Miten aiomme skaalata
Kuten olemme nähneet, ainoa haittapuoli Postgres-asennuksen käytössä on skaalaus sekä lukujen että tallennusten suhteen. Mitä voimme tehdä tämän rajoituksen voittamiseksi?
Ensimmäinen tehokas työkalumme on erottaa jokainen tukemamme protokolla tai lohkoketju omaan tietokantaansa, koska se voidaan siten skaalata asianmukaisesti volyymin ja liikenteen mukaan. Segmentointi liiketoiminta-alueen mukaan varmistaa ensimmäisen skaalauskerroksen.
Viemällä tätä käsitettä pidemmälle voimme myös segmentoida kylmät historialliset tiedot ajalliseen osioon. Postgresin uusimmat versiot ovat parantaneet huomattavasti osioitujen taulukoiden käytettävyyttä, mikä mahdollistaa tiedon siirtämisen saumattomasti useiden koneiden välillä. Voisimme esimerkiksi käyttää halvempia, pienemmällä laskentateholla varustettuja koneita isännöimään suurimman osan historiallisista tiedoista, samalla kun käyttäjiä palvelevat RAM-muistiin pinotut huijarit isännöimme koottuja taulukoita ja käyttäjän uusimpia toimintoja.
Tämä lähestymistapa toimii erittäin hyvin käyttötapauksessamme, koska historiallisessa tallennustilassa ei ole osioiden välisiä vierasavaimia (kaikki on viime kädessä liitetty lohkoon). Pääpalvelimen näkökulmasta historiallisiin tietoihin voitaisiin jopa päästä läpinäkyvästi osioinnin ja postgres_fdw-laajennuksen avulla.
Auttaaksemme tämän kaiken toteuttamista olemme tutkineet myös TimescaleDB-laajennusta. Tämä laajennus lisää monia toimintoja perustason postgres-järjestelmiin, ja useimmat niistä sopivat täydellisesti käyttötapauksillemme:
- Taulukoiden automaattinen osiointi aikakaltaiseen sarakkeeseen perustuen (tapauksessamme mukautamme sitä ottamalla lohkoketjun korkeuden referenssiksi).
- Automaattinen, tietotyyppitietoinen ja sarakepohjainen vanhempien osien pakkaus. Tämä varmistaa lähes täydellisen pakkaussuhteen käyttämällä huippuluokan algoritmeja hyvin samankaltaisille tiedoille.
- Tehokas aikaryhmäpohjainen aggregointi historiallisten saldojen ja markkinatietokaavioiden laskemiseksi helposti.
Olemme vasta alkuvaiheessa tallennuskokeilua, ja tämä avaa monia käyttötapauksia. Todistus käsitteistä käyttämällä pientä datamäärää (~10 2 lohkoa ethereumin pääverkossa, eli noin XNUMX päivää dataa) levytila väheni jopa 40 %.
Kuten olemme nähneet, datamäärä ei ole ongelma, mikäli käytämme oikeaa strategiaa. Mutta kuinka skaalautua käyttäjäkuntamme koon mukaan?
Meillä on jo tässä hieno etu: indeksoimme koko lohkoketjun tiedot. Siten tarvittava tallennustila ei kasva kuten käyttäjien määrä, vaan kuten lohkoketjun kokonaiskoko. Tallennus- ja lukuoptimoinnit ovat resoluutioltaan täysin ortogonaalisia.
Tämä kokoonpano yhdistettynä erittäin alhaiseen kirjoitustarpeeseen suhteessa käytettävään lukumäärään on unelma-asetus luokittelun johtaja-seuraaja-kopiomallille. Suorituskyvyn ja suorituskyvyn parantamiseksi voimme myös sijoittaa postgres-lukukopiot samoihin koneisiin kuin API-palvelimet ja hyödyntää UNIX-verkkoalueen pistorasioita verkon edestakaisen matkan ohittamiseen.
Tässä on esimerkki tietojen replikointistrategiasta, jonka avulla voimme skaalata lukujamme. Vaaleanharmaat laatikot edustavat yksittäisiä palvelimia. Näemme tässä, että API podit sijaitsevat suoraan yhdessä kuumimpien tietojen replikoiden kanssa, jotta tallennustilan ja käyttäjien välinen siirtoaika on mahdollisimman pieni. Edellä kuvattuja arkistoinstanssia ei esitetä, jotta ne eivät mutkistaisi skeemaa liikaa.
Päätelmät
Pitkäaikaisena Cassandra-käyttäjänä haluan korostaa, että se on suunnittelultaan loistava tietokanta, joka sopii monenlaisiin sovelluksiin. Valitettavasti Ledgerissä tehty valinta käyttää sitä tehtiin datan käyttötapauksessa, joka ei koskaan toteutunut.
Tiimimme tuottavuuteen vaikutti, ja odotellessamme haasteita, jotka meidän on ratkaistava, päätimme purkaa luodin ja olla langettamatta uppoaneiden kustannusten harhaan.
Monissa tapauksissa tietosi eivät ole big dataa. Tiedonjakelun hallinta ei ole useimmissa tapauksissa vaikea tehtävä, ja täysimittaisen hajautetun tietokannan kompromissit on todellakin harkittava huolellisesti. Tärkeintä on kehittäjäkokemus, sillä se vapauttaa arvokasta aikaa kaiken muun rakentamiseen.Tämä on todellinen käyttötapaus, johon meidän on panostettava voimakkaasti.
- SEO-pohjainen sisällön ja PR-jakelu. Vahvista jo tänään.
- PlatoAiStream. Web3 Data Intelligence. Tietoa laajennettu. Pääsy tästä.
- Tulevaisuuden lyöminen Adryenn Ashley. Pääsy tästä.
- Osta ja myy osakkeita PRE-IPO-yhtiöissä PREIPO®:lla. Pääsy tästä.
- Lähde: https://www.ledger.com/blog/serving-web3-at-web2-scale
- :on
- :On
- :ei
- $ YLÖS
- 10
- 10K
- 20
- a
- kyky
- pystyy
- pääsy
- Accessed
- Tili
- poikki
- todella
- sopeuttaa
- lisätä
- Lisää
- noudattaa
- Etu
- aggregaatti
- algoritmit
- Kaikki
- sallia
- mahdollistaa
- jo
- Myös
- Vaikka
- määrä
- an
- analyysi
- Analytics
- ja
- vastaus
- Kaikki
- mitään
- api
- sovellukset
- sovellettu
- lähestymistapa
- asianmukaisesti
- Archive
- OVAT
- noin
- Art
- artikkeli
- AS
- ulkomuoto
- näkökohdat
- olettamus
- At
- saatavissa
- tietoinen
- pois
- AKSELIT
- Akseli
- taustaosa
- Balance
- saldot
- pohja
- perustua
- Lähtötilanne
- BE
- koska
- ollut
- ennen
- Alku
- Behemotit
- ovat
- Hyödyt
- välillä
- Iso
- Big Data
- Bitti
- Bitcoin
- Tukkia
- blockchain
- lohkoketjutiedot
- blockchains
- Blocks
- sekä
- Laatikko
- laatikot
- Tuo
- Vika
- rakentaa
- liiketoiminta
- mutta
- by
- soittaa
- Puhelut
- CAN
- ehdokkaat
- korkki
- huolellisesti
- tapaus
- tapauksissa
- Aiheuttaa
- aiheutti
- keskitetty
- ketju
- haaste
- haasteet
- haastava
- muuttaa
- muuttuviin
- halpa
- halvempaa
- halvempia koneita
- valinta
- Valita
- valitsi
- valittu
- selkeä
- Cluster
- koodi
- koodikanta
- kylmä
- Sarake
- yhdistetty
- hyödyke
- Viestintä
- yritys
- monimutkaisuus
- komponentti
- Laskea
- käsite
- käsitteet
- harkinta
- harkittu
- johdonmukainen
- Viileä
- Ydin
- Hinta
- voisi
- luotu
- kriittinen
- Nykyinen
- tiedot
- tietojen analysointi
- tietojen jakaminen
- tietovarasto
- tietokanta
- päivää
- päätös
- on kuvattu
- Malli
- Kehittäjä
- kehittämällä
- vaikea
- suoraan
- lika
- jaettu
- jakelu
- jaettu
- do
- ei
- tekee
- verkkotunnuksen
- Dont
- alapuoli
- unelma
- kuljettaja
- kaksi
- e
- kukin
- helposti
- helppo
- reuna
- Tehokas
- tehokas
- muu
- upotettu
- painottaa
- mahdollistaa
- rohkaiseva
- parantaa
- varmistaa
- varmistaa
- varmistamalla
- Vastaava
- jne.
- ethereum
- ETHEREUM MAINNET
- Jopa
- lopullinen
- EVER
- Joka
- kaikki
- esimerkki
- olemassa
- Eksoottinen
- laajenee
- experience
- asiantuntemus
- tutkia
- tutkimusmatkailija
- laajentaa
- laajentaminen
- laaja
- tosiasia
- Pudota
- Ominaisuus
- Ominaisuudet
- harvat
- Löytää
- Etunimi
- sovittaa
- varten
- ulkomainen
- Eteenpäin
- ystävällisyys
- alkaen
- koko
- täysimittainen
- täysin
- toiminnallisuudet
- edelleen
- tulevaisuutta
- saada
- tietty
- Maailmanlaajuisesti
- tavoite
- menee
- kaaviot
- harmaa
- suuri
- Ryhmä
- Kasvaa
- Kasvava
- taattu
- suuntaviivat
- HAD
- Kova
- Tarvikkeet
- Olla
- ottaa
- pää
- raskaasti
- korkeus
- auttaa
- tätä
- Korkea
- erittäin
- historiallinen
- isäntä
- KUUMA
- kuumin
- Miten
- Miten
- Kuitenkin
- HTML
- HTTPS
- i
- ihanteellinen
- if
- muuttumaton
- vaikutti
- täytäntöönpanosta
- parani
- in
- yhä useammin
- indeksi
- Indeksit
- esimerkki
- integroitu
- vuorovaikutteinen
- tulee
- Investoida
- osallistuva
- kysymys
- kysymykset
- IT
- SEN
- yhdistää
- liittyi
- jpg
- vain
- pito
- avain
- avaimet
- laji
- Lack
- Kieli
- suuri
- Viive
- uusin
- kerros
- Led
- pääkirja
- laillinen
- vähemmän
- Taso
- Vaikutusvalta
- valo
- kevyt
- pitää
- rajoitus
- rajoitukset
- rajallinen
- Lista
- vähän
- paikallisesti
- Pitkät
- Katsoin
- näköinen
- Erä
- Matala
- Koneet
- tehty
- tärkein
- mainnet
- ylläpitää
- Enemmistö
- Tekeminen
- hoitaa
- toimitusjohtaja
- käsin
- monet
- markkinat
- Markkinatiedot
- kypsyys
- max-width
- Saattaa..
- välineet
- metalli-
- vaeltaa
- minimi
- tehtävät
- malli
- mallintaminen
- lisää
- Lisäksi
- eniten
- liikkua
- paljon
- täytyy
- nimittäin
- lähes
- Tarve
- tarvitaan
- tarpeet
- Eikä
- verkko
- ei ikinä
- Uusi
- mukava
- Nro
- solmut
- ei mitään
- numero
- useat
- tavoitteet
- of
- on
- ONE
- vain
- käyttää
- Operations
- Mahdollisuudet
- or
- tilata
- meidän
- itse
- yli
- Voittaa
- oma
- maksettu
- osa
- osapuolet
- polku
- Kuvio
- Maksaa
- vertainen
- peer to peer
- täydellinen
- suorituskyky
- näkökulma
- Paikka
- suunnitelma
- Platon
- Platonin tietotieto
- PlatonData
- palot
- Kohta
- politiikka
- Monikulmio
- mahdollinen
- PostgreSQL
- mahdollinen
- teho
- voimakas
- harjoitusta.
- Ongelma
- Prosessit
- tuottavuus
- todiste
- osa
- ehdottaa
- protokolla
- todistettu
- toimittaa
- mikäli
- laittaa
- kyselyt
- RAM
- alue
- hinta
- pikemminkin
- suhde
- raaka
- Lue
- todellinen
- ihan oikeesti
- kohtuullinen
- vähentäminen
- suhteen
- liittyvä
- luotettava
- uudelleenjärjestely
- vastaus
- replikointi
- edustaa
- edustettuina
- pyyntö
- kimmoisa
- päätöslauselma
- ratkaistu
- Saatu ja
- uudelleenkäyttö
- oikein
- luja
- juuri
- kierros
- RIVI
- ajaa
- juoksu
- sama
- Scala
- skaalautuva
- Asteikko
- skaalaus
- saumattomasti
- Haku
- turvallisuus
- nähdä
- nähneet
- segmentti
- jakautuminen
- myynti
- myyntivaltti
- palvelu
- Palvelut
- palvelevat
- setti
- setup
- useat
- sharding
- jakaminen
- Lyhyt
- näyttää
- puoli
- samankaltainen
- koska
- single
- Koko
- taitoja
- pieni
- pienempiä
- fiksu
- So
- ratkaisu
- SOLVE
- Ratkaisee
- jonkin verran
- Tila
- Kipinä
- Kutea
- SQL
- standardi
- Osavaltio
- Lausunto
- Levytila
- verkkokaupasta
- Tarina
- Strateginen
- Strategia
- vahva
- voimakkaasti
- Onnistuneesti
- tuki
- Tukee
- taulukko
- ottaa
- ottaen
- Tehtävä
- joukkue-
- Tekninen
- kertoa
- ehdot
- kuin
- että
- -
- Lohko
- Valtion
- heidän
- sitten
- Siellä.
- Nämä
- ne
- kolmas
- kolmannet osapuolet
- tätä
- suoritusteho
- aika
- että
- liian
- työkalu
- työkalut
- Yhteensä
- TÄYSIN
- liikenne
- kauppa
- Liiketoimet
- siirtää
- avoimesti
- tyyppi
- tyypit
- Lopulta
- varten
- taustalla oleva
- valitettavasti
- unix
- poistoista
- turhaan
- us
- käytettävyys
- Käyttö
- käyttää
- käyttölaukku
- käytetty
- käyttäjä
- Käyttäjät
- käyttämällä
- yleensä
- arvokas
- lajike
- pystysuora
- hyvin
- tilavuus
- haluta
- oli
- Tapa..
- we
- Web2
- Web3
- HYVIN
- Mitä
- Mikä on
- kun
- joka
- vaikka
- Kun taas
- koko
- miksi
- leveä
- laajalti
- tulee
- with
- ilman
- toimii
- kirjoittaa
- kirjallinen
- te
- nuorin
- Sinun
- zephyrnet