Veri modelleme, bir uygulamanın verilen bir veri tabanında verileri nasıl depoladığını tasarlama işlemidir. DynamoDB gibi bir NoSQL veri tabanı ile veri modelleme ilişkisel bir veri tabanı ile modelleme yapmaktan farklıdır. İlişkisel bir veri tabanı esneklik için oluşturulmuştur ve analitik uygulamalar için son derece uygundur. İlişkisel veri modellemede ilk olarak varlıklarınızla başlarsınız. Normalleştirilmiş bir ilişkisel modeliniz olduğunda ihtiyaç duyduğunuz tüm sorgu yöntemlerine uygulamanızda yer verebilirsiniz.
NoSQL (ilişkisel olmayan) veri tabanları esneklik için değil, hız ve ölçek için tasarlamıştır. Ölçeği büyüttükçe ilişkisel veri tabanınızın performansı düşebilse de DynamoDB gibi yatay ölçeklendirme veri tabanları tüm ölçeklerde tutarlı performans sağlar. Bazı DynamoDB kullanıcılarının 100 TB’den daha büyük tabloları vardır ve bu kişilerin tablolarının okuma ve yazma performansı tabloların boyut olarak 1 GB’den küçük olduğu zamandaki ile aynıdır.
DynamoDB gibi bir NoSQL veri tabanı ile en iyi sonuçlara ulaşmak için tipik ilişkisel veri tabanından bir düşünce değişimi gerekir. DynamoDB ile verileri modellerken aşağıdaki en iyi uygulamaları kullanın.
1. Erişim modellerine odaklanma
Herhangi türde bir veri modelleme yaparken uygulamanızdaki farklı nesneleri (veya varlıkları) ve bunların nasıl bağlandığını (ya da varlıklarınız arasındaki ilişkiler) açıklayan bir varlık-ilişki diyagramı ile başlayacaksınız.
İlişkisel veri tabanlarında varlıklarınızı doğrudan tablolara koyacak ve yabancı anahtarları kullanarak ilişkileri belirteceksiniz. Veri tablolarınızı tanımladıktan sonra ilişkisel bir veri tabanı ihtiyaç duyduğunuz şekilde veri geri döndürmek için esnek bir sorgu dili sağlar.
DynamoDB’de tablonuzu modellemeden önce erişim yöntemleri hakkında düşünürsünüz. NoSQL veri tabanları esneklik değil, hız odaklıdır. İlk olarak verilerinize nasıl erişeceğinizi sorar ve ardından verilerinizi erişilecek şekilde modellersiniz.
DynamoDB tablonuzu tasarlamadan önce uygulamanızda veri okumaya ve yazmaya yönelik tüm ihtiyaçlarınızı belgelendirin. Tablonuzu erişim yöntemleriniz için optimize edeceğinizden dolayı kapsayıcı olun ve uygulamanızdaki tüm akışları düşünün.
2. DynamoDB’ye yönelik istek sayısını optimize etme
Uygulamanızın erişim yöntemi ihtiyaçlarını belgelendirdikten sonra tablonuzu tasarlamaya hazır olursunuz. Tablonuzu her erişim yöntemi için DynamoDB’ye yönelik istek sayısını en aza indirecek şekilde tasarlamanız gerekir. Ağ istekleri yavaş olduğundan dolayı ideal olarak her erişim yöntemi için DynamoDB’ye yönelik tek bir istek gerekli olmalıdır. Bu da uygulamanızda bulunacağınız ağ taleplerinin sayısını sınırlamaktadır.
DynamoDB’ye yönelik istek sayısını optimize etmek için bazı temel kavramları anlamanız gerekir:
● Birincil anahtarlar
● İkincil dizinler
● İşlemler
3. İlişkisel bir modeli taklit etmeyin
DynamoDB’de yeni olan kişiler sıklıkla ilişkisel olmayan DynamoDB’nin üzerinde bir ilişkisel model uygulamaya çalışırlar. Bunu yapmayı denerseniz DynamoDB avantajlarından çoğunu kaybedersiniz.
Kişilerin DynamoDB’de denedikleri en yaygın yöntem karşıtı uygulamalar (yinelenen sorunlara etkisiz yanıtlar) şu şekildedir:
- Normalleştirme: İlişkisel bir veri tabanında verilerinizi veri fazlalığını ve depolama alanını azaltmak üzere normalleştirebilir ve ardından birden çok farklı tabloyu bir araya getirmek için birleştirmelerden yararlanabilirsiniz. Bununla birlikte, uygun ölçekteki birleştirmeler yavaş ve pahalıdır. Tablonuz büyüdükçe yavaşlayacağı için DynamoDB birleştirmelere olanak vermemektedir.
- Tablo başına bir veri türü: DynamoDB tablonuz çoğunlukla tek bir tabloda farklı türde verileri içerecektir. Örneğimizde tek bir tabloda Kullanıcı, Oyun ve KullanıcıOyunEşleme varlıkları mevcuttur. İlişkisel bir veri tabanında bu, üç farklı tablo olarak modellenir.
- Çok sayıda ikincil dizin: Kişiler çoğunlukla ihtiyaç duydukları her bir ek erişim yöntemi için ikincil bir dizin oluşturmayı denerler. DynamoDB şemasızdır ve bu dizinleriniz için de geçerlidir. Tablonuzdaki birden çok veri türünde tek bir ikincil dizini yeniden kullanmak için özniteliklerinizdeki esnekliği kullanın. Bu dizin aşırı yüklenmesi olarak adlandırılır.
Aşağıdaki adımlarda varlık-ilişki diyagramımızı oluşturacak ve erişim yöntemlerimizin eşlemesini önden yapacağız. Bunlar, her zaman DynamoDB’yi kullanırken başvuracağınız ilk adımlar olmalıdır. Ardından, devam eden modüllerde bu erişim yöntemlerini tablo tasarımında uygulayacağız.
Modülü Tamamlama Süresi: 20 Dakika