View a markdown version of this page

Praktik terbaik untuk bekerja dengan integrasi DynamoDB Zero-ETL dan Layanan OpenSearch - Amazon DynamoDB

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Praktik terbaik untuk bekerja dengan integrasi DynamoDB Zero-ETL dan Layanan OpenSearch

DynamoDB memiliki integrasi DynamoDB Zero-ETL dengan Amazon Service. OpenSearch Untuk informasi selengkapnya, lihat plugin DynamoDB untuk Inges OpenSearch tion dan praktik terbaik khusus untuk Layanan Amazon OpenSearch .

Konfigurasi

  • Anda hanya perlu melakukan pencarian pada indeks data. Selalu gunakan templat pemetaan (template_type: index_template dan template_content) serta include_keys untuk mengimplementasikan hal ini.

  • Pantau log Anda untuk kesalahan yang terkait dengan konflik tipe. OpenSearch Layanan mengharapkan semua nilai untuk kunci yang diberikan memiliki tipe yang sama. Pengecualian dihasilkan jika ada ketidakcocokan. Jika Anda menemukan salah satu kesalahan ini, Anda dapat menambahkan prosesor untuk mengetahui bahwa kunci yang diberikan selalu memiliki nilai yang sama.

  • Secara umum, gunakan nilai metadata primary_key untuk nilai document_id. Di OpenSearch Layanan, ID dokumen setara dengan kunci utama di DynamoDB. Menggunakan kunci utama akan memudahkan untuk menemukan dokumen Anda dan memastikan bahwa pembaruan direplikasi secara konsisten tanpa konflik.

    Anda dapat menggunakan fungsi pembantu getMetadata untuk mendapatkan kunci primer Anda (misalnya, document_id: "${getMetadata('primary_key')}"). Jika Anda menggunakan kunci primer komposit, fungsi pembantu akan menggabungkannya bersama-sama untuk Anda.

  • Secara umum, gunakan nilai metadata opensearch_action untuk pengaturan action. Ini akan memastikan bahwa pembaruan direplikasi sedemikian rupa sehingga data dalam OpenSearch Layanan cocok dengan status terbaru di DynamoDB.

    Anda dapat menggunakan fungsi pembantu getMetadata untuk mendapatkan kunci primer Anda (misalnya, action: "${getMetadata('opensearch_action')}"). Anda juga bisa mendapatkan jenis peristiwa streaming dynamodb_event_name untuk kasus penggunaan seperti pemfilteran. Namun, biasanya hal ini tidak digunakan untuk pengaturan action.

Observabilitas

  • Selalu gunakan antrean huruf mati (DLQ) di OpenSearch wastafel Anda untuk menangani peristiwa yang jatuh. DynamoDB umumnya kurang terstruktur daripada OpenSearch Layanan, dan selalu mungkin terjadi sesuatu yang tidak terduga. Dengan antrean surat mati, Anda dapat memulihkan peristiwa individual, dan bahkan mengotomatiskan proses pemulihan. Hal ini akan membantu agar Anda tidak perlu membangun kembali seluruh indeks Anda.

  • Selalu atur peringatan agar penundaan replikasi Anda tidak melebihi jumlah yang diharapkan. Biasanya aman untuk mengasumsikan satu menit tanpa peringatan yang terlalu berisik. Ini dapat bervariasi tergantung pada seberapa runcing lalu lintas tulis Anda dan pengaturan OpenSearch Compute Unit (OCU) Anda pada pipeline.

    Jika penundaan replikasi Anda melebihi 24 jam, aliran Anda akan mulai kehilangan peristiwa, dan Anda akan mengalami masalah akurasi kecuali jika Anda melakukan pembangunan ulang indeks Anda dari awal.

Penskalaan

  • Gunakan penskalaan otomatis untuk alur untuk membantu menaikkan atau menurunkan skala OCU agar sesuai dengan beban kerja.

  • Untuk tabel throughput yang disediakan tanpa penskalaan otomatis, sebaiknya atur OCU berdasarkan unit kapasitas tulis (WCU) Anda dibagi 1000. Tetapkan minimum ke 1 OCU di bawah jumlah tersebut (tetapi setidaknya 1), dan atur maksimum ke setidaknya 1 OCU di atas jumlah tersebut.

    • Rumus:

      OCU_minimum = GREATEST((table_WCU / 1000) - 1, 1) OCU_maximum = (table_WCU / 1000) + 1
    • Contoh: Tabel Anda memiliki 25000 WCU yang disediakan. OCus pipeline Anda harus diatur dengan minimal 24 (25000/1000 - 1) dan maksimum setidaknya 26 (25000/1000 + 1).

  • Untuk tabel throughput yang disediakan dengan penskalaan otomatis, sebaiknya atur OCU berdasarkan WCU minimum dan maksimum Anda, dibagi 1000. Atur minimum ke 1 OCU di bawah minimum dari DynamoDB, dan atur maksimum ke setidaknya 1 OCU di atas maksimum dari DynamoDB.

    • Rumus:

      OCU_minimum = GREATEST((table_minimum_WCU / 1000) - 1, 1) OCU_maximum = (table_maximum_WCU / 1000) + 1
    • Contoh: Tabel Anda memiliki kebijakan penskalaan otomatis dengan minimum 8000 dan maksimum 14000. OCus pipeline Anda harus diatur dengan minimal 7 (8000/1000 - 1) dan maksimum 15 (14000/1000 + 1).

  • Untuk tabel throughput sesuai permintaan, sebaiknya atur OCU berdasarkan puncak dan penurunan tipikal Anda untuk unit permintaan tulis per detik. Anda mungkin perlu membuat rata-rata dalam jangka waktu yang lebih lama, tergantung pada agregasi yang tersedia untuk Anda. Atur minimum ke 1 OCU di bawah minimum dari DynamoDB, dan atur maksimum ke setidaknya 1 OCU di atas maksimum dari DynamoDB.

    • Rumus:

      # Assuming we have writes aggregated at the minute level OCU_minimum = GREATEST((min(table_writes_1min) / (60 * 1000)) - 1, 1) OCU_maximum = (max(table_writes_1min) / (60 * 1000)) + 1
    • Contoh: Tabel Anda memiliki penurunan rata-rata 300 unit permintaan tulis per detik dan puncak rata-rata 4300. OCus pipeline Anda harus diatur dengan minimal 1 (300/1000 - 1, tetapi setidaknya 1) dan maksimum 5 (4300/1000 + 1).

  • Ikuti praktik terbaik tentang penskalaan indeks OpenSearch Layanan tujuan Anda. Jika penskalaan indeks Anda kurang, ini akan memperlambat konsumsi dari DynamoDB, dan dapat menyebabkan penundaan.

catatan

GREATEST adalah fungsi SQL yang, jika diberikan sekumpulan argumen, mengembalikan argumen dengan nilai terbesar.