Skip to content

NoSQL adatmodellezés elmagyarázva

Modellezési minták dokumentum-, kulcs-érték, széles oszlopú, gráf- és vektoros tárolókhoz — mikor érdemes beágyazni, hivatkozni, denormalizálni vagy időablakba rendezni.

A NoSQL tárolók a rögzített sémákat és a joinokat horizontális skálázhatóságért cserélik. Minden család a saját módján modellezi a kapcsolatokat, így a szerkezetet a hozzáférési minta — nem a normálforma — határozza meg.

Referenciatáblázat · 28 bejegyzés
28 of 28 rows
Dokumentum
A beágyazott aldokumentumok egy szülő dokumentumon belül élnek, nem külön táblákban.Együtt olvasott egy-kevéshez kapcsolatok. Egy rendelés a tételsoraival. Egy felhasználó három címével.
Idegen azonosítót tárolj, ne az adatot. Oldd fel egy második olvasással vagy egy $lookup-nal.Nagy, megosztott vagy önállóan frissített alentitások. Sok-a-sokhoz kapcsolatok kollekciók között.
A szülő a gyerekek rövid tömbjét ágyazza be; a teljes halmaz egy dokumentumként fér el és töltődik be.Néhány telefonszám vagy beállítás egy profilon. Egy olvasás visszaadja a szülőt és a gyerekeket.
A gyerekek saját kollekcióban élnek; minden gyerek hordozza a szülő azonosítóját, vagy a szülő korlátos azonosítótömböt tart.Beágyazáshoz túl nagy vagy túl önálló halmazok. Gyerekek lekérdezése szülő-azonosító szerint.
A gyerek tárolja a szülő azonosítóját; a szülő sosem listázza a gyerekeket, mert a halmaz határtalan.Egy géphez vagy felhasználóhoz kötött események, naplók, szavazatok. Szűrés szülő-azonosítóra, majd lapozás.
Különböző entitástípusú dokumentumok osztoznak egy kollekción, egy típusmező különbözteti meg őket.Sokféle szülőhöz csatolt kommentek vagy értesítések, mindegyik ugyanazzal a lekérdezéssel.
Néhány szélsőséges entitás kivált a közös alakból, hogy a mérete vagy forgalma ne torzítsa a többit.Celebr fiókok, amelyek követőlistája vagy számlálója kinőné a normál dokumentumot.
Minden revízió új dokumentum ugyanazzal az azonosítóval és növekvő verzioszámmal; a lekérdezés a legfrissebbet választja.Audit nyomvonalak és szerkesztési előzmények, ahol a régi revíziók lekérdezhetők maradnak.
A származtatott értékek íráskor számítódnak ki, és az összegzett adat mellett tárolódnak.Összegek, értékelések és top-N listák, amelyek különben minden olvasáskor aggregációt futtatnának.
Kulcs-érték és széles oszlop
DynamoDB tervezési kifejezés: több entitástípus egyetlen táblába sűrítve túlterhelt partíció- és rendezőkulccsal.Heterogén elemek egyetlen lekérdezéssel, join nélkül.
Egy kulcsattribútum sok entitástípust szolgál ki, előtagokkal jelölve, mint USER# vagy ORDER#.Single-table tervek. Kapcsolódó elemek egy partíció alá csoportosítva, egy lekérdezéssel elérve.
A partíciókulcs szétosztja a sorokat a csomópontok között; a rendezőkulcs rendezi a partíciót.Cassandra és DynamoDB. Tartomány-olvasások, rendezett naplók, hierarchikus összetett kulcsok.
Több attribútum egy elválasztóval tagolt rendezőkulcsba fűzve — country#region#city —, így egy előtag-egyezés bejárja a hierarchiát.Hierarchiák és többdimenziós szűrők. Egy rendezett tartománylekérdezés sok indexelt keresést vált ki.
Az események rögzített ablakokba — óra, nap, hónap — csoportosulnak dedikált partíciók vagy táblák alatt.Metrikák, naplók és IoT telemetria. Megköti a partíció méretét, és kiöregszik a hideg adat.
Duplikáld a gyakran olvasott mezőket a rekordok között, hogy egy lekérdezés sose hajtson egy második keresésre.Olvasás-közeli terhelések, ahol a végleges konzisztencia elfogadható és a tárolás olcsó.
Másodlagos index egy olyan attribútumra, amelyet csak néhány elem hordoz; ami nélküle van, sosem kerül az indexbe.Alternatív hozzáférési utak. A ritka részhalmaz megtalálása — nyitott rendelések, ki nem szállított tételek — teljes scan nélkül.
Írd fel előbb a pontos lekérdezéseket; a táblaelrendezés ezekből származik, nem az entitásokból vagy a normálformából.Cassandra és DynamoDB séma-munka. Táblánként egy lekérdezéscsalád; az adatmodell lemásolja a kérdést.
A lekérdezésnek több partíciót vagy csomópontot kell párhuzamosan elérnie, mert egyetlen kulcs sem fedi a kérdést.Kiszűrendő hibajel, nem cél. Kulcsold át a táblát, hogy a gyakori lekérdezés egy partícióra essen.
A másolatok íráskor tolódnak minden olvasó nézetébe, vagy olvasáskor gyűjtődnek össze és olvadnak eggyé.Feedek és idővonalak. Íráskori fan-out kis közönséghez, olvasáskori hatalmas közönséghez.
Előre elkészített lekérdezési eredmény saját táblaként tárolva, az alap változásával naprakészen tartva.Alternatív olvasási alakok egy írási út felett. Olyan lekérdezéseket szolgál ki, amelyekre az alaptáblában nincs válasz.
Gráf
Minden él egy sor vagy rekord, amely egy forrás csomópontból egy cél csomópontra mutat.Gráf- és property-tárolók. Ismerős-ismertője keresések, útvonaltervezés, ajánlások.
Minden kapcsolat saját kollekciójában lévő dokumentum, from és to azonosítókkal plusz él-attribútumokkal.Gráfok dokumentumtárolókban. Attribútumok magán a linken — értékelés, szerep, időbélyeg.
Minden csomópont bal és jobb számlálót tárol egy mélységi bejárásból; egy részfa a szülő tartományán belül él.Olvasás-közeli fák. Egy BETWEEN lekérdezés visszaad egy részfát; a beszúrás újrarendeli a bejárást.
Egy dedikált tábla rögzít minden őstől-leszármazottig párt, minden csomópontot nulladik mélységgel.Bármely mélységű teljes ág-lekérdezések. Egyszerű joinok, tárolásban és karbantartásban megfizetve.
A property gráfok kulcs-érték attribútumokat csatolnak a csomópontokhoz és élekhez; az RDF mindent alany-predikátum-tárgy hármasként fogalmaz meg.Property gráfok gazdag bejárásra (Neo4j); RDF nyílt linkelt adatokra és ontológia-cserére.
Vektor
Nagy dimenziós lebegőpontos tömb ül a metaadat mellett. Egy ANN index keresi a legközelebbi szomszédokat.Szemantikai keresés, RAG visszakeresés, ajánlások és hasonlóság strukturálatlan tartalom felett.
A forrásdokumentumok darabolásra kerülnek — méret, átfedés vagy szerkezet szerint —, mielőtt minden darab külön ágyazódik be.RAG visszakeresési minőség. A darabméret precizitást cserél visszahívásra; az átfedés megvédi az elvágott mondatokat.
A sűrű vektor-hasonlóság kulcsszó-egyezés mellett fut; a két rangsorolt lista egyetlen eredménnyé olvad.Lekérdezések, amelyek egyszerre kívánnak pontos kifejezéseket és jelentést, metaadat-szűrőkkel a tetején.