Flazzo memiliki fokus utama untuk menambah nilai bisnis Anda.

Blog

Strategi Penskalaan Basis Data – DZone

17046955-thumb.jpg
Blog

Strategi Penskalaan Basis Data – DZone


Mengetahui berbagai teknik penskalaan basis data membantu kami memilih strategi yang tepat untuk memenuhi kebutuhan dan tujuan kami.

Oleh karena itu, dalam artikel ini, kami akan mendemonstrasikan berbagai solusi dan teknik untuk menskalakan server database. Mereka terbagi antara strategi membaca dan menulis.

Putar/Muat

Terkadang kami memiliki aplikasi yang berada di bawah beban seperti itu. Dan untuk mengatasi masalah ini, kami mendemonstrasikan tiga teknik berbeda yang dapat kami terapkan.

Caching

Teknik caching menyimpan data atau tanggapan yang sering diminta dari operasi komputer yang mahal dalam memori sementara. Data yang disimpan dalam cache harus diubah berdasarkan sifat aplikasi, dan untuk memperbaruinya, cache pembatalan dan pengusiran teknik dapat digunakan untuk menjaga konsistensi data. Ini dapat dicapai dengan seumur hidup cache kedaluwarsa (Seumur hidup) atau lainnya tergantung pada model caching yang digunakan.

Model caching yang berbeda dapat digunakan sebagai strategi untuk mengimplementasikan solusi caching. Caching samping mendukung pembacaan berat dan berfungsi bahkan jika cache gagal. membaca Dan Menulis digunakan bersama-sama. Ini adalah alternatif yang bagus untuk beban kerja intensif baca, tetapi kegagalan cache menyebabkan kegagalan sistem. Writeback berguna untuk menulis beban kerja yang berat dan digunakan oleh berbagai implementasi DBMS.

Penskalaan basis data

Caching basis data

Bergantung pada persyaratan seperti intensif baca atau intensif tulis atau campuran keduanya, kita dapat memutuskan model mana yang akan digunakan sehingga kita dapat mengatasi kegagalan cache atau database.

Replikasi

Replikasi bekerja dengan database yang disebut besar di mana semua permintaan tulis datang ke sana. Selain itu, kami membuat salinan persis dari database utama ini sebagai replika simpul baru yang dipanggil sekunder, hanya bertanggung jawab untuk memproses permintaan baca. Basis data master terus-menerus memberi makan node budak dengan data yang lebih baru agar informasi kami tetap konsisten di semua node dalam kluster.

Replikasi adalah strategi yang sangat baik untuk mengelola toleransi kesalahan dan memelihara teorema CAP dan skalabilitas sistem. Misalkan salah satu node turun, kami terus melayani karena kami memiliki data yang sama direplikasi di node lain. Juga dalam sebuah cluster, sebuah node dapat mengambil alih dan menjadi database utama jika node utama gagal. Replikasi juga membantu mengurangi latensi dalam aplikasi, setelah kami dapat menggunakan database kami dan mereplikasi data ke berbagai wilayah seperti CDN dan mudah diakses oleh pengguna lokal.

Scaling Database Teknik Replikasi Database

Replikasi basis data


Sinkron dan asinkron

Selain keunggulan ini, menjaga konsistensi dalam node replika menjadi rumit dengan bertambahnya jumlah node. Masalah ini dapat diselesaikan dengan menggunakan a sinkronis Atau asinkron strategi replikasi sesuai kebutuhan.

Strategi sinkron memiliki keunggulan celah menjadi nol, dan data masih konsisten, tetapi sebagai penurunan kinerja terpengaruh setelah itu perlu menunggu semua replika diperbarui dan dikenali oleh pengirim. Sebaliknya, dalam strategi asinkron, penulisan menjadi lebih cepat karena node master tidak menunggu pengakuan, tetapi memiliki masalah keadaan yang tidak konsisten jika replika gagal memperbarui nilainya.

Perlu diingat bahwa tidak ada solusi ajaib, strategi terbaik tergantung pada kebutuhan kita. Pertukaran harus diasumsikan antara konsistensi, ketersediaan, atau partisi (teorema CAP). Teorema CAP menyatakan bahwa kami hanya dapat menjamin dua di antaranya sekaligus.

Pengindeksan

Pengindeksan digunakan untuk menemukan dan mengakses data dengan cepat, sehingga meningkatkan kinerja aktivitas basis data. Tabel database dapat dikaitkan dengan satu atau lebih indeks.

Pengindeksan meningkatkan kinerja kueri dengan pengambilan data yang lebih cepat, meningkatkan efisiensi akses data, mengurangi jumlah I/O untuk mengambil data. Ini mengoptimalkan penyortiran data karena database tidak perlu mengurutkan seluruh tabel tetapi hanya baris yang relevan. Pengindeksan membuat data tetap konsisten meskipun jumlah data meningkat. Selain itu, pengindeksan menjamin integritas database, menghindari penyimpanan data duplikat.


Kelemahannya, pengindeksan membutuhkan lebih banyak penyimpanan, yang meningkatkan ukuran database. Ini juga meningkatkan biaya pemeliharaan dengan menambahkan, menghapus, dan mengubah tabel. Pengindeksan dapat mengurangi kinerja penyisipan dan pembaruan. Memilih indeks bisa jadi sulit untuk kueri atau aplikasi tertentu.

Secara tertulis

Untuk aplikasi yang banyak menulis ke database dan pengguna terus-menerus merusaknya dengan data baru, kami memiliki strategi sharding dan NoSQL.

Membagikan

Pecahan atau partisi data membantu memisahkan data dari database besar menjadi bagian yang lebih kecil, lebih cepat, dan lebih mudah dikelola dengan membagi database menjadi beberapa database back-end. Ada dua jenis berbagi, vertikal Dan horisontal.

Partisi data memiliki keuntungan dalam mengoptimalkan kueri yang menghasilkan kinerja yang lebih baik dan mengurangi latensi. Ini memungkinkan kemampuan untuk memiliki data pengguna di lokasi berbeda yang dapat diakses lebih cepat untuk pengguna di wilayah tertentu. Selain itu, ia memiliki keuntungan untuk menghindari satu titik kegagalan.

Salah satu kelemahan sharding adalah partisi yang kelebihan beban jika kita tidak menyebarkan data ke seluruh partisi dengan benar. Bergantung pada strategi yang kita pilih, kita mungkin akan mendapatkan beberapa partisi dengan banyak data dan beberapa dengan sedikit data, dan kueri pada partisi besar ini mungkin menjadi lebih lambat. Kelemahan lainnya adalah kembali dan memulihkan keadaan sebelumnya dari strategi tanpa sharding setelah diterapkan dan data tersebar di berbagai basis data.

Penerapan partisi dapat bersifat logis atau fisik. Pemartisian logis terjadi ketika kita memiliki subset data yang berbeda di mesin fisik yang sama, dan partisi fisik dapat memiliki lebih dari satu subset partisi di mesin fisik.

Untuk shard data, kita dapat memilih antara algoritma sharding atau sharding dinamis. Ada berbagai algoritma dan teknik partisi dinamis sejak saat itu berbasis kunci, berbasis jangkauanDan berbasis direktori sharding sebagai yang paling banyak digunakan.

Perpecahan vertikal

Untuk sharding vertikal, kami mengambil setiap tabel dan meletakkannya di mesin yang berbeda. Seperti tabel pengguna, tabel log, atau tabel komentar, masing-masing pada mesin yang berbeda. Partisi vertikal efektif ketika kueri cenderung hanya mengembalikan sebagian kolom data. Misalnya, jika beberapa kueri hanya menanyakan nama dan beberapa hanya menanyakan alamat, nama dan alamat dapat dipisahkan di server terpisah.

Penskalaan Database Partisi Vertikal

Perpecahan vertikal


Perpecahan horizontal

Jika kami memiliki satu tabel yang menjadi sangat besar, kami menerapkan partisi horizontal. Kami mengambil satu tabel dan membagi satu blok data terkait di beberapa mesin. Partisi horizontal efektif ketika kueri cenderung mengembalikan subkumpulan baris yang sering dikelompokkan bersama. Misalnya, kueri yang memfilter data berdasarkan rentang tanggal pendek ideal untuk partisi horizontal, karena rentang tanggal akan membatasi kueri ke satu subkumpulan server.

Perpecahan horizontal

Perpecahan horizontal


Tidak ada SQL

No SQL bukanlah database relasional dan pada dasarnya adalah pasangan kunci-nilai. Pola pasangan kunci-nilai secara alami mampu dengan mudah menskalakan di beberapa mesin yang berbeda. NoSQL diklasifikasikan ke dalam empat kategori utama, berorientasi kolom yang menyimpan data sebagai keluarga kolom, Bagan menyimpan data sebagai node dan edge, Nilai kunci menyimpan data sebagai pasangan kunci-nilai dan Dokumen menyimpan data sebagai dokumen semi-terstruktur.

Kategori Basis Data NoSQL

Kategori Basis Data NoSQL


Itu memungkinkan dinamis rencana yang dapat beradaptasi dengan perubahan tanpa mengubah skema. Juga, menyediakan horisontal skalabilitas karena dirancang untuk menskalakan dengan menambahkan lebih banyak node ke cluster DB. Ini juga dirancang untuk ketersediaan tinggi untuk secara otomatis menangani kegagalan node dan replikasi data di beberapa node cluster.

Basis data non-relasional ini menawarkan beberapa keunggulan dibandingkan basis data relasional, seperti skalabilitas, fleksibilitasDan profitabilitas. Namun, mereka juga memiliki beberapa kelemahan, seperti kurangnya standardisasikurangnya ASAM kepatuhandan kurangnya dukungan untuk kueri yang kompleks.

Kesimpulan

Pada artikel ini, kami telah mendemonstrasikan strategi untuk diterapkan dalam hal skalabilitas basis data.

Kami membaginya antara strategi membaca dan menulis. Untuk membaca, kita bisa menerapkan yang berbeda caching mekanisme, replikasi dengan database primer dan sekunder serta menerapkan pengindeksan untuk menemukan dan mengakses data dengan cepat. Untuk skalabilitas penulisan, ada strategi sharding atau NoSQl, dengan kelebihan dan kekurangannya.

Akhirnya, perlu diingat bahwa tidak ada solusi yang sempurna, kita perlu memahami kebutuhan kita dan menerapkan trade-off untuk memilih strategi terbaik untuk aplikasi kita.