Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Migrasi aplikasi dari Neo4j ke Neptunus
Setelah Anda memigrasikan data Anda dari Neo4j ke Neptunus, langkah selanjutnya adalah memigrasikan aplikasi itu sendiri. Seperti halnya data, ada beberapa pendekatan untuk memigrasikan 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.
Migrasi koneksi saat berpindah dari Neo4j ke Neptunus
Jika saat ini Anda tidak menggunakan driver Bolt, atau ingin menggunakan alternatif, Anda dapat terhubung ke titik akhir HTTPS yang menyediakan akses penuh ke data yang dikembalikan.
Jika Anda memiliki aplikasi yang menggunakan protokol Bolt, Anda dapat memigrasikan koneksi ini ke Neptunus dan membiarkan aplikasi Anda terhubung menggunakan driver yang sama seperti yang Anda lakukan di Neo4j. Untuk terhubung ke Neptunus, Anda mungkin perlu membuat satu atau beberapa perubahan berikut pada aplikasi Anda:
URL dan port perlu diperbarui untuk menggunakan titik akhir cluster dan port cluster (defaultnya adalah 8182).
Neptunus membutuhkan semua koneksi untuk menggunakan SSL, jadi Anda perlu menentukan untuk setiap koneksi yang dienkripsi.
Neptunus mengelola otentikasi melalui penetapan 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 cluster Anda.
Koneksi baut berperilaku berbeda di Neptunus daripada di Neo4j dalam beberapa cara, seperti yang dijelaskan dalam. Perilaku koneksi baut di Neptunus
Anda dapat menemukan informasi dan saran lebih lanjut 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, di. Menggunakan protokol Bolt untuk membuat kueri OpenCypher ke Neptunus
Merutekan kueri ke instance cluster saat berpindah dari Neo4j ke Neptunus
Aplikasi klien Neo4j menggunakan driver routing
Saat memigrasikan aplikasi klien ke Neptunus, gunakan titik akhir Neptunus untuk merutekan kueri secara efisien ke instance yang sesuai di cluster Anda:
Semua koneksi ke Neptunus harus
bolt://
menggunakanbolt+routing://
bukanneo4j://
atau di URL.Titik akhir cluster terhubung ke instance utama saat ini di cluster Anda. Gunakan titik akhir cluster untuk merutekan permintaan penulisan ke primer.
Titik akhir pembaca mendistribusikan koneksi di seluruh instance read-replica di cluster Anda. Jika Anda memiliki kluster instans tunggal tanpa instance read-replica, titik akhir pembaca terhubung ke instance utama, yang mendukung operasi penulisan. Jika klaster memang berisi satu atau lebih instance replika baca, mengirim permintaan tulis ke titik akhir pembaca akan menghasilkan pengecualian.
Setiap instance di cluster Anda juga dapat memiliki titik akhir instance-nya sendiri. Gunakan titik akhir instance jika aplikasi klien Anda perlu mengirim permintaan ke instance tertentu di cluster.
Untuk informasi selengkapnya, lihat Pertimbangan titik akhir Neptune.
Konsistensi data di Neptunus
Saat menggunakan cluster kausal Neo4j, replika baca pada akhirnya konsisten dengan server inti, tetapi aplikasi klien dapat memastikan konsistensi kausal dengan menggunakan rantai kausal.
Di Neptunus, contoh replika baca akhirnya konsisten dengan penulis, dengan jeda replika yang biasanya kurang dari 100 milidetik. Namun, sampai perubahan telah direplikasi, pembaruan ke tepi dan simpul yang ada dan penambahan tepi dan simpul baru tidak terlihat pada contoh replika. Oleh karena itu, jika aplikasi Anda membutuhkan konsistensi langsung di Neptunus dengan membaca setiap penulisan, gunakan titik akhir cluster untuk operasi. read-after-write Ini adalah satu-satunya waktu untuk menggunakan titik akhir cluster untuk operasi baca. Dalam semua keadaan lain, gunakan titik akhir pembaca untuk membaca.
Memigrasi kueri dari Neo4j ke Neptunus
Meskipun dukungan Neptune untuk OpenCypher
Seperti dibahas di Pengoptimalan model data atas, mungkin ada modifikasi pada model data Anda yang perlu Anda buat untuk membuat model data grafik yang dioptimalkan untuk Neptunus, 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 Neptunus. 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 dalam. Menulis ulang kueri Cypher untuk dijalankan di OpenCypher di Neptunus
Aplikasi sering menggunakan komponen middleware lain untuk berinteraksi dengan database, bukan driver Bolt itu sendiri. Silakan periksa Kompatibilitas 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 titik akhir cluster yang disediakan untuk koneksi telah diselesaikan ke alamat IP. Penanganan kesalahan yang tepat dalam aplikasi Anda harus menangani ini, seperti yang dijelaskan dalamBuat koneksi baru setelah failover.
-
Ketika transaksi dibatalkan karena konflik yang tidak dapat diselesaikan atau batas waktu tunggu kunci-tunggu, Neptunus merespons dengan file.
ConcurrentModificationException
Untuk informasi selengkapnya, lihat Kode Kesalahan Mesin. Sebagai praktik terbaik, klien harus selalu menangkap dan menangani pengecualian ini.A
ConcurrentModificationException
terjadi kadang-kadang ketika beberapa thread atau beberapa aplikasi menulis ke sistem secara bersamaan. Karena tingkat isolasi transaksi, konflik ini terkadang tidak dapat dihindari. Neptunus mendukung menjalankan kueri Gremlin dan OpenCypher 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 fungsionalitas kueri Anda.
Seperti dibahas di Penyediaan infrastruktur atas, setiap aplikasi harus melalui latihan ukuran yang tepat untuk memastikan bahwa jumlah instance, ukuran instance, dan topologi cluster semuanya dioptimalkan untuk beban kerja spesifik aplikasi.
Pertimbangan yang dibahas di sini untuk memigrasikan aplikasi Anda adalah yang paling umum, tetapi ini bukan daftar lengkap. Setiap aplikasi unik. Silakan hubungi untuk AWS mendukung atau melibatkan tim akun Anda jika Anda memiliki pertanyaan lebih lanjut.
Migrasi fitur dan alat yang khusus untuk Neo4j
Neo4j memiliki berbagai fitur khusus dan add-on dengan funsionalitas yang dapat diandalkan aplikasi Anda. Saat mengevaluasi kebutuhan untuk memigrasikan fungsi ini, sering kali membantu untuk menyelidiki apakah ada pendekatan yang lebih baik di dalam AWS untuk mencapai tujuan yang sama. Mempertimbangkan perbedaan arsitektur antara Neo4j dan Neptunus, Anda sering dapat menemukan alternatif efektif yang memanfaatkan layanan atau integrasi lain. AWS
Lihat Kompatibilitas Neptunus dengan Neo4j daftar fitur khusus Neo4J dan solusi yang disarankan.