Saya tidak dapat memahami apa kunci utama Range di sini -
dan bagaimana cara kerjanya?
Apa yang mereka maksud dengan "indeks hash yang tidak berurutan pada atribut hash dan indeks rentang yang diurutkan pada atribut rentang"?
Saya tidak dapat memahami apa kunci utama Range di sini -
dan bagaimana cara kerjanya?
Apa yang mereka maksud dengan "indeks hash yang tidak berurutan pada atribut hash dan indeks rentang yang diurutkan pada atribut rentang"?
" Hash dan Range Primary Key " berarti bahwa satu baris dalam DynamoDB memiliki kunci primer unik yang terdiri dari hash dan kunci range . Misalnya dengan kunci hash X dan kunci rentang Y , kunci utama Anda secara efektif XY . Anda juga dapat memiliki beberapa tombol rentang untuk kunci hash yang sama tetapi kombinasinya harus unik, seperti XZ dan XA . Mari kita gunakan contoh mereka untuk setiap jenis tabel:
Kunci Utama Hash - Kunci utama terbuat dari satu atribut, atribut hash. Misalnya, tabel ProductCatalog dapat memiliki ProductID sebagai kunci utamanya. DynamoDB membangun indeks hash yang tidak teratur pada atribut primary key ini.
Ini berarti bahwa setiap baris tidak memiliki nilai ini. Setiap baris dalam DynamoDB akan memiliki nilai unik yang diperlukan untuk atribut ini . Indeks hash yang tidak berurutan berarti apa yang dikatakan - data tidak dipesan dan Anda tidak diberi jaminan apa pun tentang bagaimana data disimpan. Anda tidak akan dapat membuat query pada indeks unordered seperti Dapatkan saya semua baris yang memiliki lebih ProductID dari X . Anda menulis dan mengambil item berdasarkan kunci hash. Misalnya, Dapatkan saya baris dari yang tabel yang memiliki ProductID X . Anda membuat kueri terhadap indeks tidak berurutan sehingga Anda menentangnya pada dasarnya adalah pencarian nilai kunci, sangat cepat, dan menggunakan sangat sedikit throughput.
Kunci Utama Hash dan Rentang - Kunci utama terbuat dari dua atribut. Atribut pertama adalah atribut hash dan atribut kedua adalah atribut rentang. Misalnya, tabel Thread forum dapat memiliki ForumName dan Subjek sebagai kunci utamanya, di mana ForumName adalah atribut hash dan Subjek adalah atribut range. DynamoDB membangun indeks hash yang tidak berurutan pada atribut hash dan indeks rentang yang diurutkan pada atribut rentang.
Ini berarti bahwa kunci utama setiap baris adalah kombinasi dari hash dan kunci rentang . Anda bisa membuat langsung mendapat di baris tunggal jika Anda memiliki kunci hash dan rentang, atau Anda dapat membuat kueri terhadap indeks rentang yang diurutkan . Misalnya, dapatkan Dapatkan saya semua baris dari tabel dengan kunci H X yang memiliki tombol rentang lebih besar dari Y , atau kueri lain yang memengaruhi itu. Mereka memiliki kinerja yang lebih baik dan penggunaan kapasitas yang lebih sedikit dibandingkan dengan Pemindaian dan Permintaan terhadap bidang yang tidak diindeks. Dari dokumentasi mereka :
Hasil kueri selalu diurutkan berdasarkan tombol rentang. Jika tipe data dari tombol rentang adalah Angka, hasilnya dikembalikan dalam urutan numerik; jika tidak, hasilnya dikembalikan dalam urutan nilai kode karakter ASCII. Secara default, urutan pengurutan naik. Untuk membalikkan urutan, atur parameter ScanIndexForward ke false
Saya mungkin melewatkan beberapa hal saat saya mengetik ini dan saya hanya menggaruk permukaan. Ada banyak lebih aspek untuk mempertimbangkan ketika bekerja dengan DynamoDB tabel (throughput, konsistensi, kapasitas, indeks lainnya, distribusi kunci, dll). Anda harus melihat contoh tabel dan halaman data untuk contoh.
Ketika semuanya bercampur, mari kita lihat fungsi dan kode untuk mensimulasikan apa artinya secara konsisten
Satu- satunya cara untuk mendapatkan baris adalah melalui kunci primer
getRow(pk: PrimaryKey): Row
Struktur data kunci utama dapat berupa ini:
Namun Anda dapat memutuskan kunci utama Anda adalah kunci partisi + kunci sortir dalam kasus ini:
Dengan cara apa pun Anda mendapatkan satu baris dengan kunci primer satu-satunya pertanyaan adalah apakah Anda menetapkan kunci primer hanya untuk kunci partisi atau kunci partisi + tombol sortir
Blok bangunan adalah:
Pikirkan Item sebagai baris dan atribut KV sebagai sel di baris itu.
Anda dapat melakukan (2) hanya jika Anda memutuskan bahwa PK Anda terdiri dari (HashKey, SortKey).
Lebih visual sebagai kompleksnya, cara saya melihatnya:
Jadi apa yang terjadi di atas. Perhatikan pengamatan berikut. Seperti yang kami katakan, data kami adalah milik (Tabel, Item, KVAttribute). Kemudian Setiap Item memiliki kunci utama. Sekarang cara Anda menyusun kunci utama bermakna dalam cara Anda dapat mengakses data.
Jika Anda memutuskan bahwa PrimaryKey Anda hanyalah kunci hash maka hebat Anda bisa mendapatkan satu item dari itu. Namun jika Anda memutuskan bahwa kunci utama Anda adalah hashKey + SortKey maka Anda juga bisa melakukan kueri rentang pada kunci utama Anda karena Anda akan mendapatkan item Anda dengan (HashKey + SomeRangeFunction (pada tombol rentang)). Jadi Anda bisa mendapatkan banyak item dengan kueri kunci utama Anda.
Catatan: Saya tidak merujuk ke indeks sekunder.
sumber
Jawaban yang sudah dijelaskan dengan baik sudah diberikan oleh @mkobit, tapi saya akan menambahkan gambar besar dari tombol rentang dan kunci hash.
Dengan kata sederhana
range + hash key = composite primary key
CoreComponents of DynamodbJadi keduanya memiliki tujuan yang berbeda dan bersama-sama membantu melakukan kueri yang kompleks. Pada contoh di atas Contoh
hashkey1 can have multiple n-range.
lain dari range dan hashkey adalah game, userA(hashkey)
dapat memainkan Ngame(range)
https://www.slideshare.net/InfoQ/amazon-dynamodb-design-patterns-best-practices https://www.slideshare.net/AmazonWebServices/awsome-day-2016-module-4-databases-amazon-dynamodb -and-amazon-rds https://ceyhunozgun.blogspot.com/2017/04/implementing-object-persistence-with-dynamodb.html
sumber
Music
tabel, seorang artis tidak dapat menghasilkan dua lagu dengan judul yang sama, tetapi mengejutkan - dalam permainan video kami memiliki Doom dari tahun 1993 dan Doom dari 2016 en.wikipedia.org/wiki/Doom_(franchise) dengan "artis" yang sama ( pengembang):id Software
.@ vnr Anda dapat mengambil semua kunci sortir yang terkait dengan kunci partisi dengan hanya menggunakan kueri menggunakan kunci partion. Tidak perlu dipindai. Intinya di sini adalah kunci partisi wajib dalam kueri. Sortir kunci hanya digunakan untuk mendapatkan rentang data
sumber