it-swarm.dev

Bagaimana cara bergabung dengan tabel di AWS DynamoDB?

Saya tahu seluruh desain harus didasarkan pada agregat alami (dokumen), namun saya berpikir untuk menerapkan tabel terpisah untuk lokalisasi (lang, kunci, teks) dan kemudian menggunakan kunci di tabel lain. Namun, saya tidak dapat menemukan contoh untuk melakukan ini. 

Petunjuk apa pun mungkin membantu!

24
Centurion

Anda benar, DynamoDB tidak dirancang sebagai basis data relasional dan tidak mendukung operasi gabungan. Anda dapat berpikir tentang DynamoDB sebagai hanya satu set pasangan kunci-nilai.

Anda dapat memiliki kunci yang sama di beberapa tabel (mis. Document_IDs), tetapi DynamoDB tidak secara otomatis menyinkronkannya atau memiliki fitur kunci asing. Document_IDs dalam satu tabel, meskipun dinamai sama, secara teknis merupakan set yang berbeda dari yang ada di tabel yang berbeda. Terserah perangkat lunak aplikasi Anda untuk memastikan bahwa kunci-kunci itu disinkronkan.

DynamoDB adalah cara berpikir yang berbeda tentang basis data dan Anda mungkin ingin mempertimbangkan untuk menggunakan basis data relasional yang dikelola seperti Amazon Aurora: https://aws.Amazon.com/rds/aurora/

Satu hal yang perlu diperhatikan, Amazon EMR memungkinkan tabel DynamoDB bergabung, tapi saya tidak yakin itulah yang Anda cari: http://docs.aws.Amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB .html

24
Reid Hughes

Dengan DynamoDB, daripada bergabung, saya pikir solusi terbaik adalah menyimpan data dalam bentuk yang ingin Anda baca nanti.

Jika Anda menemukan diri Anda membutuhkan kueri baca kompleks Anda mungkin telah jatuh ke dalam perangkap mengharapkan DynamoDB berperilaku seperti RDBMS, padahal sebenarnya tidak. Ubah dan bentuk data yang Anda tulis, buat yang sederhana dibaca.

Disk jauh lebih murah daripada komputer akhir-akhir ini - jangan takut untuk dinormalisasi.

9
Lloyd

Anda harus menanyakan tabel pertama, lalu beralih melalui setiap item dengan permintaan dapatkan di tabel berikutnya. 

Jawaban lainnya tidak memuaskan karena 1) tidak menjawab pertanyaan dan, yang lebih penting, 2) bagaimana Anda bisa merancang tabel Anda terlebih dahulu untuk mengetahui aplikasi mereka di masa depan? Utang teknis terlalu tinggi untuk menutupi kemungkinan yang tidak terbatas di masa depan. 

Jawaban saya sangat tidak efisien tetapi ini adalah satu-satunya solusi saat ini untuk pertanyaan yang diajukan. 

Saya menunggu jawaban yang lebih baik. 

2
James Shiztar

Saya tahu bahwa tanggapan saya sedikit terlambat, beberapa tahun kemudian. Namun, saya dapat menggali beberapa informasi tambahan, mengenai Amazon DynamoDB & Joins, yang mungkin bermanfaat bagi Anda (atau mungkin orang lain, yang mungkin tersandung pada diskusi ini, saat meneliti informasi ini, di masa depan).

Untuk sampai pada intinya, saya dapat menemukan beberapa dokumentasi di Situs Amazon DynamoDB, yang menyatakan bahwa Apache HiveQL Query Language dapat digunakan, untuk melakukan Bergabung di Amazon DynamoDB Tabel, Kolom & Data, dll.

Permintaan Data dalam DynamoDB (w/HiveQL): https://docs.aws.Amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Querying.html

Bekerja dengan Amazon DynamoDB & Apache Hive: https://docs.aws.Amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Tutorial.html

Memproses Data Amazon DynamoDB dengan Apache Hive di Amazon EMR: https://docs.aws.Amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.html

Saya harap informasi ini membantu seseorang keluar, jika bukan poster aslinya.

0
Matti

Baru-baru ini saya memiliki persyaratan yang sama untuk menggunakan fungsi gabungan dan agregat seperti avg dan sum dengan dynamoDb, untuk menyelesaikan ini saya menggunakan driver Cdata JDBC dan bekerja dengan sempurna. Ini mendukung fungsi gabungan juga. Meskipun demikian, saya juga mencari solusi untuk menghindari penggunaan cdata karena biaya lisensi Cdata. 

0
vivek agrawal