DyanmoDB en iyi uygulamaları aşağıdakileri açıkça ortaya koymaktadır:
Bir DynamoDB uygulamasında mümkün olduğunca az sayıda tablo bulundurmalısınız. Çoğu iyi tasarlanmış uygulama için tek bir tablo gerekir.
DyanmoDB ile ilgili gördüğüm hemen hemen her öğreticinin çok masalı bir tasarıma sahip olduğunu eğlenceli buluyorum.
Fakat bu pratikte ne anlama geliyor?
Üç ana varlık içeren basit bir uygulamayı ele alalım: Kullanıcılar, Projeler ve Belgeler. Bir Kullanıcının birden fazla projesi vardır ve bir Projenin birden çok Belgesi olabilir. Genellikle bir kullanıcının Projeleri'ni ve bir Proje Belgeleri'ni sorgulamamız gerekir. Sayı yazım sayısını önemli bir farkla okur.
Saf bir öğreticinin tablo tasarımı üç tablo kullanır:
Users
Hash key
user-id
Projects
Hash key Global Index
project-id user-id
Documents
Hash key Global Index
document-id project-id
Kolayca çökebilir Project
ve Document
tek bir Documents
tabloya girebiliriz :
Documents
Hash key Sort key Global Index
project-id document-id user-id
Ama neden orada dursun? Neden tek bir masa hepsini yönetmiyor? Yana User
her şeyin köküdür ...
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 ...
Ardından, email
kullanıcı kaydı aramaları alanında bir Global Index ve document-id
doğrudan belge aramaları alanında başka bir Endeksimiz olur.
Bu şekilde mi çalışması gerekiyor? Bu kadar çılgınca farklı türdeki verileri aynı tabloya atmak yasal mı? Yoksa ikinci, iki tablolu tasarım daha iyi bir yaklaşım mı?
Hangi noktada ikinci bir tablo eklemek doğru olur?