

# PERF 4 Bagaimana cara memilih solusi basis data Anda?
<a name="w2aac19c11b5c11"></a>

 Solusi basis data optimal untuk sistem bervariasi berdasarkan persyaratan untuk ketersediaan, konsistensi, dan toleransi partisi, latensi, daya tahan, skalabilitas, dan kemampuan kueri. Banyak sistem menggunakan solusi basis data yang berlainan untuk berbagai subsistem, dan mengaktifkan fitur yang berlainan untuk meningkatkan performa. Memilih fitur untuk sistem dan solusi basis data yang salah dapat mengakibatkan efisiensi performa yang lebih rendah. 

**Topics**
+ [PERF04-BP01 Pahami karakteristik data](perf_right_database_solution_understand_char.md)
+ [PERF04-BP02 Mengevaluasi opsi yang tersedia](perf_right_database_solution_evaluate_options.md)
+ [PERF04-BP03 Mengumpulkan dan merekam metrik kinerja basis data](perf_right_database_solution_collect_metrics.md)
+ [PERF04-BP04 Memilih penyimpanan data berdasarkan pola akses](perf_right_database_solution_access_patterns.md)
+ [PERF04-BP05 Mengoptimalkan penyimpanan data berdasarkan pola dan metrik akses](perf_right_database_solution_optimize_metrics.md)

# PERF04-BP01 Pahami karakteristik data
<a name="perf_right_database_solution_understand_char"></a>

 Pilih solusi manajemen data Anda untuk secara optimal cocok dengan karakteristik, pola akses, dan persyaratan set data beban kerja Anda. Ketika memilih dan mengimplementasikan solusi manajemen data, Anda harus memastikan karakteristik penyimpanan, penskalaan, dan kueri mendukung persyaratan data beban kerja. Pelajari bagaimana berbagai opsi basis data cocok dengan model data Anda, dan opsi konfigurasi mana yang paling sesuai untuk kasus penggunaan Anda.  

 AWS menyediakan banyak mesin basis data termasuk basis data relasional, nilai kunci, dokumen, dalam memori, grafik, seri waktu, dan buku besar. Setiap solusi manajemen data memiliki opsi dan konfigurasi yang tersedia bagi Anda untuk mendukung kasus penggunaan dan model data Anda. Beban kerja Anda mungkin dapat menggunakan beberapa solusi basis data yang berbeda, berdasarkan karakteristik datanya. Dengan memilih solusi basis data yang terbaik untuk masalah tertentu, Anda dapat menghindari basis data monolitik, dengan pendekatan satu solusi untuk semuanya yang bersifat terbatas dan berfokus pada pengelolaan data untuk memenuhi kebutuhan pelanggan Anda. 

 **Hasil yang diinginkan:** Karakteristik data beban kerja didokumentasikan dengan detail yang cukup untuk memfasilitasi pilihan dan konfigurasi solusi basis data pendukung, dan memberikan wawasan ke kemungkinan alternatif. 

 **Antipola umum:** 
+  Tidak mempertimbangkan cara untuk mensegmentasi set data besar menjadi kumpulan kecil data yang memiliki karakteristik yang serupa, mengakibatkan terlewatkannya peluang untuk lebih menggunakan basis data yang dibuat khusus yang lebih cocok dengan karakteristik pertumbuhan dan data. 
+  Tidak mengidentifikasi pola akses data di muka, yang mengakibatkan pengerjaan ulang yang kompleks dan mahal di waktu kemudian. 
+  Membatasi pertumbuhan dengan menggunakan strategi penyimpanan data yang tidak dapat diskalakan secepat yang dibutuhkan 
+  Memilih satu vendor dan jenis basis data untuk semua beban kerja. 
+  Berpegang teguh pada satu solusi basis data karena ada pengetahuan dan pengalaman internal akan satu jenis solusi basis data tertentu. 
+  Mempertahankan solusi basis data karena solusi tersebut telah berfungsi dengan baik di lingkungan on-premise. 

 **Manfaat menerapkan praktik terbaik ini:** Memahami dengan baik semua solusi basis data AWS sehingga Anda dapat menentukan solusi basis data yang tepat untuk berbagai beban kerja Anda. Setelah Anda memilih solusi basis data yang sesuai untuk beban kerja Anda, Anda dapat dengan cepat melakukan percobaan di setiap penawaran basis data tersebut untuk menentukan apakah basis data masih terus memenuhi kebutuhan beban kerja Anda. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Tinggi 
+  Potensi penghematan biaya mungkin tidak teridentifikasi. 
+  Data mungkin tidak diamankan hingga tingkat yang diperlukan. 
+  Akses data dan performa penyimpanan mungkin tidak optimal. 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Tetapkan karakteristik data dan pola akses beban kerja Anda. Tinjau semua solusi basis data yang tersedia untuk mengidentifikasi solusi mana yang mendukung persyaratan data Anda. Di dalam beban kerja tertentu, beberapa basis data dapat dipilih. Evaluasi setiap layanan atau grup layanan dan nilai secara terpisah. Jika potensi solusi manajemen data alternatif diidentifikasi untuk sebagian atau semua data, lakukan percobaan dengan implementasi alternatif yang dapat mengungkapkan manfaat biaya, keamanan, performa, dan keandalan. Perbarui dokumentasi yang ada, jika akan mengadopsi pendekatan manajemen data baru. 


|  **Tipe**  |  **Layanan AWS**  |  **Karakteristik Utama**  |  **Kasus penggunaan umum**  | 
| --- | --- | --- | --- | 
|  Relasional  |  Amazon RDS, Amazon Aurora  |  Integritas referensial, transaksi ACID, schema on write  |  ERP, CRM, perangkat lunak komersial umum  | 
|  Nilai Kunci  |  Amazon DynamoDB  |  Throughput tinggi, latensi rendah, skalabilitas hampir tak terbatas  |  Keranjang belanja (perdagangan elektronik), katalog produk, aplikasi obrolan  | 
|  Dokumen  |  Amazon DocumentDB  |  Simpan dokumen JSON dan kueri di atribut mana pun  |  Manajemen Konten (CMS), profil pelanggan, aplikasi seluler  | 
|  Dalam Memori  |  Amazon ElastiCache, Amazon MemoryDB  |  Latensi mikrodetik  |  Caching, papan peringkat game  | 
|  Grafik  |  Amazon Neptune  |  Data yang sangat relasional yang hubungan antara data memiliki makna  |  Jaringan sosial, mesin personalisasi, deteksi penipuan  | 
|  Deret Waktu  |  Amazon Timestream  |  Data yang dimensi utamanya adalah waktu  |  DevOps, IoT, Pemantauan  | 
|  Kolom lebar  |  Amazon Keyspaces  |  Beban kerja Cassandra.  |  Pemeliharaan peralatan industri, pengoptimalan rute  | 
|  Buku besar  |  Amazon QLDB  |  Buku besar perubahan tetap dan dapat diverifikasi secara kriptografis  |  Sistem catatan, pemeliharaan kesehatan, rantai pasokan, institusi keuangan  | 

 **Langkah implementasi** 

1.  Bagaimana cara penstrukturan data? (misalnya, tidak terstruktur, nilai kunci, semi-terstruktur, relasional) 

   1.  Jika data tidak terstruktur, pertimbangkan penyimpanan objek seperti [Amazon S3](https://aws.amazon.com/products/storage/data-lake-storage/) atau basis data NoSQL seperti [Amazon DocumentDB.](https://aws.amazon.com/documentdb/) 

   1.  Untuk data nilai kunci, pertimbangkan [DynamoDB](https://aws.amazon.com/documentdb/), [ElastiCache for Redis](https://aws.amazon.com/elasticache/redis/) atau [MemoryDB.](https://aws.amazon.com/memorydb/) 

   1.  Jika data memiliki struktur relasional, tingkat integritas referensial apa yang diperlukan? 

      1.  Untuk kendala utama asing, basis data relasional seperti [Amazon RDS](https://aws.amazon.com/rds/) dan [Aurora](https://aws.amazon.com/rds/aurora/) dapat memberikan tingkat integritas ini. 

      1.  Biasanya, dalam model data NoSQL, Anda akan melakukan denormalisasi data menjadi satu dokumen atau kumpulan dokumen untuk diambil dalam satu permintaan dan bukannya digabungkan dalam berbagai dokumen atau tabel.  

1.  Apakah diperlukan kepatuhan terhadap ACID (atomisitas, konsistensi, isolasi, durabilitas)? 

   1.  Jika diperlukan sifat ACID yang terkait dengan basis data relasional, pertimbangkan basis data relasional seperti [Amazon RDS](https://aws.amazon.com/rds/) dan [Aurora.](https://aws.amazon.com/rds/aurora/) 

1.  Model konsistensi apa yang diperlukan? 

   1.  Jika aplikasi Anda dapat menoleransi konsistensi pada akhirnya, pertimbangkan implementasi NoSQL. Tinjau karakteristik-karakteristik lain untuk membantu memilih [basis data NoSQL mana](https://aws.amazon.com/nosql/) yang paling sesuai. 

   1.  Jika diperlukan konsistensi tinggi, Anda dapat menggunakan bacaan sangat konsisten dengan [DynamoDB](https://aws.amazon.com/documentdb/) atau basis data relasional seperti [Amazon RDS](https://aws.amazon.com/rds/). 

1.  Format hasil dan kueri apa yang harus didukung? (misalnya, SQL, CSV, Parque, Avro, JSON, dll.) 

1.  Jenis data, ukuran file, dan jumlah keseluruhan apakah yang ada? (misalnya, teks, numerik, spasial, deret waktu terhitung, biner atau blob, dokumen) 

1.  Bagaimana persyaratan penyimpanan akan berubah seiring waktu? Bagaimana dampaknya pada skalabilitas? 

   1.  Basis data nirserver seperti [DynamoDB](https://aws.amazon.com/documentdb/) dan [Amazon Quantum Ledger Database](https://aws.amazon.com/qldb/) akan secara dinamis naik skala hingga penyimpanan hampir tak terbatas. 

   1.  Basis data relasional memiliki batas atas terkait penyimpanan yang tersedia, dan sering kali harus dipartisi secara horizontal lewat mekanisme seperti serpihan setelah penyimpanan tersebut mencapai batas ini. 

1.  Berapakah proporsi kueri baca dibandingkan dengan kueri tulis? Apakah caching akan meningkatkan performa? 

   1.  Beban kerja yang sarat baca dapat diuntungkan dari lapisan caching, ini bisa berupa [ElastiCache](https://aws.amazon.com/elasticache/) atau [DAX](https://aws.amazon.com/dynamodb/dax/) jika basis datanya DynamoDB. 

   1.  Bacaan juga dapat dilimpahkan ke replika baca dengan basis data relasional seperti [Amazon RDS](https://aws.amazon.com/rds/). 

1.  Apakah penyimpanan dan modifikasi (OLTP - Pemrosesan Transaksi Online) atau pengambilan dan pelaporan (OLAP - Pemrosesan Analitik Online) memiliki prioritas lebih tinggi? 

   1.  Untuk pemrosesan transaksi throughput tinggi, pertimbangkan basis data NoSQL seperti DynamoDB atau Amazon DocumentDB. 

   1.  Untuk kueri analitik, pertimbangkan basis data kolom seperti [Amazon Redshift](https://aws.amazon.com/redshift/) atau ekspor data ke Amazon S3 dan melakukan analisis menggunakan [Athena](https://aws.amazon.com/athena/) atau [QuickSight.](https://aws.amazon.com/quicksight/) 

1.  Seberapa sensitif data ini dan tingkat perlindungan dan enkripsi apa yang diperlukannya? 

   1.  Semua mesin Amazon RDS dan Aurora mendukung enkripsi data diam menggunakan AWS KMS. Microsoft SQL Server dan Oracle juga mendukung Enkripsi Data Transparan (TDE) native ketika menggunakan Amazon RDS. 

   1.  Untuk DynamoDB, Anda dapat menggunakan kontrol akses terperinci dengan [IAM](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/access-control-overview.html) untuk mengontrol siapa yang memiliki akses ke data apa pada tingkat utama. 

1.  Tingkat durabilitas apa yang diperlukan data? 

   1.  Aurora secara otomatis mereplikasi data Anda di tiga Zona Ketersediaan dalam satu Wilayah, yang artinya data Anda sangat tahan lama dengan lebih sedikit kemungkinan hilangnya data. 

   1.  DynamoDB secara otomatis direplikasi di beberapa Zona Ketersediaan, memberikan durabilitas data dan ketersediaan tinggi. 

   1.  Amazon S3 menyediakan durabilitas 11 angka 9. Banyak layanan basis data seperti Amazon RDS dan DynamoDB mendukung ekspor data ke Amazon S3 untuk pengarsipan dan retensi jangka panjang. 

1.  Apakah persyaratan [Sasaran Waktu Pemulihan (RTO) atau Sasaran Titik Pemulihan (RPO)](https://docs.aws.amazon.com/wellarchitected/latest/reliability-pillar/plan-for-disaster-recovery-dr.html) memengaruhi solusinya? 

   1.  Amazon RDS, Aurora, DynamoDB, Amazon DocumentDB, dan Neptune semuanya mendukung PITR dan pemulihan serta pencadangan sesuai permintaan.  

   1.  Untuk persyaratan ketersediaan tinggi, tabel DynamoDB dapat direplikasi secara global menggunakan [Fitur Tabel Global](https://aws.amazon.com/dynamodb/global-tables/) dan klaster Aurora dapat direplikasi di beberapa Wilayah menggunakan fitur basis data Global. Selain itu, bucket S3 dapat direplikasi di Wilayah AWS menggunakan replikasi lintas wilayah.  

1.  Apakah ada keinginan untuk beralih dari mesin basis data komersial/biaya lisensi? 

   1.  Pertimbangkan mesin sumber terbuka seperti PostgreSQL dan MySQL di Amazon RDS atau Aurora 

   1.  Manfaatkan [AWS DMS](https://aws.amazon.com/dms/) dan [AWS SCT](https://aws.amazon.com/dms/schema-conversion-tool/) untuk melakukan migrasi dari mesin basis data komersial ke sumber terbuka 

1.  Apakah harapan operasional untuk basis data? Apakah beralih ke layanan terkelola merupakan masalah utama? 

   1.  Memanfaatkan Amazon RDS dan bukannya Amazon EC2, dan DynamoDB atau Amazon DocumentDB dan bukannya basis data NoSQL hosting mandiri, dapat mengurangi biaya tambahan operasional. 

1.  Bagaimana basis data diakses saat ini? Apakah hanya akses aplikasi, atau adakah pengguna Kecerdasan Bisnis (BI) dan aplikasi umum lain yang terhubung? 

   1.  Jika Anda memiliki ketergantungan pada alat eksternal maka Anda mungkin harus mempertahankan kompatibilitas dengan basis data yang didukungnya. Amazon RDS sepenuhnya kompatibel dengan berbagai versi mesin yang didukungnya, termasuk Microsoft SQL Server, Oracle, MySQL, dan PostgreSQL. 

1.  Daftar berikut berisi berbagai kemungkinan layanan manajemen data, dan tempat layanan ini paling tepat digunakan: 

   1.  Basis data relasional menyimpan data dengan skema yang telah ditetapkan sebelumnya dan hubungan di antaranya. Basis data ini didesain untuk mendukung transaksi ACID (atomisitas, konsistensi, isolasi, durabilitas), dan mempertahankan integritas referensial serta konsistensi data yang tinggi. Banyak aplikasi tradisional, perencanaan sumber daya perusahaan (ERP), manajemen hubungan pelanggan (CRM), dan perdagangan elektronik menggunakan basis data relasional untuk menyimpan data mereka. Anda dapat menjalankan sejumlah besar mesin basis data ini di Amazon EC2, atau memilih dari salah satu layanan basis data [yang dikelola AWS](https://aws.amazon.com/products/databases/): [Amazon Aurora](https://aws.amazon.com/rds/aurora), [Amazon RDS](https://aws.amazon.com/rds), dan [Amazon Redshift](https://aws.amazon.com/redshift). 

   1.  Basis data nilai kunci dioptimalkan untuk pola akses umum, biasanya untuk menyimpan dan mengambil data dalam volume besar. Basis data ini memberikan waktu respons cepat, bahkan dalam permintaan bersamaan dengan volume ekstrem. Aplikasi web dengan lalu lintas tinggi, sistem perdagangan elektronik, dan aplikasi gaming merupakan kasus penggunaan umum untuk basis data nilai kunci. Di AWS, Anda dapat menggunakan [Amazon DynamoDB](https://aws.amazon.com/dynamodb/), basis data yang terkelola sepenuhnya, multi-Wilayah, multi-master, tahan lama dengan keamanan bawaan, pencadangan dan pemulihan, dan caching dalam memori untuk aplikasi skala internet. 

   1.  Basis data dalam memori digunakan untuk aplikasi yang memerlukan akses waktu nyata ke data, latensi rendah, dan throughput paling tinggi. Dengan menyimpan data langsung di memori, basis data ini memberikan latensi milidetik ke aplikasi di mana latensi milidetik tidak cukup. Anda dapat menggunakan basis data dalam memori untuk caching aplikasi, manajemen sesi, papan peringkat gaming, dan aplikasi geospasial. [Amazon ElastiCache](https://aws.amazon.com/elasticache/) adalah penyimpanan data dalam memori yang terkelola penuh, yang kompatibel dengan [Redis](https://aws.amazon.com/elasticache/redis/) atau [Memcached](https://aws.amazon.com/elasticache/memcached). Jika aplikasi juga memiliki persyaratan durabilitas lebih tinggi, [Amazon MemoryDB for Redis](https://aws.amazon.com/memorydb/) menawarkan ini dalam kombinasi karena berupa layanan basis data dalam memori yang tahan lama untuk performa ultra cepat. 

   1.  Basis data dokumen didesain untuk menyimpan data semi-terstruktur sebagai dokumen seperti JSON. Basis data ini membantu developer dengan cepat membangun dan memperbarui aplikasi seperti manajemen konten, katalog, dan profil pengguna. [Amazon DocumentDB](https://aws.amazon.com/documentdb/) adalah layanan basis data dokumen yang cepat, dapat diskalakan, memiliki ketersediaan tinggi, dan terkelola penuh yang mendukung beban kerja MongoDB. 

   1.  Penyimpanan kolom lebar adalah salah satu jenis basis data NoSQL. Penyimpanan ini menggunakan tabel, baris, dan kolom, tetapi tidak seperti basis data relasional, nama dan format kolomnya bervariasi dari baris ke baris di tabel yang sama. Biasanya Anda akan melihat penyimpanan kolom lebar di aplikasi industri skala tinggi untuk pemeliharaan perlengkapan, pengelolaan armada, dan pengoptimalan rute. [Amazon Keyspaces (untuk Apache Cassandra)](https://aws.amazon.com/mcs/) adalah layanan basis data kolom lebar yang kompatibel dengan Apache Cassandra yang dapat diskalakan, memiliki ketersediaan tinggi, dan terkelola. 

   1.  Basis data grafik adalah untuk aplikasi yang harus menavigasi dan melakukan kueri jutaan hubungan antara set data grafik yang sangat terhubung dan latensi milidetik pada skala besar. Banyak perusahaan menggunakan basis data grafik untuk mesin rekomendasi, jaringan sosial, dan deteksi penipuan. [Amazon Neptune](https://aws.amazon.com/neptune/) adalah layanan basis data grafik yang cepat, andal, terkelola penuh yang memudahkan untuk membangun dan menjalankan aplikasi yang bekerja dengan set data yang sangat terhubung. 

   1.  Basis data deret waktu secara efisien mengumpulkan, mempersatukan, dan mengambil wawasan dari data yang berubah seiring waktu. Aplikasi internet untuk segala (IoT), DevOps, dan telemetri industri dapat menggunakan basis data deret waktu. [Amazon Timestream](https://aws.amazon.com/timestream/) adalah layanan basis data deret waktu yang cepat, dapat diskalakan, terkelola penuh untuk aplikasi operasional dan IoT yang mempermudah pekerjaan menyimpan dan menganalisis triliunan peristiwa per hari. 

   1.  Basis data buku besar memberikan otoritas terpusat yang tepercaya untuk mempertahankan data transaksi yang dapat diskalakan, tetap, dan dapat diverifikasi secara kriptografis untuk setiap aplikasi. Basis data buku besar digunakan untuk sistem catatan, rantai pasokan, registrasi, dan bahkan transaksi perbankan. [Amazon Quantum Ledger Database (Amazon QLDB)](https://aws.amazon.com/qldb/) adalah basis data buku besar terkelola penuh yang memberikan log transaksi yang transparan, tetap, dan dapat diverifikasi secara kriptografis yang dimiliki oleh otoritas pusat tepercaya. Amazon QLDB melacak setiap perubahan data aplikasi dan mempertahankan riwayat lengkap yang dapat diverifikasi dari perubahan seiring waktu. 

 **Tingkat upaya untuk rencana implementasi: **Jika beban kerja dialihkan dari satu solusi basis data ke yang lain, kemungkinan akan ada tingkat upaya *tinggi* yang terlibat dalam pemfaktoran ulang data dan aplikasi.   

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+  [Basis Data Cloud dengan AWS ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [Caching Basis Data AWS ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Akselator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Praktik terbaik Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Performa Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [10 kiat performa terbaik Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Praktik terbaik Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Praktik terbaik Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 
+  [Pilih antara EC2 dan Amazon RDS](https://docs.aws.amazon.com/prescriptive-guidance/latest/migration-sql-server/comparison.html) 
+  [Praktik Terbaik untuk Mengimplementasikan Amazon ElastiCache](https://docs.aws.amazon.com/AmazonElastiCache/latest/UserGuide/BestPractices.html) 

 **Video terkait:** 
+ [Basis data AWS yang dibuat khusus (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+ [Penjelasan penyimpanan Amazon Aurora: Cara kerjanya (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+ [Pembelajaran mendalam Amazon DynamoDB: Pola desain lanjutan (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **Contoh terkait:** 
+  [Optimalkan Pola Data menggunakan Pembagian Data Amazon Redshift](https://wellarchitectedlabs.com/sustainability/300_labs/300_optimize_data_pattern_using_redshift_data_sharing/) 
+  [Migrasi Basis Data](https://github.com/aws-samples/aws-database-migration-samples) 
+  [Demo Replikasi Server MS SQL - AWS Database Migration Service (DMS)](https://github.com/aws-samples/aws-dms-sql-server) 
+  [Lokakarya Praktik Langsung Modernisasi Basis Data](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Sampel Amazon Neptune](https://github.com/aws-samples/amazon-neptune-samples) 

# PERF04-BP02 Mengevaluasi opsi yang tersedia
<a name="perf_right_database_solution_evaluate_options"></a>

 Pahami opsi basis data yang tersedia serta bagaimana opsi-opsi ini dapat mengoptimalkan kinerja Anda sebelum memilih solusi manajemen data. Gunakan uji beban untuk mengidentifikasi metrik basis data yang berpengaruh pada beban kerja Anda. Saat mencoba opsi basis data, pertimbangkan beberapa aspek seperti grup parameter, opsi penyimpanan, memori, komputasi, replika baca, eventual consistency, pooling koneksi, dan opsi cache. Coba beberapa opsi konfigurasi ini untuk meningkatkan metrik. 

 **Hasil yang diinginkan:** Beban kerja dapat menggunakan satu atau beberapa solusi basis data, bergantung pada jenis datanya. Manfaat dan fungsionalitas basis data sangat sesuai dengan karakteristik data, pola akses, dan kebutuhan beban kerja. Untuk mengoptimalkan biaya dan kinerja basis data, Anda harus mengevaluasi pola akses data guna menentukan opsi basis data yang sesuai. Evaluasikan waktu kueri yang dapat diterima untuk memastikan bahwa opsi basis data yang dipilih dapat memenuhi persyaratan. 

 **Antipola umum:** 
+  Tidak mengidentifikasi pola akses data. 
+  Tidak memahami opsi konfigurasi pada solusi manajemen data yang Anda pilih. 
+  Hanya mengandalkan peningkatan ukuran instans tanpa mempertimbangkan opsi konfigurasi lain yang tersedia. 
+  Tidak menguji karakteristik penskalaan solusi yang dipilih. 

 

 **Manfaat menerapkan praktik terbaik ini:** Dengan menjelajahi dan mencoba berbagai opsi basis data, Anda mungkin dapat mengurangi biaya infrastruktur, meningkatkan kinerja dan skalabilitas, serta mengurangi upaya pengelolaan beban kerja. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Tinggi 
+  Dalam mengoptimalkan basis data *untuk segala ukuran,* tentu ada yang dikorbankan. 
+  Biaya yang lebih tinggi akibat konfigurasi solusi basis data yang tidak sesuai dengan pola lalu lintas. 
+  Masalah penskalaan dapat menimbulkan masalah operasional. 
+  Tingkat keamanan data mungkin tidak sesuai dengan yang diperlukan. 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Pahami karakteristik beban kerja Anda agar dapat menentukan opsi basis data. Jalankan uji beban untuk mengidentifikasi hambatan dan metrik kinerja utama. Gunakan karakteristik dan metrik ini untuk mengevaluasi opsi basis data dan coba konfigurasi yang berbeda. 


|  Layanan AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Menskalakan Komputasi  |  Perbesar ukuran instans, instans Nirserver Aurora menskalakan secara otomatis sesuai perubahan beban  |  Penskalaan baca/tulis otomatis dengan mode kapasitas sesuai permintaan atau penskalaan otomatis kapasitas baca/tulis yang tersedia dalam mode kapasitas yang tersedia.  |  Perbesar ukuran instans  |  Perbesar ukuran instans, tambahkan simpul ke klaster  |  Perbesar ukuran instans  |  Menskalakan secara otomatis untuk menyesuaikan kapasitas  |  Penskalaan baca/tulis otomatis dengan mode kapasitas sesuai permintaan atau penskalaan otomatis kapasitas baca/tulis yang tersedia dalam mode kapasitas yang tersedia.  |  Menskalakan secara otomatis untuk menyesuaikan kapasitas  | 
|  Menskalakan pembacaan  |  Semua mesin mendukung replika baca. Aurora mendukung penskalaan otomatis instans replika baca.  |  Tingkatkan unit kapasitas baca yang disediakan  |  Replika baca  |  Replika baca  |  Replika baca. Mendukung penskalaan otomatis instans replika baca  |  Menskalakan secara otomatis  |  Tingkatkan unit kapasitas baca yang disediakan  |  Menaikkan skala secara otomatis ke batas dokumentasi konkurensi  | 
|  Menskalakan penulisan  |  Memperbesar ukuran instans, membuat batch penulisan di aplikasi atau menambahkan antrean di depan basis data. Penskalaan horizontal melalui serpihan tingkat aplikasi di beberapa instans  |  Tambah unit kapasitas baca yang tersedia. Memastikan kunci partisi yang optimal untuk mencegah throttling penulisan tingkat partisi  |  Memperbesar ukuran instans utama  |  Menggunakan Redis dalam mode klaster untuk mendistribusikan penulisan di semua serpihan  |  Memperbesar ukuran instans  |  Permintaan penulisan berpotensi mengalami throttling saat menskalakan. Jika Anda mendapati pengecualian throttling, lanjutkan mengirim data pada throughput yang sama (atau lebih tinggi) untuk menskalakan secara otomatis. Buat batch penulisan untuk mengurangi permintaan penulisan secara bersamaan  |  Tambah unit kapasitas baca yang tersedia. Memastikan kunci partisi yang optimal untuk mencegah throttling penulisan tingkat partisi  |  Menaikkan skala secara otomatis ke batas dokumentasi konkurensi  | 
|  Konfigurasi mesin  |  Grup parameter  |  Tidak berlaku  |  Grup parameter  |  Grup parameter  |  Grup parameter  |  Tidak berlaku  |  Tidak berlaku  |  Tidak berlaku  | 
|  Caching  |  Caching dalam memori, dapat dikonfigurasikan melalui grup parameter. Pasangkan dengan cache khusus seperti ElastiCache for Redis untuk mengurangi beban permintaan item yang sering diakses  |  Tersedia cache terkelola penuh DAX (DAX)  |  Caching dalam memori. Atau pasangkan dengan cache khusus seperti ElastiCache for Redis untuk mengurangi beban permintaan item yang sering diakses  |  Fungsi utamanya adalah caching  |  Gunakan cache hasil kueri untuk melakukan cache pada hasil kueri hanya-baca  |  Timestream memiliki dua tingkat penyimpanan, salah satunya adalah tingkat dalam memori berkinerja tinggi  |  Lakukan deployment cache khusus seperti ElastiCache for Redis secara terpisah untuk mengurangi beban permintaan item yang sering diakses  |  Tidak berlaku  | 
|  Ketersediaan tinggi/pemulihan bencana  |  Konfigurasi yang disarankan untuk beban kerja produksi adalah menjalankan instans siaga di Zona Ketersediaan kedua untuk memberikan ketahanan di dalam suatu Wilayah.  Untuk ketahanan di semua Wilayah, Anda dapat menggunakan Basis Data Global Aurora  |  Ketersediaan tinggi di dalam suatu Wilayah. Tabel dapat direplikasikan ke semua Wilayah menggunakan tabel global DynanoDB  |  Buat beberapa instans di seluruh Zona Ketersediaan untuk ketersediaan.  Snapshot dapat dibagikan ke seluruh Wilayah dan klaster dapat direplikasikan menggunakan DMS untuk menyediakan pemulihan bencana/Replikasi Lintas-Wilayah.  |  Konfigurasi yang disarankan untuk klaster produksi adalah membuat setidaknya satu simpul di Zona Ketersediaan kedua.  Penyimpanan Data Global ElastiCache dapat digunakan untuk mereplikasi klaster di berbagai Wilayah.  |  Replika baca di Zona Ketersediaan lainnya berfungsi sebagai target failover.  Snapshot dapat dibagikan ke seluruh Wilayah dan klaster dapat direplikasikan menggunakan aliran Neptune untuk mereplikasi data antara dua klaster di dua Wilayah yang berbeda.  |  Sangat tersedia dalam suatu Wilayah. Replikasi Lintas-Wilayah memerlukan pengembangan aplikasi khusus menggunakan Timestream SDK  |  Ketersediaan tinggi di dalam suatu Wilayah.  Replikasi Lintas Wilayah memerlukan logika aplikasi khusus atau alat pihak ketiga  |  Ketersediaan tinggi di dalam suatu Wilayah.  Untuk mereplikasi di seluruh Wilayah, ekspor konten jurnal Amazon QLDB ke bucket S3 dan konfigurasikan bucket untuk Replikasi Lintas Wilayah.  | 

 

 **Langkah implementasi** 

1.  Apa saja opsi konfigurasi yang tersedia untuk basis data yang dipilih? 

   1.  Grup Parameter untuk Amazon RDS dan Aurora membantu Anda untuk menyesuaikan pengaturan umum di tingkat mesin basis data, seperti alokasi memori untuk cache atau menyesuaikan zona waktu basis data 

   1.  Untuk layanan basis data yang tersedia seperti Amazon RDS, Aurora, Neptune, Amazon DocumentDB, dan yang di-deploy di Amazon EC2, Anda dapat mengubah jenis instans dan penyimpanan yang tersedia, serta menambahkan replika baca. 

   1.  DynamoDB memungkinkan Anda untuk menentukan dua mode kapasitas: sesuai permintaan dan tersedia. Untuk mengatasi dua beban kerja yang berbeda, Anda dapat mengganti di antara dua mode ini dan memperbesar alokasi kapasitas di mode yang tersedia kapan pun. 

1.  Apakah beban kerja pembacaan atau penulisannya berat?  

   1.  Apa saja solusi yang tersedia untuk meringankan beban pembacaan (replika baca, caching, dll.)?  

      1.  Untuk tabel DynamoDB, Anda dapat meringankan beban pembacaan menggunakan DAX untuk caching. 

      1.  Untuk basis data relasional, Anda dapat membuat klaster ElastiCache for Redis dan mengonfigurasikan aplikasi Anda untuk membaca dari cache terlebih dahulu, kembali ke basis data jika item yang diminta tidak tersedia. 

      1.  Basis data relasional seperti Amazon RDS dan Aurora, serta basis data NoSQL yang tersedia seperti Neptune dan Amazon DocumentDB semua mendukung penambahan replika baca untuk mengurangi porsi baca beban kerja. 

      1.  Basis data nirserver seperti DynamoDB akan menskalakan secara otomatis. Pastikan unit kapasitas baca (RSU) yang tersedia cukup untuk mengatasi beban kerja. 

   1.  Apa saja solusi yang tersedia untuk menskalakan pembacaan (serpihan utama partisi, pembuatan antrean, dll.)? 

      1.  Untuk basis data relasional, Anda dapat memperbesar ukuran instans untuk mengakomodasi tambahan beban kerja atau menambah IOPS yang tersedia untuk memfasilitasi kenaikan throughput pada penyimpanan yang mendasari. 
         +  Anda juga dapat membuat antrean di depan basis data, bukan menulis secara langsung ke basis data. Dengan pola ini, Anda dapat memisahkan penyerapan dari basis data dan mengontrol tingkat aliran, sehingga basis data tidak kewalahan.  
         +  Mengganti pembuatan transaksi berdurasi pendek dengan pembuatan batch permintaan penulisan dapat membantu meningkatkan throughput dalam basis data relasional dengan volume penulisan tinggi. 

      1.  Basis data nirserver seperti DynamoDB dapat menskalakan throughput tulis secara otomatis atau dengan menyesuaikan unit kapasitas tulis (WCU) yang tersedia, bergantung pada mode kapasitasnya.  
         +  Anda masih dapat mengalami masalah *pada partisi* panas, ketika mencapai batas throughput pada kunci partisi tertentu. Hal ini dapat dikurangi dengan memilih distribusi kunci partisi yang lebih merata atau dengan memisah penulisan kunci partisi.  

1.  Berapa puncak transaksi per detik (TPS) saat ini atau yang diharapkan? Uji menggunakan volume lalu lintas ini dan volume \$1X% ini untuk mengetahui karakteristik penskalaan. 

   1.  Alat asli seperti pg\$1bench for PostgreSQL dapat digunakan untuk menguji tekanan basis data dan mengetahui hambatan serta karakteristik penskalaan. 

   1.  Lalu lintas mirip produksi harus direkam agar dapat diputar ulang untuk menyimulasikan kondisi sebenarnya sebagai tambahan beban kerja sintetis. 

1.  Jika menggunakan komputasi nirserver atau dapat diskalakan, uji dampak penskalaan ini pada basis data. Jika perlu, gunakan pooling atau manajemen koneksi untuk mengurangi dampak pada basis data.  

   1.  Proksi RDS dapat digunakan dengan Amazon RDS dan Aurora untuk mengelola koneksi ke basis data.  

   1.  Basis data nirserver seperti DynamoDB tidak terkait dengan koneksi apa pun, tetapi pertimbangkan kapasitas yang tersedia atau kebijakan penskalaan otomatis untuk mengatasi lonjakan beban. 

1.  Apakah beban dapat diprediksi, apakah Anda lonjakan beban dan periode tidak aktif? 

   1.  Jika ada periode tidak aktif, coba turunkan skala kapasitas yang tersedia atau ukuran instans selama periode ini. Aurora Nirserver V2 akan otomatis menurunkan atau menaikkan skala sesuai beban. 

   1.  Untuk instans di luar produksi, coba jeda atau hentikan instans di luar jam kerja. 

1.  Apakah Anda perlu menyegmentasikan atau membagi model data berdasarkan pola akses dan karakteristik data? 

   1.  Coba gunakan AWS DMS atau AWS SCT untuk memindahkan data Anda ke layanan lain. 

## Tingkat usaha untuk rencana implementasi: 
<a name="level-of-effort-for-the-implementation-plan-to-establish-this-best-practice-you-must-be-aware-of-your-current-data-characteristics-and-metrics.-gathering-those-metrics-establishing-a-baseline-and-then-using-those-metrics-to-identify-the-ideal-database-configuration-options-is-a-low-to-moderate-level-of-effort.-this-is-best-validated-by-load-tests-and-experimentation."></a>

Untuk menerapkan praktik terbaik ini, Anda harus mengetahui metrik dan karakteristik data Anda saat ini. Mengumpulkan metrik, membentuk dasaran, kemudian menggunakan metrik tersebut untuk mengidentifikasi opsi konfigurasi basis data yang ideal merupakan tingkat usaha *rendah* ke *tingkat usaha sedang* . Hal ini divalidasi dengan eksperimen dan uji beban. 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+  [Basis Data Cloud dengan AWS ](https://aws.amazon.com/products/databases/?ref=wellarchitected) 
+  [Caching Basis Data AWS ](https://aws.amazon.com/caching/database-caching/?ref=wellarchitected) 
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/?ref=wellarchitected) 
+  [Praktik terbaik Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html?ref=wellarchitected) 
+  [Kinerja Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html?ref=wellarchitected) 
+  [10 tips kinerja terbaik Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/?ref=wellarchitected) 
+  [Praktik terbaik Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/?ref=wellarchitected) 
+  [Praktik terbaik Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html?ref=wellarchitected) 

 

 **Video terkait:** 
+  [AWS purpose-built databases (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28)
+ [Amazon Aurora storage demystified: How it all works (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Contoh terkait:** 
+  [Contoh Amazon DynamoDB](https://github.com/aws-samples/aws-dynamodb-examples) 
+  [Sampel migrasi Basis Data AWS](https://github.com/aws-samples/aws-database-migration-samples) 
+  [Lokakarya Modernisasi Basis Data](https://github.com/aws-samples/amazon-rds-purpose-built-workshop) 
+  [Menggunakan parameter di Amazon RDS for Postgress DB](https://github.com/awsdocs/amazon-rds-user-guide/blob/main/doc_source/Appendix.PostgreSQL.CommonDBATasks.Parameters.md) 

# PERF04-BP03 Mengumpulkan dan merekam metrik kinerja basis data
<a name="perf_right_database_solution_collect_metrics"></a>

 Untuk memahami kinerja sistem manajemen data Anda, penting untuk melacak metrik-metrik yang relevan. Metrik-metrik ini akan membantu Anda mengoptimalkan sumber daya manajemen data, untuk memastikan terpenuhinya persyaratan beban kerja Anda, dan Anda memiliki gambaran umum yang jelas tentang kinerja beban kerja. Gunakan alat, pustaka, dan sistem yang merekam pengukuran kinerja terkait kinerja basis data. 

 

 Terdapat metrik-metrik yang berkaitan dengan sistem tempat basis data di-host (misalnya CPU, penyimpanan, memori, IOPS). dan terdapat metrik-metrik untuk mengakses data itu sendiri (misalnya transaksi per detik, laju kueri, waktu respons, kesalahan). Metrik-metrik ini harus dapat diakses kapan saja untuk semua staf dukungan dan operasional, dan memiliki rekam jejak yang memadai untuk mampu mengidentifikasi tren, anomali, dan bottleneck. 

 

 **Hasil yang diinginkan:** Untuk memantau performa beban kerja basis data, Anda harus mencatat beberapa metrik kinerja dalam kurun waktu tertentu. Dengan begitu Anda dapat mendeteksi anomali serta mengukur kinerja berdasarkan metrik bisnis untuk memastikan kebutuhan beban kerja Anda terpenuhi. 

 **Antipola umum:** 
+  Anda hanya menggunakan pencarian file log manual untuk metrik. 
+  Anda hanya memublikasikan metrik ke alat-alat internal yang digunakan tim Anda dan tidak memiliki gambaran yang komprehensif tentang beban kerja Anda. 
+  Anda hanya menggunakan metrik default yang dicatat oleh perangkat lunak pemantauan yang Anda pilih. 
+  Anda hanya meninjau metrik ketika terdapat masalah. 
+  Anda hanya memantau metrik tingkat sistem, tidak merekam metrik akses atau penggunaan data. 

 **Manfaat menjalankan praktik terbaik ini:** Memiliki dasar acuan kinerja membantu Anda memahami perilaku normal dan persyaratan beban kerja. Pola abnormal dapat diidentifikasi dan diperbaiki lebih cepat sehingga meningkatkan kinerja dan keandalan basis data. Kapasitas basis data dapat dikonfigurasi untuk memastikan biaya optimal tanpa mengganggu kinerja. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak dijalankan:** Tinggi 
+  Ketidakmampuan untuk membedakan tingkat kinerja normal vs. abnormal akan menimbulkan kendala dalam hal identifikasi masalah dan pengambilan keputusan. 
+  Potensi penghematan biaya mungkin tidak teridentifikasi. 
+  Pola pertumbuhan tidak akan teridentifikasi sehingga menyebabkan penurunan keandalan atau kinerja. 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Identifikasi, kumpulkan, agregasikan, dan korelasikan metrik-metrik terkait basis data. Metrik harus menyertakan metrik sistem dasar yang mendukung basis data serta metrik basis data. Metrik sistem dasar dapat meliputi metrik pemanfaatan CPU, memori, penyimpanan disk yang tersedia, I/O disk, dan jaringan masuk serta keluar, sedangkan metrik basis data dapat meliputi transaksi per detik, kueri teratas, rata-rata laju kueri, waktu respons, penggunaan indeks, penguncian tabel, batas waktu kueri, dan jumlah koneksi yang terbuka. Data ini sangat penting untuk mengetahui kinerja beban kerja dan bagaimana solusi basis data digunakan. Gunakan metrik ini sebagai bagian dari pendekatan berbasis data yang digunakan untuk mengatur dan mengoptimalkan sumber daya beban kerja Anda.  

 **Langkah Implementasi:** 

1.  Metrik basis data mana yang penting untuk dilacak? 

   1.  [Metrik pemantauan untuk Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Monitoring.html) 

   1.  [Pemantauan dengan Wawasan Kinerja](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PerfInsights.html) 

   1.  [Pemantauan yang ditingkatkan](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_Monitoring.OS.overview.html) 

   1.  [Metrik DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/metrics-dimensions.html) 

   1.  [Monitoring DynamoDB DAX](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DAX.Monitoring.html) 

   1.  [Monitoring MemoryDB](https://docs.aws.amazon.com/memorydb/latest/devguide/monitoring-cloudwatch.html) 

   1.  [Monitoring Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/mgmt/metrics.html) 

   1.  [Metrik dan dimensi seri waktu](https://docs.aws.amazon.com/timestream/latest/developerguide/metrics-dimensions.html) 

   1.  [Metrik tingkat klaster untuk Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/Aurora.AuroraMySQL.Monitoring.Metrics.html) 

   1.  [Monitoring Amazon Keyspaces](https://docs.aws.amazon.com/keyspaces/latest/devguide/monitoring.html) 

   1.  [Monitoring Amazon Neptune](https://docs.aws.amazon.com/neptune/latest/userguide/monitoring.html) 

1.  Akankah pemantauan basis data terbantu dengan solusi machine learning yang mendeteksi masalah kinerja anomali operasional? 

   1.  [Amazon DevOps Guru untuk Amazon RDS](https://docs.aws.amazon.com/devops-guru/latest/userguide/working-with-rds.overview.how-it-works.html) menyediakan visibilitas masalah kinerja dan memberikan saran tindakan perbaikan. 

1.  Apakah Anda memerlukan detail tingkat aplikasi tentang penggunaan SQL? 

   1.  [AWS X-Ray](https://docs.aws.amazon.com/xray/latest/devguide/xray-api-segmentdocuments.html#api-segmentdocuments-sql) dapat diinstrumentasikan ke dalam aplikasi untuk mendapatkan wawasan dan meringkas semua poin data untuk kueri tunggal. 

1.  Apakah saat ini Anda memiliki solusi pemantauan dan pencatatan yang disetujui? 

   1.  [Amazon CloudWatch](https://aws.amazon.com/cloudwatch/) dapat mengumpulkan metrik di seluruh sumber daya dalam arsitektur Anda. Anda juga dapat mengumpulkan dan menerbitkan metrik kustom untuk memunculkan metrik bisnis atau metrik turunan. Gunakan CloudWatch atau solusi pihak ketiga untuk menetapkan alarm yang memberikan indikasi saat ambang batas terlampaui. 

1.  Anda mengidentifikasi dan mengonfigurasikan kebijakan retensi data sesuai dengan tujuan operasional dan keamanan? 

   1.  [Retensi data default untuk metrik CloudWatch](https://aws.amazon.com/cloudwatch/faqs/#AWS_resource_.26_custom_metrics_monitoring) 

   1.  [Retensi data default untuk CloudWatch Logs](https://aws.amazon.com/cloudwatch/faqs/#Log_management) 

 **Tingkat usaha untuk rencana implementasi: **Terdapat upaya tingkat *sedang* untuk mengidentifikasi, melacak, mengumpulkan, mengagregasikan, dan mengorelasikan metrik dari semua sumber daya basis data. 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+ [Caching Basis Data AWS](https://aws.amazon.com/caching/database-caching/) 
+ [ 10 tips kinerja teratas Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/)
+ [ Praktik terbaik Amazon Aurora ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html)
+  [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/)
+ [Praktik terbaik Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Praktik terbaik Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Kinerja Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+ [Basis Data Cloud dengan AWS](https://aws.amazon.com/products/databases/) 
+  [Wawasan Kinerja Amazon RDS](https://aws.amazon.com/rds/performance-insights/) 

 **Video terkait:** 
+ [Basis data yang dibuat khusus AWS (DAT209-L) ](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Penjelasan penyimpanan Amazon Aurora: Bagaimana cara kerjanya (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+  [Pembahasan mendalam Amazon DynamoDB: Pola desain lanjutan (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Contoh terkait:** 
+  [Tingkat 100: Pemantauan dengan Dasbor CloudWatch](https://wellarchitectedlabs.com/performance-efficiency/100_labs/100_monitoring_with_cloudwatch_dashboards/) 
+  [Kerangka Kerja Pengumpulan Metrik Penyerapan Set Data AWS](https://github.com/awslabs/aws-dataset-ingestion-metrics-collection-framework) 
+  [Lokakarya Pemantauan Amazon RDS](https://www.workshops.aws/?tag=Enhanced%20Monitoring) 

# PERF04-BP04 Memilih penyimpanan data berdasarkan pola akses
<a name="perf_right_database_solution_access_patterns"></a>

 Gunakan pola akses beban kerja untuk menentukan layanan dan teknologi yang akan digunakan. Selain pada persyaratan non-fungsional seperti kinerja dan skala, pola akses juga sangat memengaruhi pemilihan solusi penyimpanan dan basis data. Dimensi pertama adalah perlunya transaksi, sesuai ACID, dan pembacaan yang konsisten. Tidak semua basis data mendukung hal ini dan sebagian besar basis data NoSQL menyediakan model eventual consistency. Dimensi penting kedua adalah distribusi baca dan tulis pada ruang dan waktu. Aplikasi yang didistribusikan secara global harus mempertimbangkan persyaratan pola lalu lintas, latensi, dan akses untuk dapat mengidentifikasi solusi penyimpanan yang optimal. Aspek penting ketiga yang harus dipilih adalah fleksibilitas pola kueri, pola akses acak, dan kueri sekali pakai. Anda juga harus mempertimbangkan untuk menerapkan fungsionalitas kueri yang sangat khusus untuk pemrosesan bahasa alami dan teks, deret waktu, dan grafik. 

 **Hasil yang diinginkan:** Penyimpanan data telah dipilih berdasarkan pola akses data yang teridentifikasi dan didokumentasikan. Ini dapat mencakup kueri baca, tulis, dan hapus yang paling umum, perlunya penghitungan dan agregasi ad-hoc, kompleksitas data, interdependensi, dan konsistensi yang diperlukan. 

 **Antipola umum:** 
+  Anda hanya memilih satu basis data untuk menyederhanakan manajemen operasi. 
+  Anda berasumsi bahwa pola akses data tidak akan berubah. 
+  Anda mengimplementasikan transaksi, rollback, dan logika konsistensi yang rumit di aplikasi. 
+  Basis data dikonfigurasikan untuk mendukung potensi tingginya lonjakan lalu lintas, sehingga banyak sumber daya yang sering tidak digunakan. 
+  Menggunakan basis data bersama untuk keperluan analitik dan transaksional. 

 **Manfaat menerapkan praktik terbaik ini:** Memilih dan mengoptimalkan penyimpanan data berdasarkan pola akses akan membantu mengurangi kompleksitas pengembangan dan mengoptimalkan peluang kinerja Anda. Memahami kapan harus menggunakan replika baca, tabel global, partisi data, dan caching akan membantu Anda mengurangi biaya operasional dan menskalakan sesuai kebutuhan beban kerja Anda. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Sedang 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Identifikasi dan evaluasi pola akses data Anda untuk memilih konfigurasi penyimpanan yang benar. Setiap solusi basis data memiliki opsi untuk mengonfigurasi dan mengoptimalkan solusi penyimpanan Anda. Gunakan metrik dan log yang dikumpulkan serta coba berbagai opsi untuk menemukan konfigurasi yang optimal. Gunakan tabel berikut untuk meninjau opsi penyimpanan per layanan basis data. 


|  Layanan AWS  |  Amazon RDS, Amazon Aurora  |  Amazon DynamoDB  |  Amazon DocumentDB  |  Amazon ElastiCache  |  Amazon Neptune  |  Amazon Timestream  |  Amazon Keyspaces  |  Amazon QLDB  | 
| --- | --- | --- | --- | --- | --- | --- | --- | --- | 
|  Menskalakan Penyimpanan  |  Opsi penskalaan penyimpanan otomatis yang tersedia untuk menskalakan IOPS penyimpanan yang tersedia secara otomatis juga dapat diskalakan secara terpisah saat menggunakan jenis penyimpanan IOPS yang tersedia.  |  Menskalakan secara otomatis. Ukuran tabel tidak dibatasi.  |  Opsi penskalaan penyimpanan otomatis yang tersedia untuk menskalakan penyimpanan yang tersedia  |  Penyimpanan di memori, terikat pada jenis atau jumlah instans  |  Opsi penskalaan penyimpanan otomatis yang tersedia untuk menskalakan penyimpanan yang tersedia secara otomatis  |  Konfigurasikan periode retensi untuk tingkat magnetis dan dalam memori dalam hari  |  Menaikkan atau menurunkan skala penyimpanan tabel secara otomatis  |  Menskalakan secara otomatis. Ukuran tabel tidak dibatasi.  | 

 

 **Langkah Implementasi:** 

1.  Identifikasi dan dokumentasikan antisipasi pertumbuhan data dan lalu lintas. 

   1.  Amazon RDS dan Aurora mendukung penskalaan penyimpanan otomatis hingga batas dokumentasi. Selain itu, pertimbangkan untuk mengubah data lama ke Amazon S3 untuk pengarsipan, menggabungkan data historis untuk analitik atau penskalaan secara horizontal melalui serpihan. 

   1.  DynamoDB dan Amazon S3 akan otomatis menskalakan volume penyimpanan hingga nyaris tak terbatas. 

   1.  Ukuran basis data dan instans Amazon RDS yang berjalan di EC2 dapat disesuaikan secara manual dan nantinya volume EBS baru dapat ditambahkan ke instans EC2 untuk penyimpanan tambahan.  

   1.  Jenis instans dapat diubah sesuai perubahan aktivitas. Misalnya, Anda dapat menggunakan instans yang lebih kecil saat pengujian, kemudian menskalakan saat mulai menerima lalu lintas produksi ke layanan. Aurora Nirserver V2 otomatis menskalakan sesuai perubahan beban.  

1.  Dokumentasikan persyaratan terkait kinerja normal dan puncak (transaksi per detik/TPS dan kueri per detik/QPS) serta konsistensi (eventual consistency dan ACID). 

1.  Dokumentasikan aspek deployment solusi dan persyaratan akses basis data (global, Multi AZ, replikasi baca, beberapa simpul tulis) 

 **Tingkat usaha untuk rencana implementasi: **Jika Anda tidak memiliki log dan metrik untuk solusi manajemen data, Anda harus melengkapinya sebelum mengidentifikasi dan mendokumentasikan pola akses data. Setelah pola akses data dipahami, memilih dan mengonfigurasi penyimpanan data memerlukan tingkat upaya yang *rendah* . 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+ [ Caching Basis Data AWS](https://aws.amazon.com/caching/database-caching/)
+ [10 tips kinerja terbaik Amazon Athena ](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+ [Praktik terbaik Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+ [Amazon DynamoDB Accelerator ](https://aws.amazon.com/dynamodb/dax/) 
+ [Praktik terbaik Amazon DynamoDB ](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+ [Praktik terbaik Amazon Redshift Spectrum ](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+ [Kinerja Amazon Redshift ](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [Basis Data Cloud dengan AWS](https://aws.amazon.com/products/databases/)
+  [Jenis Penyimpanan Amazon RDS](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_Storage.html) 

 **Video terkait:** 
+ [AWS purpose-built databases (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works (DAT309-R) ](https://www.youtube.com/watch?v=uaQEGLKtw54)
+ [ Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1) ](https://www.youtube.com/watch?v=6yqfmXiZTlM)

 **Contoh terkait:** 
+  [Coba dan uji dengan Pengujian Beban Terdistribusi di AWS](https://aws.amazon.com/solutions/implementations/distributed-load-testing-on-aws/) 

# PERF04-BP05 Mengoptimalkan penyimpanan data berdasarkan pola dan metrik akses
<a name="perf_right_database_solution_optimize_metrics"></a>

 Gunakan karakteristik kinerja dan pola akses yang mengoptimalkan penyimpanan dan kueri data guna mencapai kinerja sebaik mungkin. Ukur dampak optimasi seperti pengindeksan, distribusi kunci, desain gudang data, atau strategi caching terhadap kinerja sistem atau keseluruhan efisiensi. 

 **Antipola umum:** 
+  Anda hanya menggunakan pencarian file log manual untuk metrik. 
+  Anda hanya memublikasikan metrik untuk alat internal. 

 **Manfaat menerapkan praktik terbaik ini:** Untuk memastikan terpenuhinya metrik-metrik yang diperlukan untuk beban kerja, Anda harus memantau metrik kinerja basis data terkait baca serta tulis. Anda dapat menggunakan data ini untuk menambahkan optimasi baru untuk baca serta tulis ke lapisan penyimpanan data. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak diterapkan:** Rendah 

## Panduan implementasi
<a name="implementation-guidance"></a>

 Optimalkan penyimpanan data berdasarkan metrik dan pola: Gunakan metrik yang dilaporkan untuk mengidentifikasi semua area dengan kinerja rendah dalam beban kerja Anda dan optimalkan komponen basis data Anda. Setiap sistem basis data memiliki kinerja berbeda terkait karakteristik untuk dievaluasi, seperti bagaimana data diindeks, di-cache, atau didistribusikan di beberapa sistem. Ukur dampak optimasi Anda. 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+  [Caching Basis Data AWS](https://aws.amazon.com/caching/database-caching/) 
+  [10 tips kinerja terbaik Amazon Athena](https://aws.amazon.com/blogs/big-data/top-10-performance-tuning-tips-for-amazon-athena/) 
+  [Praktik terbaik Amazon Aurora](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Aurora.BestPractices.html) 
+  [Amazon DynamoDB Accelerator](https://aws.amazon.com/dynamodb/dax/) 
+  [Praktik terbaik Amazon DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/BestPractices.html) 
+  [Praktik terbaik Amazon Redshift Spectrum](https://aws.amazon.com/blogs/big-data/10-best-practices-for-amazon-redshift-spectrum/) 
+  [Kinerja Amazon Redshift](https://docs.aws.amazon.com/redshift/latest/dg/c_challenges_achieving_high_performance_queries.html) 
+  [Basis Data Cloud dengan AWS](https://aws.amazon.com/products/databases/) 
+  [Menganalisis anomali kinerja dengan DevOps Guru for RDS](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/devops-guru-for-rds.html) 
+  [Mode Kapasitas Baca/Tulis untuk DynamoDB](https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.ReadWriteCapacityMode.html) 

 **Video terkait:** 
+  [AWS purpose-built databases (DAT209-L)](https://www.youtube.com/watch?v=q81TVuV5u28) 
+  [Amazon Aurora storage demystified: How it all works (DAT309-R)](https://www.youtube.com/watch?v=uaQEGLKtw54) 
+  [Amazon DynamoDB deep dive: Advanced design patterns (DAT403-R1)](https://www.youtube.com/watch?v=6yqfmXiZTlM) 

 **Contoh terkait:** 
+  [Laboratorium Praktik Langsung untuk Amazon DynamoDB](https://amazon-dynamodb-labs.workshop.aws/hands-on-labs.html) 