Bu sorunun cevabı, öğelerin sayısına, boyutlarına ve bütçenize bağlıdır. Aşağıdaki 3 vakamız olduğuna bağlı:
1- Tablodaki madde sayısı ve ölçüleri çok fazla değil. daha sonra, Steffen Opel'in dediği gibi, user_id için tüm öğeleri almak için Tarama yerine Sorgu Kullanabilir ve ardından iade edilen tüm öğeler üzerinde döngü oluşturabilir ve ya kolaylaştırabilir DeleteItem
ya daBatchWriteItem
. Ancak burada çok fazla üretim kapasitesi harcayabileceğinizi unutmayın. Örneğin, bir DynamoDB tablosundan 1000 öğeyi silmeniz gereken bir durumu düşünün. Her bir öğenin 1 KB boyutunda olduğunu ve yaklaşık 1MB veri elde edildiğini varsayın. Bu toplu silme görevi, sorgulama ve silme için toplam 2000 yazma kapasitesi birimi gerektirecektir. Bu veri yüklemesini 10 saniye içinde gerçekleştirmek için (ki bu bazı uygulamalarda hızlı olarak kabul edilmez), tablonun sağlanan yazma verimini 200 yazma kapasitesi birimine ayarlamanız gerekir. Gördüğünüz gibi, daha az sayıda ürün veya küçük boyutlu ürün için bu şekilde kullanılabilir.
2- Tabloda bir çok eşya veya çok büyük eşyalar var ve bunları zamana göre farklı masalarda saklayabiliyoruz. Daha sonra Jonathan Said olarak tabloyu silebilirsiniz. bu çok daha iyi ama davanızla eşleştiğini sanmıyorum. Günlüklerin oluşturulma zamanı ne olursa olsun tüm kullanıcı verilerini silmek istediğinizden, bu durumda belirli bir tabloyu silemezsiniz. Her kullanıcı için ayrı bir tablo istiyorsanız, o zaman sanırım kullanıcı sayısı yüksekse o zaman çok pahalı ve sizin durumunuz için pratik değil.
3- Çok fazla veriniz varsa ve sıcak ve soğuk verilerinizi farklı tablolara bölemezseniz ve sık sık büyük ölçekli silme işlemi yapmanız gerekiyorsa, maalesef DynamoDB sizin için hiç de iyi bir seçenek değildir. Daha pahalı veya çok yavaş hale gelebilir (bütçenize bağlıdır). Bu durumlarda, verileriniz için başka bir veritabanı bulmanızı tavsiye ederim.