2016-04-20 8 views
11

Ich weiß, das ganze Design sollte auf natürlichen Aggregaten (Dokumenten) basieren, aber ich denke, eine separate Tabelle für Lokalisierungen (lang, Schlüssel, Text) zu implementieren und dann Schlüssel in anderen Tabellen zu verwenden. Ich konnte jedoch kein Beispiel dafür finden.Wie können Tabellen in AWS DynamoDB verknüpft werden?

Alle Hinweise können hilfreich sein!

Antwort

10

Sie haben Recht, DynamoDB ist nicht als relationale Datenbank konzipiert und unterstützt keine Join-Vorgänge. Sie können sich DynamoDB als eine Gruppe von Schlüssel/Wert-Paaren vorstellen.

Sie können dieselben Schlüssel für mehrere Tabellen (z. B. document_IDs) verwenden, aber DynamoDB synchronisiert sie nicht automatisch oder verfügt über Fremdschlüsselfunktionen. Die document_IDs in einer Tabelle haben, obwohl sie den gleichen Namen haben, technisch eine andere Menge als die in einer anderen Tabelle. Es liegt an Ihrer Anwendungssoftware, sicherzustellen, dass diese Schlüssel synchronisiert werden.

DynamoDB ist eine andere Art und Weise über Datenbanken zu denken und Sie könnten mit einer verwalteten relationalen Datenbank wie Amazon Aurora betrachten wollen: https://aws.amazon.com/rds/aurora/

Eine Sache zu beachten, Amazon EMR erlaubt es DynamoDB Tabellen verknüpft werden, aber Ich bin mir nicht sicher, dass Sie das suchen: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB.html

+0

Vielen Dank! Ein Join zu haben wäre eher eine Ausnahme als eine Designregel/Anforderung. Haben Sie irgendwelche Gedanken zu Leistung/Abrechnung/.. Strafen bei der Abfrage von Dokumenten nach einem und dann Beitritt auf der Anwendungsseite? Ich denke immer noch, dass DynamoDB in meinem Fall besser passt, aber ich weiß nicht, ob es einen signifikanten Nachteil für Ausnahmefälle wie diesen geben wird. – Centurion

+1

@Centurion, wenn Sie Ihre document_id (oder eine ähnliche) vorher kennen, können Sie nur diesen zugehörigen Datensatz aus jeder Tabelle abrufen. Einen einzelnen Datensatz von jeder Tabelle zu bekommen, ist nicht teuer, und es scheint sehr vernünftig, sie zu verbinden. Die kostspieligen Dinge passieren, wenn Sie abfragen oder scannen müssen: DynamoDB berechnet für jeden in der Abfrage/Abfrage abgerufenen Datensatz Gebühren, selbst wenn Sie sie nicht tatsächlich an die Anwendung zurückgeben. Wann immer Sie abfragen oder scannen, bietet dies eine Gelegenheit, diese Operation genauer zu untersuchen, um die Abfrage/Überprüfung zu eliminieren. –

Verwandte Themen