Skip to content

NoSQL-tietomallinnus selitettynä

Mallinnusmallit dokumentti-, avain-arvo-, leveäsarakkeisille, graafi- ja vektoritietokannoille — milloin upottaa, viitata, denormalisoida tai ryhmitellä.

NoSQL-tietokannat vaihtavat kiinteät skeemat ja liitokset vaakasuoraan skaalautuvuuteen. Jokainen tietokantaperhe mallintaa suhteet omalla tavallaan, joten rakenteen sanelee käyttömalli — ei normaalimuoto.

Viitetaulukko · 28 merkintää
28 of 28 rows
Dokumentti
Sisäkkäiset alidokumentit elävät yhden vanhemman dokumentin sisällä erillisten taulujen sijaan.Yhteensä luettavat yksi-muutamaan-suhteet. Tilaus rivieineen. Käyttäjä kolmella osoitteella.
Tallenna viiteavain, ei dataa. Ratkaise se toisella haulla tai $lookup-operaatiolla.Suuret, jaetut tai itsenäisesti päivittyvät alientiteetit. Monta-moneen-linkit kokoelmien välillä.
Vanhempi upottaa lyhyen taulukon lapsia; koko joukko mahtuu ja latautuu yhtenä dokumenttina.Muutama puhelinnumero tai asetus profiilissa. Yksi haku palauttaa vanhemman ja lapset.
Lapset elävät omassa kokoelmassaan; jokainen lapsi kantaa vanhemman id:tä, tai vanhempi pitää rajattua id-taulukkoa.Liian suuret tai liian itsenäiset joukot upotettavaksi. Hae lapset vanhemman id:llä.
Lapsi tallentaa vanhemman id:n; vanhempi ei koskaan listaa lapsia, koska joukko on rajoittamaton.Isäntään tai käyttäjään sidotut tapahtumat, lokit tai äänet. Suodata lapset vanhemman id:llä ja sivuta.
Eri entiteettityyppien dokumentit jakavat yhden kokoelman ja erotetaan toisistaan tyyppikentällä.Kommentit tai ilmoitukset, jotka kiinnittyvät monenlaisiin vanhempiin ja haetaan yhdellä tavalla.
Muutama ääripäiden entiteetti erotetaan yhteisestä muodosta, jottei niiden koko tai liikenne vääristä loppua.Julkisuuden henkilöiden tilit, joiden seuraajalistat tai laskurit kasvaisivat normaalidokumentin ohi.
Jokainen revisio on uusi dokumentti samalla id:llä ja kasvavalla versionumerolla; kysely poimii viimeisimmän.Auditointijäljet ja muokkaushistoria, joissa vanhat revisiot pysyvät haettavina.
Johdetut arvot lasketaan kirjoitusajassa ja tallennetaan tiivistämänsä datan viereen.Summat, arviointiasteet ja top-N:t, jotka muuten ajaisivat koosteen jokaisella luennalla.
Avain-arvo ja leveäsarakkeinen
DynamoDB-suunnittelutermi: monta entiteettityyppiä tiivistetään yhteen tauluun ylikuormitetuilla osio- ja järjestysavaimilla.Nouda heterogeenisiä rivejä yhdellä kyselyllä ilman liitosta.
Yksi avainattribuutti palvelee monta entiteettityyppiä, merkittynä etuliitteillä kuten USER# tai ORDER#.Yksittäistaulusuunnittelut. Ryhmittele liittyvät rivit yhden osion alle ja nouda ne yhdellä kyselyllä.
Osioavain hajottaa rivit solmuille; järjestysavain järjestää kunkin osion.Cassandra ja DynamoDB. Aluehaut, järjestyksessä olevat lokit, hierarkkiset yhdistetyt avaimet.
Pino useita attribuutteja yhteen eroteltuun järjestysavaimeen — country#region#city — jolloin etuliitetäsmäys kulkee hierarkiassa alaspäin.Hierarkiat ja monitasosuodattimet. Yksi järjestetty aluekysely korvaa monta indeksoitua hakua.
Ryhmittele tapahtumat kiinteisiin ikkunoihin — tunti, päivä, kuukausi — omiin osioihin tai tauluihin.Mittarit, lokit ja IoT-telemetria. Rajoittaa osion kokoa ja vanhentaa kylmän datan.
Monista luentopainotteiset kentät tietueiden kesken, jottei kysely koskaan jahtaa toista hakua.Luentopainotteiset kuormat, joissa lopullinen eheys on siedettävä ja tallennustila halpaa.
Toissijainen indeksi, joka on rakennettu attribuutista, jota vain osa riveistä kantaa; ilman sitä olevat rivit eivät koskaan päädy indeksiin.Vaihtoehtoiset hakupolut. Löydä harva osajoukko — avoimet tilaukset, lähettämättömät rivit — ilman täyttä läpikäyntiä.
Kirjoita ensin täsmälliset kyselyt; taulun rakenne johdetaan niistä, ei entiteeteistä tai normaalimuodosta.Cassandra- ja DynamoDB-skeematyö. Yksi taulu per kyselyperhe; datamalli kopioi kysymyksen.
Kyselymän täytyy osua rinnakkain moneen osioon tai solmuun, koska mikään avain ei vastaa kysymykseen.Haju, joka suunnitellaan pois, ei tavoite. Avainna taulu uudelleen, jotta yleisin kysely osuu yhteen osioon.
Kopiot työnnetään kunkin lukijan näkymään kirjoitusajassa, tai kerätään ja yhdistetään lukuaikana.Syötteet ja aikajanat. Kirjoitusajainen fan-out pienille yleisöille, lukuaikainen valtaville.
Valmiiksi rakennettu kyselytulos tallennettuna omana taulunaan, pidettynä ajan tasalla pohjan muuttuessa.Vaihtoehtoiset lukumuodot yhden kirjoituspolun päällä. Palvelee kyselyjä, joihin pohjataulu ei vastaa.
Graafi
Jokainen kaari on rivi tai tuple, joka osoittaa lähdesolmusta kohdesolmuun.Graafi- ja ominaisuustietokannat. Kaverin kaverin haut, reititys, suositukset.
Jokainen suhde on dokumentti omassa kokoelmassaan, kantaen from- ja to-id:t sekä linkin attribuutit.Graafit dokumenttitietokannoissa. Attribuutit itse linkissä — arvio, rooli, aikaleima.
Jokainen solmu tallentaa vasemman ja oikean laskurin syvyyssuuntaisesta läpikäynnistä; alipuu elää vanhempansa alueella.Luentopainotteiset puut. Yksi BETWEEN-kysely palauttaa alipuun; lisäykset numerovat läpikäynnin uudelleen.
Oma taulu tallentaa jokaisen esivanhema-jälkeläinen-parin, mukaan lukien kunkin solmun syvyydellä nolla.Koko haaran kyselyt millä tahansa syvyydellä. Yksinkertaiset liitokset, maksettuna tallennustilalla ja ylläpidolla.
Ominaisuusgraafit kiinnittävät avain-arvo-attribuutit solmuihin ja kaariin; RDF esittää kaiken subjekti-predikaatti-objekti-tripelöinä.Ominaisuusgraafit rikkaaseen läpikäyntiin (Neo4j); RDF linkitettyyn avoimeen dataan ja ontologiavaihtoon.
Vektori
Suuriulotteinen liukulukutaulukko istuu metadatan vieressä. ANN-indeksi löytää lähimmät naapurit.Semanttinen haku, RAG-nouto, suositukset ja samankaltaisuus jäsentymättömän sisällön yli.
Lähdedokumentit pilkotaan — koon, päällekkäisyyden tai rakenteen mukaan — ennen kuin jokainen pala upotetaan erikseen.RAG-noudon laatu. Palan koko vaihtaa tarkkuuden ja saannin välillä; päällekkäisyys suojaa katkaistuja lauseita.
Tiheä vektorisamankaltaisuus toimii avainsanahaun rinnalla; kaksi järjestettyä listaa sulautetaan yhdeksi tulokseksi.Kyselyt, jotka tarvitsevat kerralla tarkat termit ja merkityksen, metadatasuodattimet päällä.