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 Projectve Documenttek bir Documentstabloya 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 Userher ş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, emailkullanıcı kaydı aramaları alanında bir Global Index ve document-iddoğ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?