Skip to content

Pemodelan Data NoSQL dijelaskan

Pola pemodelan untuk penyimpanan dokumen, kunci-nilai, kolom lebar, graf, dan vektor — kapan menyematkan (embed), mereferensikan, denormalisasi, atau mengelompokkan waktu.

Penyimpanan NoSQL menukar skema tetap dan join dengan skala horizontal. Setiap keluarga memodelkan relasi dengan caranya sendiri, sehingga pola akses — bukan bentuk normal — yang menentukan struktur.

Tabel referensi · 28 entri
28 of 28 rows
Dokumen
Sub-dokumen bersarang hidup di dalam satu dokumen induk, bukan di tabel terpisah.Relasi satu-ke-sedikit yang dibaca bersama. Pesanan beserta item barisnya. Pengguna dengan tiga alamat.
Simpan id asing, bukan datanya. Selesaikan dengan pembacaan kedua atau $lookup.Sub-entitas yang besar, dibagikan, atau diperbarui mandiri. Tautan banyak-ke-banyak antar-koleksi.
Induk menyematkan array anak yang pendek; seluruh set muat dan dimuat sebagai satu dokumen.Segelintir nomor telepon atau preferensi pada profil. Satu pembacaan mengembalikan induk dan anak.
Anak hidup di koleksinya sendiri; setiap anak membawa id induk, atau induk menyimpan array id yang dibatasi.Set yang terlalu besar atau terlalu mandiri untuk disematkan. Kueri anak berdasarkan id induk.
Anak menyimpan id induk; induk tidak pernah mendaftar anak karena setnya tak terbatas.Peristiwa, log, atau suara yang terikat pada host atau pengguna. Saring anak berdasarkan id induk lalu paginasi.
Dokumen dari tipe entitas berbeda berbagi satu koleksi, dibedakan oleh field tipe.Komentar atau notifikasi yang menempel pada banyak jenis induk, semuanya dikueri dengan satu cara.
Beberapa entitas ekstrem dipisahkan dari bentuk bersama agar ukuran atau trafiknya tidak mendistorsi sisanya.Akun selebritas yang daftar pengikut atau penghitungnya akan melampaui dokumen normal.
Setiap revisi adalah dokumen baru dengan id yang sama dan nomor versi yang meningkat; kueri memilih yang terbaru.Jejak audit dan riwayat suntingan tempat revisi lama tetap bisa dikueri.
Nilai turunan dihitung saat penulisan dan disimpan di samping data yang diringkasnya.Total, rating, dan top-N yang tanpa ini akan menjalankan agregasi pada setiap pembacaan.
Kunci-nilai & kolom lebar
Istilah desain DynamoDB: ciutkan banyak tipe entitas ke satu tabel memakai partition dan sort key yang kelebihan beban (overloaded).Ambil item heterogen dalam satu kueri tanpa join.
Satu atribut kunci melayani banyak tipe entitas, ditandai prefiks seperti USER# atau ORDER#.Desain single-table. Klusterkan item terkait di bawah satu partisi dan ambil dalam satu kueri.
Partition key menyebarkan baris lintas node; sort key mengurutkan tiap partisi.Cassandra dan DynamoDB. Pemindaian rentang, log terurut, composite key hierarkis.
Tumpuk beberapa atribut ke satu sort key berpembatas — country#region#city — sehingga pencocokan prefiks menuruni hierarki.Hierarki dan filter multi-faset. Satu kueri rentang terurut menggantikan banyak pencarian terindeks.
Kelompokkan peristiwa ke jendela tetap — jam, hari, bulan — di bawah partisi atau tabel khusus.Metrik, log & telemetri IoT. Membatasi ukuran partisi dan mengedatkan data dingin.
Duplikasi field yang sering dibaca lintas rekaman agar kueri tak pernah mengejar pencarian kedua.Beban kerja berat baca tempat konsistensi eventual dapat ditoleransi dan penyimpanan murah.
Indeks sekunder dibangun pada atribut yang hanya dibawa sebagian item; item tanpa atribut itu tak pernah masuk indeks.Jalur akses alternatif. Temukan subset sparse — pesanan terbuka, item belum dikirim — tanpa full scan.
Tuliskan dulu kueri persisnya; tata letak tabel diturunkan darinya, bukan dari entitas atau bentuk normal.Kerja skema Cassandra dan DynamoDB. Satu tabel per keluarga kueri; model data menyalin pertanyaannya.
Kueri harus mengenai banyak partisi atau node secara paralel karena tak ada kunci yang cocok dengan pertanyaan.Bau kode yang perlu didesain keluar, bukan tujuan. Ubah kunci tabel agar kueri umum mendarat di satu partisi.
Salinan didorong ke tampilan tiap pembaca saat penulisan, atau dikumpulkan dan digabung saat pembacaan.Feed dan timeline. Fan-out saat tulis untuk audiens kecil, saat baca untuk audiens raksasa.
Hasil kueri pra-bangun yang disimpan sebagai tabelnya sendiri, dijaga mutakhir saat basis berubah.Bentuk baca alternatif di atas satu jalur tulis. Melayani kueri yang tak bisa dijawab tabel basis.
Graf
Setiap tepi adalah baris atau tuple yang menunjuk dari node sumber ke node target.Penyimpanan graf dan property. Pencarian teman-dari-teman, perutean, rekomendasi.
Setiap relasi adalah dokumen di koleksinya sendiri, membawa id from dan to plus atribut tautan.Graf di penyimpanan dokumen. Atribut pada tautan itu sendiri — rating, peran, timestamp.
Setiap node menyimpan penghitung kiri dan kanan dari penelusuran depth-first; subtree hidup dalam rentang induknya.Pohon berat baca. Satu kueri BETWEEN mengembalikan subtree; penyisipan menomori ulang penelusuran.
Tabel khusus mencatat setiap pasangan leluhur-ke-keturunan, termasuk tiap node pada kedalaman nol.Kueri seluruh cabang pada kedalaman berapa pun. Join sederhana, dibayar dengan penyimpanan dan pemeliharaan.
Property graph melampirkan atribut kunci-nilai ke node dan tepi; RDF menyatakan segalanya sebagai triple subjek-predikat-objek.Property graph untuk penelusuran kaya (Neo4j); RDF untuk data terbuka tertaut dan pertukaran ontologi.
Vektor
Array float berdimensi tinggi duduk di samping metadata. Indeks ANN menemukan tetangga terdekat.Pencarian semantik, retrieval RAG, rekomendasi, dan kemiripan atas konten tak terstruktur.
Dokumen sumber dipecah — berdasarkan ukuran, tumpang-tindih, atau struktur — sebelum tiap potongan di-embed sendiri.Kualitas retrieval RAG. Ukuran chunk menukar presisi dengan recall; tumpang-tindih melindungi kalimat terpotong.
Kemiripan vektor padat berjalan di samping pencocokan kata kunci; dua daftar terperingkat menyatu jadi satu hasil.Kueri yang butuh istilah persis dan makna sekaligus, dengan filter metadata di atasnya.