Menangani perubahan yang menyebabkan gangguan pada indeks Anda - Amazon DynamoDB

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

Menangani perubahan yang menyebabkan gangguan pada indeks Anda

OpenSearch dapat secara dinamis menambahkan atribut baru ke indeks Anda. Namun, setelah template pemetaan Anda disetel untuk kunci tertentu, Anda harus mengambil tindakan tambahan untuk mengubahnya. Selain itu, jika perubahan Anda mengharuskan untuk memproses ulang semua data dalam tabel DynamoDB Anda, Anda harus mengambil langkah-langkah untuk memulai ekspor baru.

catatan

Dalam semua opsi ini, Anda mungkin masih mengalami masalah jika tabel DynamoDB Anda memiliki konflik jenis dengan template pemetaan yang Anda tentukan. Pastikan Anda mengaktifkan antrian huruf mati (DLQ) (bahkan dalam pengembangan). Ini membuatnya lebih mudah untuk memahami apa yang mungkin salah dengan catatan yang menyebabkan konflik ketika sedang diindeks ke dalam indeks Anda. OpenSearch

Cara kerjanya

Berikut gambaran umum singkat dari tindakan yang dilakukan saat menangani perubahan yang menyebabkan gangguan pada indeks Anda. Lihat step-by-step prosedur di bagian berikut.

  • Hentikan dan mulai alur: Opsi ini mengatur ulang status alur, dan alur akan dimulai ulang dengan ekspor penuh baru. Ini bersifat non-destruktif, sehingga tidak menghapus indeks Anda atau data apa pun di DynamoDB. Jika Anda tidak membuat indeks baru sebelum melakukan ini, Anda mungkin melihat banyak kesalahan dari konflik versi karena ekspor mencoba memasukkan dokumen yang lebih lama dari _version saat ini ke dalam indeks. Anda dapat mengabaikan kesalahan ini dengan aman. Anda tidak akan ditagih untuk alur saat alur tersebut dihentikan.

  • Perbarui alur: Opsi ini memperbarui konfigurasi dalam alur dengan pendekatan biru/hijau, tanpa kehilangan status apa pun. Jika Anda membuat perubahan signifikan pada alur Anda (seperti menambahkan rute, indeks, atau kunci baru ke indeks yang sudah ada), Anda mungkin perlu melakukan reset penuh pada alur dan membuat ulang indeks Anda. Opsi ini tidak melakukan ekspor penuh.

  • Hapus dan buat ulang indeks: Opsi ini menghapus data dan pengaturan pemetaan pada indeks Anda. Anda harus melakukan ini sebelum membuat perubahan yang menyebabkan gangguan pada pemetaan Anda. Ini akan merusak aplikasi apa pun yang mengandalkan indeks hingga indeks dibuat ulang dan disinkronkan. Menghapus indeks tidak memulai ekspor baru. Anda harus menghapus indeks Anda hanya setelah Anda memperbarui alur Anda. Jika tidak, indeks Anda mungkin dibuat ulang sebelum Anda memperbarui pengaturan.

Hapus indeks Anda dan setel ulang alur (opsi alur-sentris)

Metode ini sering menjadi pilihan tercepat jika Anda masih dalam pengembangan. Anda akan menghapus indeks Anda di OpenSearch Layanan, lalu menghentikan dan memulai pipeline Anda untuk memulai ekspor baru semua data Anda. Hal ini memastikan bahwa tidak ada konflik template pemetaan dengan indeks yang ada, dan tidak ada kehilangan data dari tabel yang diproses tidak lengkap.

  1. Hentikan pipa baik melalui AWS Management Console, atau dengan menggunakan StopPipelineAPIoperasi dengan AWS CLI atauSDK.

  2. Perbarui konfigurasi alur Anda dengan perubahan baru.

  3. Hapus indeks Anda di OpenSearch Layanan, baik melalui REST API panggilan atau OpenSearch Dasbor Anda.

  4. Mulai pipa baik melalui konsol, atau dengan menggunakan StartPipeline API operasi dengan AWS CLI atauSDK.

    catatan

    Tindakan ini memulai ekspor penuh baru, yang akan menimbulkan biaya tambahan.

  5. Pantau masalah yang tidak terduga karena ekspor baru dihasilkan untuk membuat indeks baru.

  6. Konfirmasikan bahwa indeks sesuai dengan harapan Anda di OpenSearch Layanan.

Setelah ekspor selesai dan melanjutkan pembacaan dari aliran, data tabel DynamoDB Anda sekarang akan tersedia dalam indeks.

Buat ulang indeks Anda dan setel ulang alur (opsi indeks-sentris)

Metode ini berfungsi dengan baik jika Anda perlu melakukan banyak iterasi pada desain indeks di OpenSearch Service sebelum melanjutkan pipeline dari DynamoDB. Ini dapat berguna untuk pengembangan ketika Anda ingin mengulangi dengan sangat cepat pada pola pencarian Anda, dan ingin menghindari menunggu ekspor baru selesai di antara setiap iterasi.

  1. Hentikan pipa baik melalui AWS Management Console, atau dengan memanggil StopPipelineAPIoperasi dengan AWS CLI atauSDK.

  2. Hapus dan buat ulang indeks Anda OpenSearch dengan template pemetaan yang ingin Anda gunakan. Anda dapat memasukkan beberapa data sampel secara manual untuk mengonfirmasi bahwa pencarian Anda berfungsi sebagaimana dimaksud. Jika data sampel Anda mungkin bertentangan dengan data apa pun dari DynamoDB, pastikan untuk menghapusnya sebelum melanjutkan ke langkah berikutnya.

  3. Jika Anda memiliki template pengindeksan di pipeline Anda, hapus atau ganti dengan yang sudah Anda buat di OpenSearch Service. Pastikan bahwa nama indeks Anda cocok dengan nama dalam alur.

  4. Mulai pipeline baik melalui konsol, atau dengan memanggil StartPipeline API operasi dengan AWS CLI atauSDK.

    catatan

    Tindakan ini akan memulai ekspor penuh baru, yang akan menimbulkan biaya tambahan.

  5. Pantau masalah yang tidak terduga karena ekspor baru dihasilkan untuk membuat indeks baru.

Setelah ekspor selesai dan melanjutkan pembacaan dari aliran, data tabel DynamoDB Anda sekarang akan tersedia dalam indeks.

Buat indeks dan sink baru (opsi online)

Metode ini berfungsi dengan baik jika Anda perlu memperbarui template pemetaan Anda tetapi saat ini menggunakan indeks Anda dalam produksi. Ini menciptakan indeks baru, yang mana Anda harus memindahkan aplikasi Anda setelah disinkronkan dan divalidasi.

catatan

Ini akan membuat konsumen lain di aliran. Ini bisa menjadi masalah jika Anda juga memiliki konsumen lain seperti AWS Lambda atau tabel global. Anda mungkin perlu menjeda pembaruan ke alur yang ada untuk membuat kapasitas memuat indeks baru.

  1. Buat alur baru dengan pengaturan baru dan nama indeks yang berbeda.

  2. Pantau indeks baru untuk masalah yang tidak terduga.

  3. Tukar aplikasi ke indeks baru.

  4. Hentikan dan hapus alur lama setelah memvalidasi bahwa semuanya berfungsi dengan benar.

Praktik terbaik untuk menghindari dan men-debug konflik jenis

  • Selalu gunakan antrian huruf mati (DLQ) untuk mempermudah debug saat ada konflik tipe.

  • Selalu gunakan template indeks dengan pemetaan dan setel include_keys. Sementara OpenSearch Layanan secara dinamis memetakan kunci baru, ini dapat menyebabkan masalah dengan perilaku yang tidak terduga (seperti mengharapkan sesuatu menjadi aGeoPoint, tetapi dibuat sebagai string atauobject) atau kesalahan (seperti memiliki number yang merupakan campuran long dan float nilai).

  • Jika Anda perlu menjaga indeks yang ada tetap berfungsi dalam produksi, Anda juga dapat mengganti salah satu langkah penghapusan indeks sebelumnya hanya dengan mengganti nama indeks Anda di file konfigurasi alur Anda. Ini menciptakan indeks baru. Aplikasi Anda kemudian perlu diperbarui untuk menunjuk ke indeks baru setelah selesai.

  • Jika Anda memiliki masalah konversi jenis yang Anda perbaiki dengan prosesor, Anda dapat mengujinya dengan UpdatePipeline. Untuk melakukan ini, Anda harus berhenti dan memulai atau memproses antrean surat mati Anda untuk memperbaiki dokumen yang sebelumnya dilewati yang memiliki kesalahan.