2016-04-20 17 views
11

Tüm tasarımın doğal agregalara (belgeler) dayalı olması gerektiğini biliyorum, ancak yerelleştirmeler (lang, anahtar, metin) için ayrı bir tablo uygulamayı düşünüyorum ve daha sonra diğer tablolardaki anahtarları kullanın. Ancak, bunu yaparken herhangi bir örnek bulamadım.AWS DynamoDB'de tablolara nasıl katılınır?

Herhangi bir işaretçi yardımcı olabilir!

cevap

10

Doğru, DynamoDB ilişkisel bir veritabanı olarak tasarlanmamıştır ve birleştirme işlemlerini desteklemez. DynamoDB'yi sadece bir anahtar-değer çiftleri kümesi olarak düşünebilirsiniz.

Aynı anahtarları birden fazla tabloya (ör. Document_IDs) sahip olabilirsiniz, ancak DynamoDB bunları otomatik olarak eşitlemez veya herhangi bir yabancı anahtar özelliğine sahip değildir. Bir tabloda document_IDs, aynı şekilde adlandırılırken, teknik olarak farklı bir tablodakilerden farklı bir kümedir. Bu anahtarların senkronize olduğundan emin olmak için uygulama yazılımınıza bağlı.

DynamoDB veritabanları hakkında düşünmenin farklı bir yoludur ve bir yönetilen ilişkisel, Amazon Aurora olarak veritabanı kullanarak düşünebilirsiniz: Amazon EMR DynamoDB tabloları bağlanmasını sağlamaktadır yapar nota https://aws.amazon.com/rds/aurora/

Bir şey ama Bunun için aradığınız şeyin olduğundan emin değilim: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB.html

+0

Teşekkürler! Bir birleşim olması, bir tasarım kuralı/gereksinimi yerine bir istisna olacaktır. Belgelerin birer birer sorgulanması ve daha sonra uygulama tarafında bir araya getirilmesinde performans/faturalandırma/.. cezaları hakkında herhangi bir fikriniz var mı? Hala DynamoDB'nin benim durumumda daha iyi olacağını düşünüyorum, ancak bunun gibi istisnai durumlar için önemli bir dezavantaj olacağını bilmiyorum. – Centurion

+1

@Centurion, eğer document_id (veya benzeri) 'nizi önceden biliyorsanız, her bir tablodan o ilişkili kaydı alabilirsiniz. Her tablodan tek bir kayıt almak pahalı değil ve çok makul olduktan sonra onları birleştirmek. Pahalı şeyler sorgulamanız veya taramanız gerektiğinde ortaya çıkar: DynamoDB, gerçekten onları uygulamaya döndürmese bile, tarama/sorguda alınan her kayıt için ücret alır. Sorgulama veya tarama yaptığınızda, sorguyu/taramayı denemek ve ortadan kaldırmak için bu işlemi daha ayrıntılı olarak incelemek için bir fırsat sunar. –