Praktik terbaik DyanmoDB memperjelas bahwa:
Anda harus menjaga tabel sesedikit mungkin dalam aplikasi DynamoDB. Sebagian besar aplikasi yang dirancang dengan baik hanya membutuhkan satu tabel.
Saya merasa lucu kemudian bahwa hampir setiap tutorial yang saya lihat berurusan dengan DyanmoDB memiliki desain multi-tabel.
Tetapi apa artinya ini dalam praktik?
Mari kita pertimbangkan aplikasi sederhana dengan tiga entitas utama: Pengguna, Proyek, dan Dokumen. Seorang Pengguna memiliki banyak proyek, dan Proyek dapat memiliki banyak Dokumen. Kami biasanya harus menanyakan Proyek untuk Pengguna, dan pada Dokumen untuk Proyek. Dibandingkan jumlah menulis dengan margin yang signifikan.
Desain tabel tutorial naif akan menggunakan tiga tabel:
Users
Hash key
user-id
Projects
Hash key Global Index
project-id user-id
Documents
Hash key Global Index
document-id project-id
Kita bisa dengan mudah runtuh Project
dan Document
menjadi satu Documents
tabel:
Documents
Hash key Sort key Global Index
project-id document-id user-id
Tapi mengapa berhenti di situ? Mengapa tidak satu meja untuk mengatur semuanya? Karena itu User
adalah akar dari segalanya ...
Users
Hash key Sort key
user-id aspect
--------- ---------
foo user email: foo@bar.com ...
foo project:1 title: "The Foo Project"
foo project:1:document:2 document-id: 2 ...
Kemudian kita akan memiliki Indeks Global pada, katakanlah, email
bidang pencarian catatan pengguna, dan yang lain di document-id
lapangan untuk pencarian dokumen langsung.
Apakah itu cara kerjanya? Apakah sah untuk membuang jenis data yang sangat berbeda ke dalam tabel yang sama? Atau yang kedua, desain dua meja pendekatan yang lebih baik?
Pada titik mana akan benar menambahkan tabel kedua?