View a markdown version of this page

Gunakan mode transaksi eksplisit untuk membaca dan menulis - Amazon Neptune

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

Gunakan mode transaksi eksplisit untuk membaca dan menulis

Saat menggunakan transaksi dengan Neptunus dan driver Bolt, yang terbaik adalah secara eksplisit mengatur mode akses untuk transaksi baca dan tulis ke pengaturan yang tepat.

Read-only transaksi

Untuk transaksi read-only, jika Anda tidak meneruskan konfigurasi mode akses yang sesuai saat membangun sesi, tingkat isolasi default digunakan, yaitu isolasi kueri mutasi. Akibatnya, penting bagi transaksi read-only untuk mengatur mode akses secara eksplisit. read

Auto-commit baca contoh transaksi:

SessionConfig sessionConfig = SessionConfig .builder() .withFetchSize(1000) .withDefaultAccessMode(AccessMode.READ) .build(); Session session = driver.session(sessionConfig); try { (Add your application code here) } catch (final Exception e) { throw e; } finally { driver.close() }

Baca contoh transaksi:

Driver driver = GraphDatabase.driver(url, auth, config); SessionConfig sessionConfig = SessionConfig .builder() .withDefaultAccessMode(AccessMode.READ) .build(); driver.session(sessionConfig).readTransaction( new TransactionWork<List<String>>() { @Override public List<String> execute(org.neo4j.driver.Transaction tx) { (Add your application code here) } } );

Dalam kedua kasus, SNAPSHOT isolasi dicapai menggunakan semantik transaksi read-only Neptunus.

Karena replika baca hanya menerima kueri read-only, kueri apa pun yang dikirimkan ke replika baca berjalan di bawah SNAPSHOT semantik isolasi.

Tidak ada pembacaan kotor atau pembacaan yang tidak dapat diulang untuk transaksi read-only.

Transaksi mutasi

Untuk kueri mutasi, ada tiga mekanisme berbeda untuk membuat transaksi tulis, yang masing-masing diilustrasikan di bawah ini:

Contoh transaksi tulis implisit:

Driver driver = GraphDatabase.driver(url, auth, config); SessionConfig sessionConfig = SessionConfig .builder() .withDefaultAccessMode(AccessMode.WRITE) .build(); driver.session(sessionConfig).writeTransaction( new TransactionWork<List<String>>() { @Override public List<String> execute(org.neo4j.driver.Transaction tx) { (Add your application code here) } } );

Auto-commit tulis contoh transaksi:

SessionConfig sessionConfig = SessionConfig .builder() .withFetchSize(1000) .withDefaultAccessMode(AccessMode.Write) .build(); Session session = driver.session(sessionConfig); try { (Add your application code here) } catch (final Exception e) { throw e; } finally { driver.close() }

Contoh transaksi tulis eksplisit:

Driver driver = GraphDatabase.driver(url, auth, config); SessionConfig sessionConfig = SessionConfig .builder() .withFetchSize(1000) .withDefaultAccessMode(AccessMode.WRITE) .build(); Transaction beginWriteTransaction = driver.session(sessionConfig).beginTransaction(); (Add your application code here) beginWriteTransaction.commit(); driver.close();
Tingkat isolasi untuk transaksi menulis
  • Pembacaan yang dibuat sebagai bagian dari kueri mutasi dijalankan di bawah isolasi READ COMMITTED transaksi.

  • Tidak ada pembacaan kotor untuk pembacaan yang dibuat sebagai bagian dari kueri mutasi.

  • Catatan dan rentang catatan dikunci saat membaca dalam kueri mutasi.

  • Ketika rentang indeks telah dibaca oleh transaksi mutasi, ada jaminan kuat bahwa rentang ini tidak akan dimodifikasi oleh transaksi bersamaan apa pun sampai akhir pembacaan.

Kueri mutasi tidak aman untuk utas.

Untuk konflik, lihatResolusi Konflik Menggunakan Lock-Wait Timeout.

Kueri mutasi tidak dicoba ulang secara otomatis jika terjadi kegagalan.