Skip to content

Pagmo-modelo ng Data sa NoSQL ipinaliwanag

Mga pattern ng pagmo-modelo para sa document, key-value, wide-column, graph, at vector stores — kailan mag-embed, mag-reference, mag-denormalize, o mag-bucket.

Ang mga NoSQL store ay ipinagpapalit ang fixed na schema at joins para sa horizontal na scaling. Bawat pamilya ay may sariling paraan ng pagmo-modelo ng relationships, kaya ang access pattern — hindi ang normal form — ang nagdidikta sa estruktura.

Talaan ng sanggunian · 28 mga entry
28 of 28 rows
Document
Nakalagay na mga sub-document sa loob ng isang parent document sa halip na magkakahiwalay na tables.One-to-few na relationships na binabasa nang sabay-sabay. Isang order kasama ang line items. Isang user na may tatlong addresses.
Nag-iimbak ng foreign id, hindi ng mismong data. Tinutugma ito sa pangalawang read o sa $lookup.Malalaki, shared, o sariling nag-a-update na sub-entities. Many-to-many na link sa mga collection.
Ini-embed ng parent ang maikling array ng mga anak; kasya at naglo-load ang buong set bilang isang document.Ilang phone numbers o preferences sa profile. Isang read lang ang nagbabalik ng parent at mga anak.
Nasa sariling collection ang mga anak; may parent id ang bawat anak, o nagmamantini ang parent ng may hanggan na id array.Masyadong malaki o masyadong malaya ang set para i-embed. Hanapin ang mga anak gamit ang parent id.
Ang anak ang nag-iimbak ng parent id; hindi kailanman inililista ng parent ang mga anak dahil walang hanggan ang set.Mga event, log, o botong nakakabit sa host o user. I-filter ang mga anak gamit ang parent id at i-paginate.
Magkakaibang entity type ay nagbabahagi ng isang collection, na pinaghihiwalay ng type field.Mga comment o notification na nakakabit sa maraming klase ng parent, at lahat ay iisang paraan lang ng query.
Ilang extreme na entity ang hinihiwalay mula sa karaniwang hugis para hindi ma-distort ang natira dahil sa laki o traffic nila.Mga account ng celebrity na lalampasan ng follower lists o counters ang normal na document.
Bawat revision ay panibagong document na may parehong id at tumataas na version number; pinipili ng query ang pinakabago.Audit trail at edit history kung saan nananatiling queryable ang lumang mga revision.
Ang mga derived na value ay kinakalkula sa write time at iniimbak katabi ng data na binubuod nila.Mga total, rating, at top-N na kung hindi ay magpapatakbo ng aggregation sa bawat read.
Key-value at wide-column
DynamoDB design term: pagsasama-samahin ang maraming entity type sa isang table gamit ang mga overloaded na partition at sort key.Kunin ang iba't ibang klase ng item sa isang query nang walang join.
Isang attribute ng key ang nagsisilbi sa maraming entity type, na minamarkahan ng mga prefix tulad ng USER# o ORDER#.Mga single-table design. I-grupo ang magkakaugnay na item sa iisang partition at kunin sa isang query.
Ang partition key ay kumakalat ng mga row sa mga node; ang sort key ay nag-aayos ng bawat partition.Cassandra at DynamoDB. Mga range scan, ayos na log, hierarchical na composite key.
Pinagsasaksak ang ilang attribute sa iisang delimited na sort key — country#region#city — para ang prefix match ay bumaba sa hierarchy.Mga hierarchy at multi-facet na filter. Isang ayos na range query ang pumapalit sa maraming indexed na lookup.
Pinapangkat ang mga event sa mga fixed na window — oras, araw, buwan — sa ilalim ng nakalaang partition o table.Mga metric, log, at IoT telemetry. Binibigyan ng hanggan ang laki ng partition at pinapa-expire ang cold na data.
Dini-duplicate ang mga read-heavy na field sa mga record para hindi na kailanman mangailangan ang query ng pangalawang lookup.Mga read-heavy na workload kung saan matatanggap ang eventual consistency at mura ang storage.
Pangalawang index na nakabuo sa attribute na mayroon lang ilang item; ang mga walang attribute na ito ay hindi kailanman pumapasok sa index.Mga alternatibong access path. Hanapin ang sparse na subset — mga bukas na order, hindi pa naipapadalang item — nang walang full scan.
Isulat muna ang eksaktong mga query; ang layout ng table ay nakukuha mula sa mga iyon, hindi mula sa entities o normal form.Cassandra at DynamoDB schema work. Isang table kada query family; kumokopya ang data model sa tanong.
Kailangang tumama nang sabay-sabay ang query sa maraming partition o node dahil walang key na tumutugma sa tanong.Amoy na dapat ma-design out, hindi layunin. I-re-key ang table para ang karaniwang query ay tumama sa iisang partition.
Ang mga kopya ay itinutulak sa view ng bawat reader sa write time, o tinipon at pinagsasama sa read time.Mga feed at timeline. Write-time na fan-out para sa maliliit na audience, read-time para sa malalaki.
Ready nang query result na iniimbak bilang sariling table, na pinapanatiling updated habang nagbabago ang base.Mga alternatibong hugis ng read sa iisang write path. Nagseserve ng mga query na hindi masasagot ng base table.
Graph
Bawat edge ay isang row o tuple na tumuturo mula sa source node patungo sa target node.Graph at property store. Friend-of-friend na lookup, routing, recommendation.
Bawat relationship ay document sa sariling collection, na may from at to ids kasama ang mga attribute ng link.Mga graph sa document store. Mga attribute sa mismong link — rating, role, timestamp.
Bawat node ay may left at right counter mula sa depth-first na paglalakad; ang subtree ay nasa loob ng range ng parent nito.Mga read-heavy na tree. Isang BETWEEN query ang nagbabalik ng subtree; ang mga insert ay muling nagbibilang ng walk.
Ang nakalaang table ay nagtatala ng bawat pares ng ancestor-to-descendant, kasama ang bawat node sa depth zero.Mga query ng buong branch sa anumang depth. Simpleng join, bayad sa storage at maintenance.
Ang mga property graph ay naglalagay ng key-value na attribute sa nodes at edges; ang RDF ay nagsasaad ng lahat bilang subject-predicate-object na triple.Property graph para sa mayamang traversal (Neo4j); RDF para sa linked open data at pagpapalitan ng ontology.
Vector
Ang high-dimensional na float array ay nasa tabi ng metadata. Ang ANN index ang humahanap ng pinakamalapit na neighbors.Semantic search, RAG retrieval, recommendation, at similarity sa unstructured na content.
Hinihiwa ang mga source document — ayon sa laki, overlap, o structure — bago i-embed ang bawat piraso nang mag-isa.Kalidad ng RAG retrieval. Ang laki ng chunk ay nagpapalit ng precision laban sa recall; ang overlap ay pinoprotektahan ang mga napuputol na pangungusap.
Tumatakbo ang dense vector similarity katabi ng keyword matching; ang dalawang ranked na listahan ay sumasama sa isang resulta.Mga query na nangangailangan ng eksaktong term at kahulugan nang sabay, may metadata filter sa ibabaw.