Migrasi aplikasi dari Ne4j ke Neptune - Amazon Neptune

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

Migrasi aplikasi dari Ne4j ke Neptune

Setelah Anda memigrasi data Anda dari Neo4j ke Neptune, langkah selanjutnya adalah memigrasi aplikasi itu sendiri. Seperti halnya data, ada beberapa pendekatan untuk memigrasi aplikasi Anda berdasarkan alat yang Anda gunakan, persyaratan, perbedaan arsitektur, dan sebagainya. Hal-hal yang biasanya perlu Anda pertimbangkan dalam proses ini diuraikan di bawah ini.

Miasi koneksi saat pindah dari Ne4j ke Neptune

Jika saat ini Anda tidak menggunakan driver Bolt, atau ingin menggunakan alternatif, Anda dapat terhubung ke endpoint HTTPS yang menyediakan akses penuh ke data yang dikembalikan.

Jika Anda memiliki aplikasi yang menggunakan protokol Bolt, Anda dapat memigrasikan koneksi ini ke Neptune dan membiarkan aplikasi Anda terhubung menggunakan driver yang sama seperti yang Anda lakukan di Neo4j. Untuk terhubung ke Neptune, Anda mungkin perlu membuat satu atau beberapa perubahan berikut pada aplikasi Anda:

  • URL dan port perlu diperbarui untuk menggunakan endpoint cluster dan port cluster (defaultnya adalah 8182).

  • Neptune membutuhkan semua koneksi untuk menggunakan SSL, jadi Anda perlu menentukan untuk setiap koneksi yang dienkripsi.

  • Neptune mengelola otentikasi melalui penugasan kebijakan dan peran IAM. Kebijakan dan peran IAM memberikan tingkat manajemen pengguna yang sangat fleksibel dalam aplikasi, jadi penting untuk membaca dan memahami informasi dalam ikhtisar IAM sebelum mengonfigurasi klaster Anda.

  • Koneksi baut berperilaku berbeda di Neptune daripada di Neo4j dalam beberapa cara, seperti yang dijelaskan dalamPerilaku koneksi baut di Neptunus.

  • Anda dapat menemukan lebih banyak informasi dan saran diPraktik Terbaik Neptunus Menggunakan OpenCypher dan Bolt.

Ada contoh kode untuk bahasa yang umum digunakan seperti Java, Python, .NET, dan NodeJS, dan untuk skenario koneksi seperti menggunakan otentikasi IAM, diMenggunakan protokol Bolt untuk membuat openCypher kueri ke Neptunus.

kueri perutean ke instans klaster saat pindah dari Ne4j ke Neptune

aplikasi klien Neo4j menggunakan driver routing dan menentukan modus akses untuk rute membaca dan menulis permintaan ke server yang sesuai dalam cluster kausal.

Saat memigrasi aplikasi klien ke Neptune, gunakan titik akhir Neptune untuk merutekan kueri secara efisien ke instance yang sesuai di klaster Anda:

  • Semua koneksi ke Neptune harus menggunakanbolt:// bukanbolt+routing:// atauneo4j:// di URL.

  • endpoint klaster terkoneksi ke instans utama saat ini di klaster Anda. Gunakan endpoint cluster untuk merutekan permintaan penulisan ke primer.

  • Endpoint pembaca mendistribusikan koneksi di seluruh instance read-replica di klaster Anda. Jika Anda memiliki klaster single-instans yang tidak punya instans read-replika, endpoint pembaca akan terkoneksi ke instans utama, yang mendukung operasi tulis. Jika klaster memang berisi satu atau lebih contoh read-replica, mengirim permintaan tulis ke endpoint pembaca akan menghasilkan pengecualian.

  • Setiap instance di klaster Anda juga dapat memiliki endpoint instansinya sendiri. Gunakan endpoint instans jika aplikasi klien Anda perlu mengirim permintaan ke instance tertentu di klaster.

Untuk informasi selengkapnya, lihat Pertimbangan titik akhir Neptune.

konsistensi data di Neptune

Saat menggunakan cluster kausal Neo4j, replika baca pada akhirnya konsisten dengan server inti, tetapi aplikasi klien dapat memastikan konsistensi kausal dengan menggunakan rantai kausal. Rantai kausal memerlukan melewati bookmark antara transaksi, yang memungkinkan aplikasi klien untuk menulis ke server inti dan kemudian membaca tulisannya sendiri dari read-replica.

Di Neptune, contoh baca-replika pada akhirnya konsisten dengan penulis, dengan lag replika yang biasanya kurang dari 100 milidetik. Namun, sampai perubahan direplikasi, pembaruan ke tepi dan simpul yang ada serta penambahan tepi dan simpul baru tidak terlihat pada contoh replika. Oleh karena itu, jika aplikasi Anda membutuhkan konsistensi langsung di Neptune dengan membaca setiap penulisan, gunakan endpoint cluster untuk read-after-write operasi. Ini adalah satu-satunya waktu untuk menggunakan klaster endpoint untuk operasi baca. Dalam semua keadaan lain, gunakan endpoint pembaca untuk membaca.

Miasi kueri dari Ne4j ke Neptune

Meskipun dukungan Neptunus untuk OpenCypher secara dramatis mengurangi jumlah pekerjaan yang diperlukan untuk memigrasi kueri dari Neo4j, masih ada beberapa perbedaan untuk dinilai saat bermigrasi:

  • Seperti yang dibahas diPengoptimalan model data atas, mungkin ada modifikasi pada model data Anda yang perlu Anda buat untuk membuat model data grafik yang dioptimalkan untuk Neptune, yang pada gilirannya akan memerlukan perubahan pada kueri dan pengujian Anda.

  • Neo4j menawarkan berbagai ekstensi bahasa khusus Cypher yang tidak termasuk dalam spesifikasi OpenCypher yang diterapkan oleh Neptune. Bergantung pada kasus penggunaan dan fitur yang digunakan, mungkin ada solusi dalam bahasa OpenCypher, atau menggunakan bahasa Gremlin, atau melalui mekanisme lain seperti yang dijelaskan dalamMenulis ulang pertanyaan Cypher untuk dijalankan di OpenCypher di Neptune.

  • Aplikasi sering menggunakan komponen middleware lainnya untuk berinteraksi dengan database alih-alih driver Bolt itu sendiri. Silakan periksaKompatibilitas Neptunus dengan Neo4j untuk melihat apakah alat atau middleware yang Anda gunakan didukung.

  • Dalam kasus failover, driver Bolt mungkin terus terhubung ke instance penulis atau pembaca sebelumnya karena endpoint cluster yang disediakan untuk koneksi telah diselesaikan ke alamat IP. Penanganan kesalahan yang tepat dalam aplikasi Anda harus menangani hal ini, seperti yang dijelaskan dalamBuat koneksi baru setelah failover.

  • Ketika transaksi dibatalkan karena konflik yang tidak terpecahkan atau timeout kunci-tunggu, Neptune merespons dengan aConcurrentModificationException. Untuk informasi selengkapnya, lihat Kode Kesalahan Mesin. Sebagai praktik terbaik, klien harus selalu menangkap dan menangani pengecualian ini.

    SebuahConcurrentModificationException terjadi kadang-kadang ketika beberapa thread atau beberapa aplikasi menulis ke sistem secara bersamaan. Karena tingkat isolasi transaksi, konflik ini terkadang tidak dapat dihindari.

  • Neptune mendukung menjalankan kedua Gremlin dan OpenCypher query pada data yang sama. Ini berarti bahwa dalam beberapa skenario Anda mungkin perlu mempertimbangkan untuk menggunakan Gremlin, dengan kemampuan kueri yang lebih kuat, untuk melakukan beberapa fungsi kueri Anda.

Seperti yang dibahas diPenyediaan infrastruktur atas, setiap aplikasi harus melalui latihan ukuran kanan untuk memastikan bahwa jumlah instance, ukuran instans, dan topologi klaster semuanya dioptimalkan untuk beban kerja spesifik aplikasi.

Pertimbangan yang dibahas di sini untuk memigrasi aplikasi Anda adalah yang paling umum, tetapi ini bukan daftar lengkap. Setiap aplikasi itu unik. Silakan hubungiAWS dukungan atau libatkan tim akun Anda jika Anda memiliki pertanyaan lebih lanjut.

Migrasi fitur dan alat yang khusus untuk Neo4j

Neo4j memiliki berbagai fitur kustom dan add-ons dengan funtionality bahwa aplikasi Anda mungkin mengandalkan. Ketika mengevaluasi kebutuhan untuk memigrasi fungsi ini, sering membantu untuk menyelidiki apakah ada pendekatan yang lebih baik dalamAWS untuk mencapai tujuan yang sama. Mempertimbangkan perbedaan arsitektur antara Neo4j dan Neptune, Anda sering dapat menemukan alternatif efektif yang memanfaatkanAWS layanan atau integrasi lain.

LihatKompatibilitas Neptunus dengan Neo4j daftar fitur khusus Neo4J dan solusi yang disarankan.