Daftar Isi:
Video: Firebase Security Rules with Mike McDonald - #AskFirebase 2024
Kemampuan baca cepat dari Key-value store berasal dari penggunaan kunci yang didefinisikan dengan baik. Kunci ini biasanya memiliki hash, yang memberi nilai kunci menyimpan cara yang sangat mudah diprediksi untuk menentukan data partisi (dan server mana) yang berada. Server tertentu mengelola satu atau lebih partisi.
Kunci yang bagus memungkinkan Anda untuk secara unik mengidentifikasi rekaman tunggal yang menjawab kueri tanpa harus melihat nilai apapun dalam rekaman itu. Kunci buruk mengharuskan kode aplikasi Anda menafsirkan catatan Anda untuk menentukan apakah itu benar, sesuai dengan kueri.
Jika Anda tidak merancang kunci Anda dengan baik, Anda mungkin akan mendapatkan satu server dengan beban yang tidak proporsional lebih berat daripada yang lain, yang menyebabkan kinerja buruk. Dengan menggunakan sistem saat ini sebagai kunci, misalnya, mendorong semua data baru ke simpul terakhir di cluster, yang mengarah ke skenario mimpi buruk untuk menyeimbangkan kembali.
Partitioning
Desain partisi penting karena beberapa toko dengan nilai penting, seperti Oracle NoSQL, tidak membiarkan jumlah partisi dimodifikasi begitu sebuah cluster dibuat. Distribusi mereka di server, bisa dimodifikasi. Jadi mulailah dengan sejumlah besar partisi yang bisa Anda sebarkan di masa depan.
Salah satu contoh partisi adalah pendekatan hashing konsisten Voldemort, seperti yang ditunjukkan. Di sini Anda melihat partisi yang sama tersebar di tiga server pada awalnya dan kemudian di empat server nanti. Jumlah partisi tetap sama, namun alokasi mereka berbeda antar server. Hal yang sama berlaku untuk replika mereka.
Mengakses data pada partisi
Toko dengan nilai kunci sangat terdistribusi tanpa satu titik kegagalan. Ini berarti tidak ada kebutuhan untuk node koordinat master untuk melacak server dalam sebuah cluster. Pengelolaan klaster dilakukan secara otomatis oleh protokol chat antar node di server.
Anda dapat menggunakan tipuan pada driver klien untuk memeras performa maksimal dari mengambil dan menyimpan kunci dan nilai - driver klien melacak server mana yang memegang berbagai tombol. Jadi pengandar klien selalu tahu server mana yang harus diajak bicara.
Sebagian besar database, termasuk NoSQL, meneruskan permintaan ke semua anggota cluster. Cluster tersebut entah menerima tulisan secara internal atau melewatinya di bawah kap ke simpul yang benar. Pengaturan ini berarti perjalanan jaringan ekstra antar node dimungkinkan, yang dapat menambah latency.
Untuk menghindari latency penemuan, kebanyakan driver klien 'key-value store mempertahankan daftar metadata dari node saat ini dalam sebuah cluster dan kunci partisi mana masing-masing mengangguk.Dengan cara ini, driver klien dapat menghubungi server yang benar, yang membuat operasi lebih cepat.
Jika simpul baru ditambahkan ke cluster dan metadata sudah kadaluarsa, cluster tersebut menginformasikan driver klien, yang kemudian mendownload metadata cluster terbaru sebelum mengirim ulang permintaan ke node yang benar. Dengan cara ini throughput maksimum dipertahankan dengan minimum overhead selama pengembangan. Manfaat sisi lain adalah tidak perlu penyeimbang beban untuk meneruskan kueri ke server server satu server yang ada, atau yang paling sibuk, hanya satu server (atau baca replika server) yang pernah menerima permintaan klien, jadi tidak perlu load balancing..