AWS DynamoDB Genel Özellikleri

Merhaba Arkadaşlar,
AWS farklı amaçlara hizmet eden farklı Veritabanı servis hizmeti sunmaktadır. Bunlardan En popüler olanı  AWS DynamoDB ‘den bahsedeceğiz. Kendisi Farklı amaçlara hizmet eden güvenilir esnetilebilir servislerden birtanesidir. Üzülerek söyleyeceğim ki AWS’nin ücretlendirme sistematiğine göre en pahalı servislerden biri diyebilirim.

DynamoDB nedir ?

Dynamo DB servislerin rahatlıkla konuşabileceği response time’ı microsecondlara inen nosql database servisidir. Oyun, web sitesi ya IOT ürünlerinde rahatlıkla kullanilabilir. Ayrıca, otomatik kendini scale edebilme, AWS’nin başka region’larına kopyalanabilme özellikleri vardır.

Tablo yapısı

Dynamo Tabloları partition’lara ayırıp partitionlar üzerinden işlem yapmaktadır. Datanız partition key değerlerine göre farklı partitionlara dağıtılır. Ve o değerlere göre sorgularınız işlem görür. Partition key dediğimiz değerin seçilmesi önemlidir. Çünkü, tablonun requestleri partitionlar üzerinden eşit dağılmalıdır. Eğer sorgular tek bir tablo üzerinde yoğunlaştırılırsa o partitionın limitleri zorlanmış diğer partitionlar boş yere açılmış olur. Limitleri doğru belirlemek ve kullanmak DynamoDb açısından kritik önem taşımaktadır.

Ayrıca partition limitleri 3000 okuma ve 1000 yazma olarak düşünebilirsiniz. Siz tablonuzun limitlerini arttırırken kaç partition olması gerektiğini amazon devamlı kontrol eder ve limiti aştığınızda 2. Partitionınız otomatik olarak açılır. AWS’nin hesabına göre okuma limitiniz 3000’e yazma limitiniz ise 1000’e bölünür. Çıkan değer toplanır ve değer bir üst tam sayıya yuvarlanarak partition sayısı bulunur.Ayrıca her partition 10 GB kadar data saklayabilir. Bu değer aşıldığında ikinci bir partition açılmak zorundadır.

Tablo yapısını istediğiniz gibi yaratabilir ve üzerinde oynayabilirsiniz. Tablo yaratılırken bilmeniz gereken iki farklı index türü bulunmaktadır.

Global ve Local Secondary Index

Secondary index ‘i tabloların primary key’inden bağımsız olarak tablodaki bazı attribute’ların özeti şeklinde düşünebilirsiniz. Seçilen attribute’lara göre secondary indexler AWS tarafından değiştirilerek yönetilir. Secondary index’leri kendiniz normal sorgu atarken rahatlıkla kullanabilirsiniz. Global ve local secondary index’ler tablo içinde farklı amaçlara hizmet etmektedir. Bunları şöyle sıralayabiliriz.

 

  • Sonradan tabloya global secondary index eklenebilir. Fakat local secondary index eklenemez.
  • Global secondary index ile tüm tablo taranabilir. Fakat, local secondary index ile sadece partition taranabilir.
  • Gsi sadece partition key olabilir ya da partition key ile sort key in birleşimi olabilir. Fakat, Lsi’lar partitionlara göre ayarlandığı için sadece partition key olamazlar.

Datayı yedekleme veya tekrar üretme

DynamoDB servisi datanızı hızlı bir şekilde yedeklemenizi ve tekrar kurmanızı sağlamaktadır.  Her tablo ile beraber kinesis streami açabiliyorsunuz ve stream sayesinde tablo üzerindeki her operasyonun bilgisini alabiliyorsunuz. AWS streamde bulunan datayı esnek bir şekilde dinlemenizi sağlamaktadır. Böylelikle sizde tablo üzerindeki her operasyonun yedeğini bu operasyonları kaydederek yapabilirsiniz. DynamoDB kendisi sizin yerinize bu işlemi kendisi yedekleme desteği ile yapabilir.

Çok yakın zamanda DynamoDB’de “global table” kavramı ortaya çıkmıştır. Normalde AWS servisleri regionlar seçilerek yapılmakta region’lardaki olası kötü bir olay sizin datanızında kaybolmasına neden olmaktaydı. “Global table” yaratarak isterseniz iki farklı region’da iki tablo yaratıp o tabloları senkronize tutarak aynı datanızın iki farklı regionda olmasını sağlayabilir istediğiniz regiondan yönetebilirsiniz.

Hatırlarsanız IAM rolleri de global çalışan bir AWS servisiydi. Fakat, dynamodb “globa table“ kurulumu o kadar kolay bir işlemden daha fazlasını istiyor. Var olan tablolarınızı “global table”’lara taşıyamıyorsunuz. Boş bir tablo açıp kendisini “global table” olarak işaretleyip başka bir regiondaki tablolarınız ile senkronize olacağını söylemeniz gerekmektedir.

Şifreleme

DynamoDB’nin yakın zamanda çıkardığı ikinci güzel çalışma ise “Encryption at rest” diyebiliriz. Güvenlik kavramı her zaman hayatımızın her yerinde olmak zorundadır. Eğer kullandığınız datayı kaybetmemek üzerine bir sistem organize ediyorsanız datanızı mecburen şifreli saklamanız gerekmektedir. DynamoDB bu özelliği ile diyor ki sizler için datanızı ben şifreleyebilir istediğinizde de şifresini kaldırıp sizlere açık datayı sunabilirim. Böylelikle datanızın şifrelenmesi, şifrenin saklanması veya periyodik değişmesi, hangi datanızın hangi dönemki şifreniz ile şifrelendiğini kontrol edilmesi gibi bir çok sorundan sizleri kurtarıyor ve güvenli bir data saklama aracı haline geliyor. Bu işlemlerin hepsini AWS KMS servisi ile yapmaktadır. AWS KMS servisi şifrelerinizi güvenli bir şekilde saklayabileceğiniz ve periyodik değiştirebileceğiniz bir altyapı sunmaktadır. AWS ‘nin engineering gücü ile birleşince de sizleri herhangi bir kötü senaryodan korumakla kalmayıp regionlarda gerçekleşebilecek herhangi kötü bir senaryoda yedeklediği şifreler ile datanıza hala ulaştırabiliyor sizleri.

Limitler:

AWS DynamoDB kendis otomatik limit arttıran Autoscale desteği vermektedir. DynamoDB autoscale desteğini kullanarak kendi limitleriniz arasında Dynamodb tablo limitlerinizde esneklik sağlayabilirsiniz fakat bazı durumlarda bu destek geçikebiliyor ve throttle yemenize sebep olabiliyor.

DynamoDB servisi, AWS’nin en çok güvendiği bir çok güvenilir büyük teknoloji firması tarafından kullanılan servislerden birtanesidir. Biz de sizlere genel özelliklerini ve bazı önemli notlarımızı paylaşmış bulunuyoruz. AWS servisleri için diğer derslerimize buradan ulaşabilirsiniz.

3

Ali Şahin

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?