Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Amazon Neptune Engine versi 1.3.2.0 (2024-06-10)
Pada 2024-06-10, versi mesin 1.3.2.0 umumnya digunakan. Harap dicatat bahwa perlu beberapa hari agar rilis baru tersedia di setiap wilayah.
catatan
Rilis mesin 1.3.0.0 memperkenalkan format baru untuk grup parameter kustom dan grup parameter cluster kustom. Akibatnya, jika Anda memutakhirkan dari versi mesin yang lebih awal dari 1.3.0.0 ke versi mesin 1.3.0.0 atau lebih tinggi, Anda harus membuat ulang semua grup parameter kustom yang ada dan grup parameter cluster kustom menggunakan keluarga grup parameter. neptune1.3 Rilis sebelumnya menggunakan keluarga grup parameterneptune1, atauneptune1.2. dan grup parameter tersebut tidak akan berfungsi dengan rilis 1.3.0.0 ke atas. Demikian pula, Anda harus menggunakan grup parameter cluster 1.4.0.0 untuk versi mesin 1.4.0.0 dan lebih tinggi. Untuk informasi selengkapnya, lihat Grup parameter Amazon Neptunus.
Awas
Rilis mesin 1.3.2.0 memperkenalkan beberapa masalah potensial yang harus Anda ketahui. Lihat bagian di bawah ini Mitigasi masalah dalam rilis 1.3.2.0 untuk informasi lebih lanjut.
Perbaikan dalam rilis mesin ini
Perbaikan umum
-
Dukungan untuk TLS versi 1.3 termasuk suite sandi TLS_AES_128_GCM_SHA256 dan TLS_AES_256_GCM_SHA384. TLS 1.3 adalah opsi - TLS 1.2 masih minimum.
Perbaikan Gremlin
-
TinkerPop 3.7.x peningkatan
-
Menyediakan perluasan besar bahasa Gremlin.
-
Langkah-langkah baru untuk memproses string, daftar, dan tanggal.
-
Sintaks baru untuk menentukan kardinalitas melalui langkah.
mergeV() -
union()sekarang dapat digunakan sebagai langkah awal. -
Untuk mempelajari lebih lanjut tentang perubahan di 3.7.x, lihat dokumentasi pemut TinkerPop akhiran.
-
-
Saat memutakhirkan driver bahasa Gremlin klien untuk Java, perhatikan bahwa kelas serializer tidak memiliki beberapa penggantian nama. https://tinkerpop.apache.org/docs/3.7.1/upgrade/#_serializer_renaming
Anda perlu memperbarui penamaan paket dan kelas dalam file konfigurasi Anda dan dalam kode, jika ditentukan.
-
-
StrictTimeoutValidation(hanya bila diaktifkan melalui labmodeStrictTimeoutValidationdengan menyertakanStrictTimeoutValidation=enabled): KetikaStrictTimeoutValidationparameter memiliki nilaienabled, nilai batas waktu per kueri yang ditentukan sebagai opsi permintaan atau petunjuk kueri tidak dapat melebihi nilai yang ditetapkan secara global dalam grup parameter. Dalam kasus seperti itu, Neptunus akan melemparInvalidParameterException. Pengaturan ini dapat dikonfirmasi dalam respons pada/statustitik akhir ketika nilainyadisabled, dan di Neptunus versi 1.3.2.0 nilai default parameter ini adalah.Disabled
Peningkatan OpenCypher
-
Mesin Amazon Neptune versi 1.3.2.0 memberikan throughput hingga 9x lebih cepat dan 10x lebih tinggi untuk kinerja kueri OpenCypher dibandingkan rilis engine sebelumnya.
-
Kueri latensi rendah dan peningkatan kinerja throughput: Peningkatan kinerja keseluruhan untuk kueri OpenCypher latensi rendah. Versi baru juga meningkatkan throughput untuk kueri tersebut. Perbaikan lebih signifikan ketika kueri parameter digunakan.
-
Dukungan untuk Query Plan Cache: Ketika kueri dikirimkan ke Neptunus, string kueri diurai, dioptimalkan, dan diubah menjadi rencana kueri, yang kemudian dieksekusi oleh mesin. Aplikasi sering didukung oleh pola kueri umum yang dibuat dengan nilai yang berbeda. Cache rencana kueri dapat mengurangi latensi keseluruhan dengan men-cache rencana kueri dan dengan demikian menghindari penguraian dan pengoptimalan untuk pola berulang tersebut.
-
Peningkatan Kinerja untuk kueri agregasi DISTINCT.
-
Peningkatan kinerja untuk gabungan yang melibatkan variabel yang dapat dibatalkan.
-
Peningkatan kinerja untuk kueri yang melibatkan tidak sama dengan predikat id (node/relationship).
-
Dukungan tambahan untuk fungsionalitas datetime (Hanya diaktifkan melalui mode lab
DatetimeMilliseconddengan menyertakan.DatetimeMillisecond=enabledUntuk informasi selengkapnya, lihat Dukungan temporal dalam implementasi Neptune OpenCypher (Neptune Analytics dan Neptune Database 1.3.2.0 ke atas).
Cacat diperbaiki dalam rilis mesin ini
Perbaikan umum
-
Memperbarui pesan kesalahan NeptuneML saat memvalidasi akses ke bucket Graphlytics.
Perbaikan Gremlin
-
Memperbaiki informasi label yang hilang dalam terjemahan kueri DFE, untuk skenario di mana langkah-langkah kontribusi non-jalur berisi label. Contoh:
g.withSideEffect('Neptune#useDFE', true). V(). has('name', 'marko'). has("name", TextP.regex("mark.*")).as("p1"). not(out().has("name", P.within("peter"))). out().as('p2'). dedup('p1', 'p2') -
Memperbaiki
NullPointerExceptionbug dalam terjemahan kueri DFE, yang terjadi ketika kueri dijalankan dalam dua fragmen DFE, dan fragmen pertama dioptimalkan ke node yang tidak memuaskan. Contoh:g.withSideEffect('Neptune#useDFE', true). V(). has('name', 'doesNotExists'). has("name", TextP.regex("mark.*")). inject(1). V(). out(). has('name', 'vadas') -
Memperbaiki bug di mana Neptunus dapat melempar
InternalFailureExceptionketika kueri berisi modulator ValueTraversal di dalam by () dan inputnya adalah Map. Contoh:g.V(). hasLabel("person"). project("age", "name").by("age").by("name"). order().by("age")
Perbaikan OpenCypher
-
Peningkatan operasi UNWIND (misalnya memperluas daftar nilai menjadi nilai individual) untuk membantu mencegah situasi di luar memori (OOM). Contoh:
MATCH (n)-->(m) WITH collect(m) AS list UNWIND list AS m RETURN m, list -
Memperbaiki pengoptimalan id khusus jika terjadi beberapa operasi MERGE di mana id disuntikkan melalui UNWIND. Contoh:
UNWIND [{nid: 'nid1', mid: 'mid1'}, {nid: 'nid2', mid: 'mid2'}] as ids MERGE (n:N {`~id`: ids.nid}) MERGE (m:M {`~id`: ids.mid}) -
Memperbaiki ledakan memori saat merencanakan kueri kompleks dengan akses properti dan beberapa lompatan dengan hubungan dua arah. Contoh:
MATCH (person1:person)-[:likes]->(res)-[:partOf]->(group)-[:knows]-(:entity {name: 'foo'}), (person1)-[:knows]->(person2)-[:likes]-(res2), (comment)-[:presentIn]->(:Group {name: 'barGroup'}), (person1)-[:commented]->(comment2:comment)-[:partOf]->(post:Post), (comment2)-[:presentIn]->(:Group {name: 'fooGroup'}), (comment)-[:contains]->(info:Details)-[:CommentType]->(:CommentType {name: 'Positive'}), (comment2)-[:contains]->(info2:Details)-[:CommentType]->(:CommentType {name: 'Positive'}) WHERE datetime('2020-01-01T00:00') <= person1.addedAfter <= datetime('2023-01-01T23:59') AND comment.approvedBy = comment2.approvedBy MATCH (comment)-[:contains]->(info3:Details)-[:CommentType]->(:CommentType {name: 'Neutral'}) RETURN person1, group.name, info1.value, post.ranking, info3.value -
Kueri agregasi tetap dengan null sebagai grup berdasarkan variabel. Contoh:
MATCH (n) RETURN null AS group, sum(n.num) AS result
Perbaikan SPARQL
-
Memperbaiki parser SPARQL untuk meningkatkan waktu penguraian untuk kueri besar seperti INSERT DATA yang berisi banyak tripel dan token besar.
Mitigasi masalah dalam rilis 1.3.2.0
-
Untuk versi 1.3.2.0, kami telah mendeteksi masalah dalam cache rencana kueri ketika
skipataulimitdigunakan dalamWITHklausa dalam dan diparameter. Contoh:MATCH (n:Person) WHERE n.age > $age WITH n skip $skip LIMIT $limit RETURN n.name, n.age parameters={"age": 21, "skip": 2, "limit": 3}Dalam hal ini, nilai parameter untuk skip dan limit dari rencana pertama akan diterapkan ke kueri berikutnya juga, yang mengarah ke hasil yang tidak terduga.
Mitigasi
Untuk mencegah masalah ini, tambahkan petunjuk kueri
QUERY:PLANCACHE "disabled"saat mengirimkan kueri yang menyertakan sub-klausa and/or batas lompatan parameter. Atau, Anda dapat mengkodekan nilai ke dalam kueri.Opsi 1: Menggunakan Petunjuk Kueri untuk menonaktifkan cache rencana:
Using QUERY:PLANCACHE "disabled" MATCH (n:Person) WHERE n.age > $age WITH n skip $skip LIMIT $limit RETURN n.name, n.age parameters={"age": 21, "skip": 2, "limit": 3}Opsi 2: Menggunakan nilai kode keras untuk skip dan limit:
MATCH (n:Person) WHERE n.age > $age WITH n skip 2 LIMIT 3 RETURN n.name, n.age parameters={"age": 21} -
Kueri yang menggunakan nilai filter numerik dapat mengembalikan hasil yang salah saat menggunakan cache rencana kueri. Untuk menghindari masalah, gunakan petunjuk kueri
QUERY:PLANCACHE "disabled"untuk melewati cache rencana kueri. Misalnya, gunakan:USING QUERY:PLANCACHE "disabled" MATCH (n:person) WHERE n.yearOfBirth > $year RETURN n parameters={"year":1950} -
Kueri yang menggunakan nama parameter yang sama beberapa kali dapat gagal dengan kesalahan
Parameter name should not be a number and/or contain _internal_ or _modified_user_ string within it. These are reserved for planCache. Otherwise, rerun with HTTP parameter planCache=disabled. Lewati cache rencana kueri seperti di atas dalam kasus seperti itu, atau duplikat parameter seperti dalam contoh ini:MATCH (n:movie) WHERE n.runtime>=$minutes RETURN n UNION MATCH (n:show) WHERE n.duration>=$minutes RETURN n parameters={"minutes":130}Gunakan petunjuk
QUERY:PLANCACHE "disabled"atau ubah parameter:MATCH (n:movie) WHERE n.runtime>=$rt_min RETURN n UNION MATCH (n:show) WHERE n.duration>=$dur_min RETURN n parameters={"rt_min":130, "dur_min":130} -
Kueri yang dieksekusi dengan protokol Bolt dapat menghasilkan hasil yang salah jika kueri adalah kueri UNION atau UNION ALL. Untuk menghindari masalah ini, pertimbangkan untuk menjalankan kueri tertentu dengan titik akhir HTTP. Atau, jalankan setiap bagian dari serikat secara terpisah saat menggunakan protokol Bolt.
Query-Language Versi yang Didukung dalam Rilis Ini
Sebelum memutakhirkan cluster DB ke versi 1.3.2.0, pastikan proyek Anda kompatibel dengan versi bahasa kueri ini:
Versi paling awal Gremlin didukung:
3.7.1Gremlin versi terbaru didukung:
3.7.1Versi OpenCypher:
Neptune-9.0.20190305-1.0Versi SPARQL:
1.1
Tingkatkan jalur ke rilis mesin 1.3.2.0
Anda dapat meningkatkan ke rilis ini dari rilis mesin 1.2.0.0 atau lebih tinggi.
Peningkatan ke Rilis Ini
Jika klaster DB menjalankan versi mesin yang ada peningkatan jalur untuk rilis ini, klaster tersebut sekarang memenuhi syarat untuk ditingkatkan. Anda dapat meningkatkan klaster yang memenuhi syarat menggunakan operasi klaster DB pada konsol atau dengan menggunakan SDK. Perintah CLI berikut akan meningkatkan klaster yang memenuhi syarat dengan segera:
Untuk Linux, macOS, atau Unix:
aws neptune modify-db-cluster \ --db-cluster-identifier(your-neptune-cluster)\ --engine-version 1.3.2.0 \ --allow-major-version-upgrade \ --apply-immediately
Untuk Windows:
aws neptune modify-db-cluster ^ --db-cluster-identifier(your-neptune-cluster)^ --engine-version 1.3.2.0 ^ --allow-major-version-upgrade ^ --apply-immediately
Alih-alih--apply-immediately, Anda dapat menentukan--no-apply-immediately. Untuk melakukan peningkatan versi utama, parameter allow-major-version-upgrade diperlukan. Juga, pastikan untuk menyertakan versi mesin atau mesin Anda mungkin ditingkatkan ke versi yang berbeda.
Jika cluster Anda menggunakan grup parameter cluster kustom, pastikan untuk menyertakan parameter ini untuk menentukannya:
--db-cluster-parameter-group-name(name of the custom DB cluster parameter group)
Demikian pula, jika ada instance di cluster yang menggunakan grup parameter DB kustom, pastikan untuk menyertakan parameter ini untuk menentukannya:
--db-instance-parameter-group-name(name of the custom instance parameter group)
Selalu uji sebelum Anda meningkatkan
Saat versi mesin Neptunus mayor atau minor baru dirilis, selalu uji aplikasi Neptunus Anda terlebih dahulu sebelum memutakhirkannya. Bahkan peningkatan kecil dapat memperkenalkan fitur atau perilaku baru yang akan memengaruhi kode Anda.
Mulailah dengan membandingkan halaman catatan rilis dari versi Anda saat ini dengan versi yang ditargetkan untuk melihat apakah akan ada perubahan dalam versi bahasa kueri atau perubahan besar lainnya.
Cara terbaik untuk menguji versi baru sebelum memutakhirkan cluster DB produksi Anda adalah dengan mengkloning cluster produksi Anda sehingga klon menjalankan versi mesin baru. Anda kemudian dapat menjalankan kueri pada klon tanpa mempengaruhi cluster DB produksi.
Selalu buat snapshot manual sebelum Anda memutakhirkan
Sebelum melakukan upgrade, kami sangat menyarankan agar Anda selalu membuat snapshot manual dari cluster DB Anda. Memiliki snapshot otomatis hanya menawarkan perlindungan jangka pendek, sedangkan snapshot manual tetap tersedia sampai Anda secara eksplisit menghapusnya.
Dalam kasus tertentu Neptunus membuat snapshot manual untuk Anda sebagai bagian dari proses peningkatan, tetapi Anda tidak boleh mengandalkan ini, dan harus membuat snapshot manual Anda sendiri dalam hal apa pun.
Ketika Anda yakin bahwa Anda tidak perlu mengembalikan cluster DB Anda ke status pra-upgrade, Anda dapat secara eksplisit menghapus snapshot manual yang Anda buat sendiri, serta snapshot manual yang mungkin telah dibuat Neptunus. Jika Neptune membuat snapshot manual, itu akan memiliki nama yang dimulai denganpreupgrade, diikuti oleh nama cluster DB Anda, versi mesin sumber, versi mesin target, dan tanggal.
catatan
Jika Anda mencoba memutakhirkan saat tindakan tertunda sedang dalam proses, Anda mungkin mengalami kesalahan seperti berikut ini:
We're sorry, your request to modify DB cluster (cluster identifier) has failed. Cannot modify engine version because instance (instance identifier) is running on an old configuration. Apply any pending maintenance actions on the instance before proceeding with the upgrade.
Jika Anda mengalami kesalahan ini, tunggu tindakan yang tertunda selesai, atau segera picu jendela pemeliharaan untuk membiarkan pemutakhiran sebelumnya selesai.
Untuk informasi selengkapnya tentang peningkatan versi mesin Anda, lihat Mempertahankan Cluster DB Amazon Neptunus Anda. Jika Anda memiliki pertanyaan atau masalah, tim AWS Dukungan tersedia di forum komunitas dan melalui AWS Dukungan Premium