Bagikan melalui


Rekomendasi untuk mengoptimalkan performa data

Berlaku untuk rekomendasi daftar periksa Efisiensi Performa Azure Well-Architected Framework ini:

PE:08 Optimalkan performa data. Optimalkan penyimpanan data, partisi, dan indeks untuk penggunaan yang dimaksudkan dan aktual dalam beban kerja.

Panduan ini menjelaskan rekomendasi untuk mengoptimalkan performa data. Mengoptimalkan performa data adalah tentang menyempurnakan efisiensi yang digunakan untuk memproses beban kerja dan menyimpan data. Setiap operasi, transaksi, atau komputasi beban kerja biasanya bergantung pada pengambilan, pemrosesan, dan penyimpanan data yang cepat dan akurat. Ketika performa data dioptimalkan, beban kerja berjalan dengan lancar. Performa data yang disusupi menciptakan efek domino dari efisiensi performa yang buruk. Kegagalan untuk mengoptimalkan performa data menghasilkan penundaan respons, latensi tinggi, dan skalabilitas yang dikurangi. Ini membahmari efisiensi seluruh beban kerja.

Definisi

Istilah Definisi
Teori CAP Kerangka kerja yang digunakan untuk mempertimbangkan konsistensi, ketersediaan, dan toleransi partisi untuk membantu menjelaskan tradeoff dalam konsistensi data.
Pembangunan ulang indeks database Aktivitas pemeliharaan yang menghilangkan dan membuat ulang indeks.
Reorganisasi indeks database Aktivitas pemeliharaan yang mengoptimalkan indeks database saat ini.
Penyimpanan data Sumber daya yang menyimpan data seperti database, penyimpanan objek, atau berbagi file.
Konsistensi akhir Model sinkronisasi data yang memungkinkan inkonsistensi sementara dalam replika data sebelum akhirnya disinkronkan.
Indeks Struktur database yang menyediakan akses cepat ke item.
Pemrosesan analitik online (OLAP) Teknologi yang mengatur database bisnis besar, mendukung analisis kompleks, dan melakukan kueri analitik yang kompleks tanpa memengaruhi sistem transaksi.
Pemrosesan transaksi online (OLTP) Teknologi yang mencatat interaksi bisnis saat terjadi dalam operasi organisasi sehari-hari.
Konkurensi optimis Pendekatan untuk memperbarui database yang menggunakan rekam jepret untuk membuat pembaruan alih-alih mekanisme penguncian tradisional, meningkatkan performa dan skalabilitas.
Teori PACELC Kerangka kerja yang digunakan untuk mempertimbangkan toleransi partisi, ketersediaan, konsistensi, dan latensi untuk membantu menjelaskan tradeoff dalam konsistensi data.
Partisi Proses pembagian data secara fisik menjadi penyimpanan data terpisah.
Penyetelan kueri Proses yang mengoptimalkan kecepatan kueri database.
Replika baca Salinan langsung database utama yang memungkinkan Anda membongkar lalu lintas baca dari database tulis.

Strategi desain utama

Untuk mengoptimalkan penggunaan data, pastikan bahwa penyimpanan data, partisi, dan indeks dioptimalkan untuk penggunaan yang dimaksudkan dan untuk penggunaan aktualnya dalam beban kerja. Penggunaan data yang dioptimalkan dapat meningkatkan performa kueri, mengurangi konsumsi sumber daya, dan meningkatkan efisiensi sistem secara keseluruhan. Pertimbangkan strategi berikut:

  • Data profil. Pahami data Anda dan pastikan model data Anda sangat cocok untuk beban kerja Anda. Pertimbangkan faktor-faktor seperti normalisasi data, strategi pengindeksan, dan teknik partisi. Untuk pengambilan data yang efisien, pastikan Anda memilih jenis data yang sesuai, menentukan hubungan antar entitas, dan menentukan strategi pengindeksan yang optimal.

  • Menyempurnakan konfigurasi penyimpanan data Anda. Konfigurasikan infrastruktur penyimpanan data Anda agar selaras dengan persyaratan beban kerja Anda. Pilih teknologi penyimpanan yang sesuai, misalnya database relasional, database NoSQL, dan gudang data. Optimalkan pengaturan penyimpanan, seperti ukuran buffer, mekanisme penembolokan, dan pemadatan.

  • Optimalkan kinerja kueri. Menganalisis dan mengoptimalkan kueri yang berjalan dalam beban kerja. Gunakan teknik seperti pengoptimalan kueri, pengindeksan, dan penembolokan. Untuk mengidentifikasi hambatan, gunakan rencana kueri dan alat pemantauan performa, lalu lakukan penyempurnaan yang diperlukan.

  • Memantau dan menyempurnakan sistem secara teratur. Terus pantau performa beban kerja Anda dan ulangi konfigurasi penyimpanan data dan pengoptimalan kueri. Berdasarkan praktik terbaik penyetelan performa, analisis metrik sistem, identifikasi area peningkatan, dan terapkan perubahan.

Data profil

Pembuatan profil data melibatkan pemeriksaan data dari sumber dan mengumpulkan informasi tentang hal itu. Tujuannya adalah untuk memahami kualitas, struktur, dan karakteristik data beban kerja. Proses ini memungkinkan identifikasi masalah seperti nilai yang hilang, duplikat, format yang tidak konsisten, dan anomali lainnya. Untuk pembuatan profil data yang efektif, pertimbangkan strategi berikut:

  • Pahami struktur data. Periksa struktur data Anda, termasuk tabel, kolom, dan hubungan. Tentukan jenis data, panjang, dan batasan yang diterapkan ke setiap kolom. Evaluasi struktur data membantu Anda memahami bagaimana data diatur dan hubungannya dengan elemen data lainnya.

  • Menganalisis volume data. Menilai volume data Anda untuk memahami ukuran keseluruhan dan pola pertumbuhan. Tentukan jumlah rekaman atau dokumen dan ukuran tabel atau koleksi individual. Informasi ini membantu Anda memperkirakan persyaratan penyimpanan dan mengidentifikasi masalah skalabilitas.

  • Identifikasi hubungan data. Jelajahi hubungan antara elemen data, seperti hubungan kunci primer dan asing. Pahami bagaimana data tersambung, sehingga Anda bisa menentukan bagaimana perubahan dalam satu tabel atau dokumen dapat memengaruhi data terkait.

  • Menilai kualitas data. Evaluasi kualitas data Anda dengan memeriksa faktor-faktor seperti kelengkapan, akurasi, konsistensi, dan keunikan. Identifikasi anomali data, nilai yang hilang, atau rekaman duplikat yang mungkin memengaruhi integritas data dan performa kueri. Langkah ini membantu Anda mengidentifikasi area untuk pembersihan dan peningkatan data.

  • Mengambil distribusi data. Analisis distribusi nilai dalam setiap kolom untuk menentukan pola data. Identifikasi nilai, outlier, dan ke condong data yang sering dan langka. Untuk mengoptimalkan performa kueri, pilih strategi pengindeksan yang sesuai dan teknik pengoptimalan kueri berdasarkan distribusi.

Memantau performa data

Pemantauan performa data adalah praktik pelacakan efisiensi penyimpanan data, partisi, dan indeks secara real-time secara konsisten. Ini melibatkan pengumpulan dan analisis metrik performa khusus untuk operasi data, menggunakan alat yang disesuaikan untuk solusi pemantauan tingkat sistem, khusus database, atau pihak ketiga. Pemantauan performa data yang efektif memungkinkan Anda untuk secara proaktif mengidentifikasi dan mengurangi potensi penyempitan, memastikan bahwa proses dan tugas terkait data efisien. Untuk memantau performa data, pertimbangkan strategi berikut:

  • Mengumpulkan metrik khusus data. Kumpulkan metrik utama yang secara langsung terkait dengan performa data. Metrik ini mencakup waktu respons kueri, throughput data, I/O disk yang terkait dengan akses data, dan waktu pemuatan partisi data tertentu.

  • Menyiapkan pemberitahuan data. Siapkan pemberitahuan khusus untuk metrik data. Gunakan ambang atau anomali yang telah ditentukan sebelumnya dalam metrik ini untuk memicu pemberitahuan. Pemberitahuan memungkinkan Anda menerima pemberitahuan saat metrik performa melebihi rentang yang dapat diterima atau menunjukkan perilaku abnormal. Misalnya, jika kueri database membutuhkan waktu lebih lama dari yang diharapkan atau jika throughput data turun secara signifikan, itu akan memicu pemberitahuan. Anda dapat menyiapkan pemberitahuan ini menggunakan alat pemantauan khusus atau skrip kustom.

  • Mendiagnosis masalah performa data. Tinjau metrik data yang dikumpulkan secara teratur untuk menentukan potensi penyempitan performa atau degradasi dalam operasi data. Alat atau dasbor visualisasi dapat sangat berharga dalam proses ini, membantu menyoroti tren, penyempitan, dan outlier dalam performa data. Setelah diidentifikasi, pelajari akar penyebab masalah ini dan strategikan langkah-langkah remediasi yang sesuai.

Data partisi

Pemartisian melibatkan pembagian himpunan data besar atau beban kerja volume tinggi menjadi subset yang lebih kecil dan dapat dikelola. Partisi meningkatkan efisiensi performa data dengan mendistribusikan beban kerja dan meningkatkan pemrosesan paralel. Ini juga memastikan akses data yang lebih efektif berdasarkan kebutuhan dan pola kueri tertentu. Anda dapat mempartisi data secara vertikal atau horizontal (juga disebut sharding).

Strategi Definisi Contoh Kasus penggunaan
Partisi vertikal Bagi tabel menjadi tabel yang lebih kecil dengan memilih kolom atau bidang tertentu untuk setiap partisi. Setiap partisi mewakili subset data lengkap. Jika Anda memiliki tabel dengan kolom A, B, C, dan D, Anda bisa membuat satu tabel dengan kolom A dan B dan tabel lainnya dengan kolom C dan D. - Tabel berisi banyak kolom, tetapi kueri tidak mengakses semua kolom bersama-sama.
- Beberapa kolom lebih besar dari yang lain dan memisahkannya dapat meningkatkan performa I/O.
- Bagian data yang berbeda memiliki pola akses yang beragam.
Pemartisian horizontal Pisahkan data berdasarkan baris atau rentang nilai (juga dikenal sebagai sharding). Setiap partisi berisi subset baris dengan karakteristik yang sama. Jika Anda memiliki tabel dengan baris 1 hingga 1000, Anda mungkin membuat satu partisi dengan baris 1 hingga 500 dan yang lain dengan baris 501 hingga 1000. - Himpunan data terlalu besar untuk satu lokasi atau server.
- Data diakses berdasarkan rentang atau filter tertentu.
- Perlu mendistribusikan beban kerja di seluruh simpul fisik atau server untuk meningkatkan performa.

Untuk mempartisi data Anda, pertimbangkan langkah-langkah berikut:

  • Menganalisis data dan kueri. Analisis pola data dan kueri untuk mengidentifikasi strategi pemartisian atau pemecahan yang sesuai. Pahami sifat data, pola akses, dan persyaratan distribusi.

  • Tentukan kunci. Pilih kunci partisi atau sharding untuk mendistribusikan data di seluruh partisi atau pecahan. Pilih kunci dengan hati-hati berdasarkan karakteristik data dan persyaratan kueri.

  • Tentukan logika. Tentukan logika partisi atau sharding berdasarkan kunci yang dipilih. Pertimbangkan untuk membalik data menjadi rentang, menerapkan algoritma hash, atau menggunakan teknik pemartisian lainnya.

  • Mengonfigurasi infrastruktur. Konfigurasikan sistem database untuk mendukung partisi atau sharding. Pertimbangkan untuk membuat infrastruktur yang diperlukan, menentukan partisi atau pecahan, dan mengonfigurasi distribusi data.

Untuk informasi selengkapnya, lihat Panduan partisi data.

Mengoptimalkan kueri database

Mengoptimalkan kueri database menyempurnakan kueri menggunakan teknik petunjuk indeks dan penembolokan tersebut. Penyesuaian ini meningkatkan efisiensi dan kecepatan pengambilan data. Akibatnya, database memiliki beban kerja yang lebih ringan, sumber daya bekerja lebih efektif, dan pengguna menikmati interaksi yang lebih lancar. Untuk mengoptimalkan kueri database, pertimbangkan strategi berikut:

  • Menulis ulang kueri. Tinjau dan analisis kueri kompleks untuk mengidentifikasi peluang untuk menulis ulang kueri tersebut. Pertimbangkan untuk merestrukturisasi logika kueri, menghilangkan operasi redundan, atau menyederhanakan sintaks kueri.

  • Hindari masalah kueri N+1. Minimalkan jumlah perjalanan pulang pergi ke database dengan menggunakan gabungan dan pengambilan batch untuk mengambil data terkait secara efisien.

  • Menyusun ulang gabungan. Evaluasi rencana kueri dan pertimbangkan untuk mengatur ulang urutan gabungan untuk meminimalkan jumlah baris di setiap operasi gabungan. Urutan di mana Anda menggabungkan tabel dapat memengaruhi performa kueri.

  • Gunakan petunjuk indeks. Gunakan petunjuk indeks sehingga mesin database dapat menentukan penggunaan indeks saat menjalankan kueri. Petunjuk indeks memandu pengoptimal untuk memilih indeks yang paling tepat.

  • Kueri cache. Simpan hasil kueri yang sering dijalankan dalam memori. Penembolokan kueri menghilangkan kebutuhan untuk berulang kali menjalankan kueri yang sama, dan mengurangi overhead pemrosesan kueri.

  • Optimalkan penguncian. Hindari petunjuk kunci yang tidak perlu atau ketat dalam kueri. Strategi penguncian yang efisien dapat meningkatkan performa dan konkurensi kueri. Terapkan mekanisme penguncian yang dioptimalkan yang disediakan sistem database. Menganalisis dan menyesuaikan tingkat isolasi untuk menyeimbangkan konsistensi data dan performa kueri.

  • Pantau dan sesuaikan. Pantau metrik performa kueri, seperti runtime, pemanfaatan sumber daya, dan throughput kueri. Gunakan alat pembuatan profil database dan fungsionalitas pemantauan untuk mengidentifikasi kueri berkinerja buruk. Mengevaluasi dan menyempurnakan rencana kueri berdasarkan data performa yang dikumpulkan. Menganalisis rencana kueri dan menunggu statistik untuk mengidentifikasi hambatan. Gunakan informasi tersebut untuk mengoptimalkan performa kueri.

Mengoptimalkan performa indeks

Indeks meningkatkan kecepatan pengambilan data dengan memungkinkan database menemukan data dengan cepat menggunakan kolom atau bidang tertentu. Saat Anda mengoptimalkan indeks ini, pengurutan dan operasi gabungan menjadi lebih efisien, yang mengarah ke kueri yang lebih cepat. Indeks yang dioptimalkan dengan baik mengurangi operasi I/O disk yang diperlukan untuk kueri. Menghapus indeks yang tidak perlu atau berlebihan juga membebaskan ruang penyimpanan yang berharga. Untuk mengoptimalkan performa indeks, pertimbangkan strategi berikut:

  • Menganalisis pola kueri. Pahami pola kueri yang berjalan di database Anda. Identifikasi kueri yang sering berjalan dan mungkin menurunkan performa. Analisis pola kueri untuk menentukan indeks mana yang bermanfaat untuk mengoptimalkan performa.

  • Mengevaluasi indeks yang ada. Tinjau indeks yang sudah ada di database Anda. Evaluasi penggunaan, efek performa, dan relevansinya dengan pola kueri. Identifikasi indeks yang berlebihan atau tidak digunakan yang dapat Anda hapus untuk meningkatkan performa tulis dan mengurangi overhead penyimpanan.

  • Identifikasi kolom untuk pengindeksan. Identifikasi kolom yang sering digunakan di tempat, gabungan, dan urutan berdasarkan klausa kueri Anda. Kolom ini adalah kandidat potensial untuk pengindeksan karena dapat mengaktifkan pengambilan data yang cepat.

  • Pilih jenis indeks yang sesuai. Pilih jenis indeks yang sesuai berdasarkan sistem database Anda. Opsi umum termasuk indeks b-tree untuk kueri kesetaraan dan rentang, indeks hash untuk kueri pencocokan yang tepat, dan indeks teks lengkap untuk operasi pencarian teks. Pilih jenis indeks yang paling sesuai dengan persyaratan kueri Anda.

  • Pertimbangkan urutan kolom indeks. Saat Anda membuat indeks komposit, atau indeks dengan beberapa kolom, pertimbangkan urutan kolom. Tempatkan kolom yang paling sering digunakan dalam kueri di awal indeks. Urutan kolom membantu memastikan bahwa beban kerja Anda secara efektif menggunakan indeks untuk berbagai kueri.

  • Seimbangkan ukuran indeks. Hindari membuat indeks pada kolom dengan kardinalitas rendah, atau kolom yang memiliki jumlah nilai berbeda yang rendah. Indeks tersebut bisa tidak efisien dan meningkatkan ukuran database Anda. Sebagai gantinya, indeks kolom yang memiliki selektivitas tinggi.

  • Pertahankan penggunaan indeks. Terus pantau penggunaan dan performa indeks Anda. Cari peluang untuk membuat indeks baru atau memodifikasi indeks yang ada berdasarkan perubahan pola kueri atau persyaratan performa. Hapus atau perbarui indeks yang tidak lagi bermanfaat. Indeks memiliki overhead pemeliharaan. Saat data berubah, indeks dapat memecah dan memengaruhi performa. Lakukan tugas pemeliharaan indeks secara teratur, seperti membangun kembali atau mengatur ulang indeks, untuk memastikan performa yang optimal.

  • Uji dan validasi. Sebelum Anda merevisi indeks di lingkungan produksi, lakukan pengujian dan validasi menyeluruh. Mengukur efek performa revisi indeks dengan menggunakan beban kerja yang representatif. Verifikasi peningkatan terhadap tolok ukur yang telah ditentukan sebelumnya.

Tradeoff: Indeks pohon B mungkin memiliki overhead penyimpanan yang tinggi, dan kueri pencocokan persis mungkin lambat. Indeks hash tidak cocok untuk kueri rentang atau operator perbandingan. Indeks teks lengkap mungkin memiliki persyaratan penyimpanan yang tinggi, dan kueri data nontekstual mungkin lambat.

Pertimbangkan pemadatan data

Kompresi data adalah proses mengurangi ukuran data untuk mengoptimalkan ruang penyimpanan dan meningkatkan efisiensi performa beban kerja. Data terkompresi membutuhkan lebih sedikit ruang penyimpanan dan lebih sedikit bandwidth untuk transmisi, yang menghasilkan transfer data yang cepat. Anda akan mengompresi data untuk mengurangi jejak penyimpanan Anda dan meningkatkan waktu akses data. Saat Anda mengompresi data, ini mengurangi operasi I/O dan persyaratan bandwidth jaringan.

Kompresi lossless dan kompresi lossy adalah algoritma kompresi data. Algoritma kompresi lossless mengurangi ukuran data tanpa kehilangan informasi apa pun. Algoritma kompresi lossy mencapai rasio kompresi tinggi dengan menghapus informasi yang kurang penting atau berlebihan.

Tradeoff: Untuk mengompresi dan mendekompresi data, Anda memerlukan sumber daya komputasi, seperti CPU dan memori. Semakin banyak data yang Anda kompres, semakin banyak sumber daya yang Anda butuhkan.

Mengarsipkan dan menghapus menyeluruh data

Pengarsipan dan pembersihan adalah strategi yang menyederhanakan penyimpanan data. Pengarsipan merelokasi data yang lebih lama dan kurang sering diakses ke penyimpanan yang lebih hemat biaya. Menghapus menyeluruh data secara permanen menghapus data yang berlebihan. Mereka berkontribusi pada efisiensi performa dengan mengurangi volume data, meningkatkan kecepatan akses data, dan mengurangi waktu pencadangan dan pemulihan:

  • Mengurangi volume data: Lebih sedikit data berarti waktu pemrosesan yang lebih cepat, memastikan respons cepat terhadap permintaan pengguna.

  • Meningkatkan kecepatan akses data: Himpunan data yang dipangkas memungkinkan kueri swifter dan pengambilan data, mengoptimalkan respons sistem.

  • Mengurangi waktu pencadangan dan pemulihan: Himpunan data yang lebih kecil mempercepat proses pencadangan dan pemulihan, meminimalkan waktu henti dan memastikan performa yang konsisten.

Pengarsipan dan pembersihan berperan dalam menjaga efisiensi performa puncak dalam sistem berbasis data.

Mengoptimalkan beban penyimpanan

Mengoptimalkan beban penyimpanan berarti menyederhanakan permintaan ke sistem penyimpanan. Ini membantu menghilangkan permintaan yang tidak perlu. Ini juga meningkatkan pengambilan data dan mencegah penyimpanan yang luar biasa. Mengoptimalkan beban penyimpanan memastikan sistem penyimpanan tetap responsif terhadap permintaan yang sah dan mempertahankan performa puncak. Terapkan strategi untuk mengurangi beban pemrosesan pada penyimpanan data. Untuk mengoptimalkan beban penyimpanan data, pertimbangkan strategi berikut:

Gunakan penembolokan

Penembolokan menyimpan data yang umumnya diakses di area penyimpanan akses cepat, membuat pengambilan data lebih cepat daripada menariknya dari sumber utama. Teknik ini meningkatkan performa data dengan mengurangi waktu akses dan menghindari pengambilan data berulang. Penembolokan meningkatkan kecepatan baca dan waktu respons pengguna, terutama untuk data yang sering diakses Metode ini paling efektif pada data statis atau data yang jarang berubah.

Untuk memastikan efisiensi penembolokan yang optimal, pertimbangkan faktor-faktor seperti kebijakan kedaluwarsa, strategi pengeluaran, dan mengelola ukuran cache. Sesuaikan pengaturan, seperti waktu hidup (TTL), untuk performa optimal. Untuk menggunakan cache untuk mengoptimalkan beban penyimpanan, pertimbangkan strategi berikut:

  • Penembolokan dalam memori: Lakukan penembolokan dalam memori untuk menyimpan data yang sering diakses dalam memori untuk pengambilan cepat. Anda dapat menggunakan teknik ini untuk data aplikasi yang mahal untuk menghitung atau mengambil dari database. Penembolokan dalam memori berguna untuk data yang sering Anda baca tetapi tidak sering berubah.

  • Penembolokan kueri database: Gunakan teknik ini untuk menyimpan cache hasil kueri database untuk menghindari menjalankan kueri yang sama beberapa kali. Penembolokan kueri database berguna untuk kueri database yang kompleks dan memakan waktu. Saat Anda menyimpan hasil kueri dalam cache, permintaan berikutnya untuk kueri yang sama dikembalikan dengan cepat.

  • Penembolokan jaringan pengiriman konten: Gunakan teknik ini untuk menyimpan konten web di server jaringan terdistribusi untuk mengurangi latensi dan meningkatkan pengiriman konten. Penembolokan jaringan pengiriman konten efektif untuk konten statis, seperti gambar, file CSS, dan file JavaScript. Jaringan pengiriman konten menyimpan salinan konten di beberapa lokasi di seluruh dunia, sehingga pengguna dapat mengakses konten dari server yang berada di dekat mereka secara geografis.

Menggunakan replika baca

Banyak database mendukung beberapa replika baca. Distribusikan kueri baca di seluruh replika untuk meminimalkan permintaan pada database tulis. Setiap replika baca dapat melayani subset lalu lintas, yang dapat meningkatkan performa.

Ketika Anda memiliki beban kerja dengan beberapa replika data yang Anda harapkan untuk tetap sinkron, akan sangat membantu untuk memodelkan sistem terdistribusi ini dengan menggunakan teori PACELC. Teori PACELC membantu Anda memahami latensi versus pilihan tradeoff konstansi dalam keadaan sistem yang tidak dipartisi. Gunakan informasi ini untuk membantu Anda memilih mesin database dan strategi sinkronisasi data yang paling sesuai dengan sistem dalam status dipartisi dan tidak dipartisi. Untuk informasi selengkapnya, lihat pola Pemisahan Tanggung Jawab Perintah dan Kueri (CQRS).

Mengoptimalkan konsistensi data

Dalam beban kerja terdistribusi, di mana data berada di beberapa simpul atau lokasi, tingkat konsistensi yang Anda pilih menentukan seberapa cepat perubahan dalam satu lokasi mencerminkan orang lain. Memilih konsistensi yang lebih ketat mengonsumsi lebih banyak sumber daya komputasi dan dapat berdampak negatif pada efisiensi performa. Di sisi lain, tingkat konsistensi yang kurang ketat, seperti konsistensi akhirnya memperkenalkan inkonsistensi sementara di antara simpul tetapi dapat meningkatkan efisiensi performa.

Konsistensi akhirnya mencapai keseimbangan antara akurasi data dan performa beban kerja. Perubahan menyebar secara bertahap alih-alih secara instan, meningkatkan respons beban kerja dan kecepatan pemrosesan data. Meskipun memperkenalkan inkonsistensi berumur pendek, beban kerja akhirnya menyajikan data yang konsisten di semua simpul. Memilih konsistensi akhirnya dapat meningkatkan performa beban kerja dan lebih meningkatkan ketersediaan dan skalabilitasnya.

Optimalkan pembaruan data

Anda dapat menggunakan konkurensi optimis untuk menangani pembaruan bersamaan ke data yang sama. Alih-alih mengunci data dan mencegah pembaruan lainnya, konkurensi optimis memungkinkan beberapa pengguna atau proses untuk bekerja bersamaan dan mengasumsikan bahwa konflik jarang terjadi.

Dengan konkurensi optimis, setiap operasi pembaruan menyertakan versi atau tanda waktu yang mewakili status data pada saat pembaruan. Ketika pembaruan yang berkonflik terdeteksi, sistem menyelesaikan konflik dengan menolak pembaruan atau menggabungkan perubahan.

Konkurensi optimis meminimalkan ketidakcocokan dan memungkinkan pembaruan bersamaan untuk dilanjutkan tanpa penguncian yang tidak perlu. Ini mengurangi waktu tunggu untuk sumber daya dan memberikan throughput tinggi.

Mengoptimalkan pergerakan dan pemrosesan data

Mengoptimalkan pergerakan dan pemrosesan data melibatkan peningkatan efisiensi dan performa operasi yang terkait dengan ekstraksi, transformasi, pemuatan, dan pemrosesan data. Pertimbangkan aspek utama berikut untuk mengoptimalkan pergerakan dan pemrosesan data:

  • Pengoptimalan ekstraksi, transformasi, dan pemuatan (ETL): Optimalkan proses ETL untuk meminimalkan waktu pemrosesan. Anda dapat menyederhanakan proses ekstraksi, menerapkan algoritma transformasi yang efisien, dan mengoptimalkan proses pemuatan. Ketika Anda membuat setiap langkah efisien, Anda dapat mengoptimalkan alur kerja secara keseluruhan.

  • Pemrosesan paralel: Memanfaatkan teknik pemrosesan paralel untuk meningkatkan performa. Saat Anda mendistribusikan tugas pemrosesan data di beberapa utas atau simpul, Anda dapat membagi dan memproses beban kerja secara bersamaan, yang menghasilkan pemrosesan cepat.

  • Pemrosesan batch: Kelompokkan tugas serupa bersama-sama untuk mengurangi overhead yang disebabkan oleh operasi berulang. Proses beberapa tugas dalam batch untuk mengurangi waktu pemrosesan secara keseluruhan.

Mengoptimalkan desain penyimpanan

Mengoptimalkan desain penyimpanan memerlukan pembuatan arsitektur penyimpanan data yang tepat dan memilih teknologi penyimpanan yang sesuai. Desain penyimpanan yang disederhanakan meningkatkan akses, pengambilan, dan manipulasi data. Melalui desain penyimpanan strategis, beban kerja mencapai peningkatan waktu respons dan fungsionalitas keseluruhan.

Desain untuk kedekatan data

Kedekatan data mengacu pada penempatan data strategis yang lebih dekat dengan pengguna atau layanan yang paling sering mengaksesnya. Dengan mengurangi jarak fisik atau logis antara data dan penggunanya, kedekatan data memastikan akses data yang lebih cepat dan meningkatkan responsivitas. Untuk mengoptimalkan desain untuk jarak yang dekat, pertimbangkan strategi ini:

  • Mengevaluasi pola akses data: Menilai pola akses beban kerja Anda dan data yang sering diakses. Analisis ini dapat membantu menentukan tempat menempatkan data untuk manfaat maksimum.

  • Pilih solusi yang mendukung relokasi data: Pertimbangkan solusi yang menawarkan relokasi data dinamis berdasarkan perubahan pola akses, memastikan pemosisian data yang optimal.

  • Pilih solusi yang mendukung sinkronisasi data: Jika melayani basis pengguna terdistribusi, pilih solusi yang memfasilitasi sinkronisasi data di berbagai wilayah, memastikan bahwa replika data tersedia di dekat pengguna.

Tradeoff: Jika data yang mendasar sering berubah, terapkan mekanisme invalidasi cache untuk memastikan bahwa data yang di-cache tetap terbaru.

Menggunakan persistensi poliglot

Persistensi poliglot adalah praktik menggunakan beberapa teknologi penyimpanan data untuk menyimpan dan mengelola berbagai jenis data dalam aplikasi atau sistem. Berbagai jenis database atau solusi penyimpanan melayani persyaratan data yang berbeda.

Persistensi poliglot memanfaatkan manfaat dari setiap teknologi penyimpanan data untuk memastikan performa dan skalabilitas yang optimal untuk setiap jenis data. Misalnya, Anda dapat menggunakan database relasional untuk menyimpan data transaksional terstruktur. Dan Anda mungkin menggunakan database NoSQL untuk menyimpan data yang tidak terstruktur atau semi terstruktur.

Rancang skema untuk setiap teknologi penyimpanan data berdasarkan persyaratan data. Untuk database relasional, Anda mungkin membuat tabel yang dinormalisasi dengan hubungan yang sesuai. Untuk database NoSQL, Anda dapat menentukan struktur dokumen atau pasangan kunci-nilai. Kembangkan komponen yang diperlukan untuk berinteraksi dengan setiap teknologi penyimpanan data, seperti API, lapisan akses data, atau alur integrasi data. Pastikan bahwa aplikasi dapat membaca dan menulis data ke penyimpanan data yang sesuai.

Tradeoff: Struktur data yang memiliki normalisasi rendah dapat meningkatkan performa tetapi memperkenalkan kompleksitas.

Memisahkan sistem OLTP dan OLAP

Untuk memisahkan sistem OLTP dan OLAP , rancang dan sebarkan sistem yang berbeda untuk pemrosesan transaksi dan tugas pemrosesan analitis. Pemisahan ini memungkinkan Anda mengoptimalkan setiap sistem untuk beban kerja dan karakteristik spesifiknya.

Sistem OLTP digunakan untuk pemrosesan transaksi real time. Mereka secara efisien dan andal menangani transaksi individu. Sistem OLTP biasanya digunakan untuk melakukan tugas operasional sehari-hari, seperti pemrosesan pesanan online, manajemen inventarisasi, dan manajemen data pelanggan. Sistem OLTP memprioritaskan responsivitas, konsistensi, dan konkurensi.

Sistem OLAP digunakan untuk pemrosesan dan pelaporan analitik yang kompleks. Mereka menangani data dalam volume besar dan melakukan perhitungan dan agregasi intensif. Sistem OLAP digunakan untuk tugas-tugas seperti kecerdasan bisnis, penggalian data, dan dukungan keputusan. Sistem OLAP memprioritaskan performa kueri, agregasi data, dan analisis multidmensional.

Saat memisahkan sistem OLTP dan OLAP, Anda dapat mengalokasikan sumber daya yang sesuai dan mengoptimalkan setiap sistem untuk beban kerja spesifiknya. Pemisahan memungkinkan Anda menerapkan teknik pemodelan data yang berbeda ke setiap sistem. Sistem OLTP biasanya menggunakan skema yang dinormalisasi untuk pemrosesan transaksional yang efisien. Sistem OLAP mungkin menggunakan skema denormalisasi atau teknik pergudangan data untuk mengoptimalkan performa kueri.

Fasilitasi Azure

Data pembuatan profil: Azure menawarkan alat dan layanan yang dapat Anda gunakan untuk memprofilkan data, seperti Azure Data Catalog, Azure Purview, dan Azure Synapse Analytics. Alat-alat ini memungkinkan Anda mengekstrak, mengubah, dan memuat data dari berbagai sumber, melakukan pemeriksaan kualitas data, dan mendapatkan wawasan tentang data.

Memantau performa data: Untuk memantau performa data, Anda dapat menggunakan Azure Monitor untuk mengumpulkan dan menganalisis metrik infrastruktur, log, dan data aplikasi. Anda dapat mengintegrasikan Monitor dengan layanan lain seperti Application Insights. Application Insights menyediakan pemantauan performa aplikasi dan mendukung banyak platform.

Application Insights mengumpulkan data penggunaan dan performa. Anda dapat menggunakan Analitik Log untuk menghubungkan data tersebut dengan data konfigurasi dan performa di seluruh sumber daya Azure.

Anda dapat menggunakan fitur wawasan Azure SQL dan Azure Cosmos DB untuk memantau database Anda. Fitur ini memungkinkan Anda mendiagnosis dan menyetel masalah performa database.

Pemartisian data: Azure menawarkan berbagai strategi partisi untuk penyimpanan data yang berbeda. Setiap penyimpanan data mungkin memiliki pertimbangan dan opsi konfigurasi yang berbeda untuk partisi data. Untuk informasi selengkapnya, lihat Strategi pemartisian data.

Mengoptimalkan kueri database dan performa indeks: Gunakan fitur wawasan performa kueri Azure SQL Database untuk mengoptimalkan kueri, tabel, dan database. Anda dapat menggunakan fitur ini untuk mengidentifikasi dan memecahkan masalah performa kueri.

Untuk database relasional, Anda harus mengikuti panduan desain indeks, panduan indeks SQL Server, dan panduan indeks Azure Cosmos DB. Gunakan SQL Database untuk melakukan penyetelan otomatis untuk kueri guna meningkatkan performanya.

Dalam database SQL, Anda harus mengatur ulang atau membangun ulang indeks secara teratur. Identifikasi kueri lambat dan sesuaikan untuk meningkatkan performa. Banyak mesin database memiliki fitur penyetelan kueri. Untuk informasi selengkapnya, lihat Praktik terbaik untuk performa kueri.

Azure Cosmos DB memiliki kebijakan pengindeksan default yang mengindeks setiap properti dari setiap item dan memberlakukan indeks rentang untuk string atau angka apa pun. Kebijakan ini memberi Anda performa kueri yang efisien, dan Anda tidak perlu mengelola indeks di muka.

Mengoptimalkan beban penyimpanan: Banyak layanan database Azure mendukung replika baca. Ketersediaan dan konfigurasi replika baca bervariasi tergantung pada layanan database Azure. Lihat dokumentasi resmi untuk setiap layanan untuk memahami detail dan opsi.

Mengoptimalkan desain penyimpanan: Azure menawarkan banyak penyimpanan data yang berbeda agar sesuai dengan kebutuhan beban kerja Anda. Pahami jenis penyimpanan data dan pilih penyimpanan data Azure untuk aplikasi Anda.

Daftar periksa Efisiensi Performa

Lihat kumpulan rekomendasi lengkap.