Bu kapsamlı kılavuz, Python’da Boto3 kütüphanesini kullanarak Amazon DynamoDB ile etkili bir şekilde nasıl etkileşim kurulacağını göstermektedir. Tablo oluşturma ve silmeden gelişmiş sorgulama tekniklerine ve verimli veri almaya kadar temel işlemleri ele alacağız.
İçindekiler
- DynamoDB’ye Giriş
- Boto3’e Giriş
- Boto3 ile DynamoDB Tabloları Oluşturma
- Boto3 ile DynamoDB Tablolarını Silme
- Boto3 ile DynamoDB Tablolarını Listeleme
- DynamoDB’de Veri Sorgulama
- DynamoDB’de Veri Tarama
- Belirli Öğeleri Alma
- Sayfalama Uygulama
- Genel İkincil İndeksler Kullanma
- Büyük Veri Kümelerini Verimli Bir Şekilde İşleme
- Sonuç
DynamoDB’ye Giriş
Amazon DynamoDB, tamamen yönetilen, sunucusuz bir NoSQL veritabanı hizmetidir. Anahtar-değer ve belge veritabanı yapısı, olağanüstü performans, ölçeklenebilirlik ve yüksek kullanılabilirlik sunar. İlişkisel veritabanların aksine, DynamoDB, her biri birincil anahtar tarafından benzersiz bir şekilde tanımlanan öğelerden oluşan tablolar kullanır. Bu tasarım, düşük gecikme süresi ve yüksek verim gerektiren uygulamalar için idealdir.
Boto3’e Giriş
Python için AWS SDK olan Boto3, DynamoDB dahil olmak üzere AWS hizmetlerini yönetmek için kullanıcı dostu bir arayüz sağlar. Tablo oluşturma, veri işleme ve sorgulama gibi görevleri basitleştirir. Devam etmeden önce, Boto3’ün yüklendiğinden emin olun (`pip install boto3`) ve AWS kimlik bilgilerinizin doğru şekilde yapılandırıldığından emin olun.
Boto3 ile DynamoDB Tabloları Oluşturma
Bir DynamoDB tablosu oluşturmak, adını, birincil anahtarını ve diğer özniteliklerini tanımlamayı gerektirir. Aşağıdaki kod örneği, Boto3 kullanarak tablo oluşturmayı göstermektedir:
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.create_table(
TableName='MyTable',
KeySchema=[
{'AttributeName': 'id', 'KeyType': 'HASH'}, # Bölüm anahtarı
],
AttributeDefinitions=[
{'AttributeName': 'id', 'AttributeType': 'S'},
],
ProvisionedThroughput={
'ReadCapacityUnits': 5,
'WriteCapacityUnits': 5,
}
)
table.meta.client.get_waiter('table_exists').wait(TableName='MyTable')
print(f"'{table.name}' tablosu başarıyla oluşturuldu.")
Bu örnek, ‘id’ adlı bir dize birincil anahtara sahip ‘MyTable’ adlı bir tablo oluşturur. Uygulamanızın ihtiyaçlarına göre `ReadCapacityUnits` ve `WriteCapacityUnits` değerlerini ayarlayın.
Boto3 ile DynamoDB Tablolarını Silme
Bir DynamoDB tablosunu silmek basittir:
table = dynamodb.Table('MyTable')
table.delete()
print(f"'MyTable' tablosu başarıyla silindi.")
Boto3 ile DynamoDB Tablolarını Listeleme
Tüm DynamoDB tablolarınızı listelemek için:
tables = dynamodb.tables.all()
for table in tables:
print(table.name)
DynamoDB’de Veri Sorgulama
DynamoDB, verimli sorgulama mekanizmaları sunar. `Query` işlemleri, belirli bir birincil anahtara veya bileşik bir anahtar içindeki bir değer aralığına göre öğeleri almak için en iyisidir. Aşağıdaki örnek, basit bir sorgulamayı göstermektedir:
table = dynamodb.Table('MyTable')
response = table.query(KeyConditionExpression=Key('id').eq('123'))
for item in response['Items']:
print(item)
DynamoDB’de Veri Tarama
Bir `Scan` işlemi, bir tablodaki tüm öğeleri alır. `Query`den daha az verimli olsa da, tam tablo taramaları için kullanışlıdır. Büyük tablolar için sayfalama uygulamayı unutmayın (Sayfalama bölümüne bakın).
response = dynamodb.Table('MyTable').scan()
for item in response['Items']:
print(item)
Belirli Öğeleri Alma
Birincil anahtarına göre tek bir öğe almak için:
table = dynamodb.Table('MyTable')
response = table.get_item(Key={'id': '123'})
item = response.get('Item')
print(item)
Sayfalama Uygulama
Büyük veri kümeleriyle çalışırken, verimli veri alma için sayfalama çok önemlidir. Boto3, sayfalamayı otomatik olarak yönetir:
response = dynamodb.Table('MyTable').scan()
items = response.get('Items', [])
while 'LastEvaluatedKey' in response:
response = dynamodb.Table('MyTable').scan(ExclusiveStartKey=response['LastEvaluatedKey'])
items.extend(response.get('Items', []))
for item in items:
print(item)
Genel İkincil İndeksler Kullanma
Genel İkincil İndeksler (GSI’ler), birincil anahtar dışında özniteliklere göre veri sorgulamasına olanak tanır. Bir GSI oluşturmak, tablo oluşturma veya güncelleme sırasında indeks anahtarını ve projeksiyon özniteliklerini tanımlamayı içerir. Bir GSI’yi sorgulamak, birincil anahtarı sorgulamaya benzer, ancak indeks adını belirtirsiniz.
Büyük Veri Kümelerini Verimli Bir Şekilde İşleme
Büyük veri kümeleriyle optimum performans için GSI’ler, sayfalama gibi özellikleri kullanın ve erişim kalıplarınıza göre uygun sorgulama yöntemini (Al, Sorgula, Tara) seçin. Gereksiz tam tablo taramalarından (Tara) mümkün olduğunca kaçının.
Sonuç
Bu kılavuz, Python’da Boto3 kullanarak DynamoDB ile etkileşim kurmanın kapsamlı bir genel bakışını sağladı. Gelişmiş özellikler ve en iyi uygulamalar için resmi AWS belgelerine başvurmayı unutmayın. DynamoDB’nin veri modelini anlamak ve uygun sorgulama yöntemlerini seçmek, verimli ve ölçeklenebilir uygulamalar oluşturmak için çok önemlidir.