2016-04-20 15 views
11

So che l'intero progetto dovrebbe essere basato su aggregati naturali (documenti), tuttavia sto pensando di implementare una tabella separata per le localizzazioni (lang, chiave, testo) e quindi utilizzare le chiavi in ​​altre tabelle. Tuttavia, non sono riuscito a trovare alcun esempio su come farlo.Come unire tabelle in AWS DynamoDB?

Qualsiasi suggerimento potrebbe essere utile!

risposta

10

Si è corretto, DynamoDB non è progettato come database relazionale e non supporta le operazioni di join. Puoi pensare a DynamoDB semplicemente come un insieme di coppie chiave-valore.

È possibile avere gli stessi tasti su più tabelle (ad esempio ID_documenti), ma DynamoDB non li sincronizza automaticamente o dispone di funzionalità di chiave esterna. I document_IDs in una tabella, pur avendo lo stesso nome, sono tecnicamente un set diverso da quelli in una tabella diversa. Spetta al software applicativo assicurarsi che quelle chiavi siano sincronizzate.

DynamoDB è un modo diverso di pensare database e si potrebbe desiderare di considerare l'utilizzo di un database relazionale gestita come Amazon Aurora: https://aws.amazon.com/rds/aurora/

Una cosa da notare, Amazon EMR non consentono tabelle DynamoDB da unire, ma Non sono sicuro che sia quello che stai cercando: http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB.html

+0

Grazie! Avere un join sarebbe un'eccezione piuttosto che una regola/requisito di progetto. Avete qualche idea su performance/fatturazione/... penalità quando si interrogano i documenti per uno e poi si uniscono sul lato delle applicazioni? Continuo a ritenere che DynamoDB sarà una soluzione migliore nel mio caso, tuttavia non so che ci saranno svantaggi significativi per casi eccezionali come questo. – Centurion

+1

@Centurion, se conosci preventivamente il tuo documento id (o simile), puoi ottenere solo il record associato da ciascuna tabella. Ottenere un singolo record da ogni tavolo non è costoso e unirli dopo sembra molto ragionevole. I problemi costosi si verificano quando è necessario eseguire una query o eseguire la scansione: addebiti DynamoDB per ogni record recuperato nella scansione/query, anche se in realtà non vengono restituiti all'applicazione. Ogni volta che si esegue una query o una scansione, si presenta l'opportunità di esaminare l'operazione in modo più dettagliato per cercare di eliminare la query/scansione. –