Ulasan Amazon Neptune: Pangkalan data grafik yang boleh diskalakan untuk OLTP

Pangkalan data grafik, seperti Neo4j, Apache Spark GraphX, Graf DataStax Enterprise, Graf IBM, JanusGraph, TigerGraph, AnzoGraph, bahagian grafik Azure Cosmos DB, dan subjek ulasan ini, Amazon Neptune, bagus untuk beberapa jenis aplikasi yang melibatkan set data yang sangat berkaitan, seperti memberikan cadangan berdasarkan grafik sosial, melakukan pengesanan penipuan, memberikan cadangan produk masa nyata, dan mengesan serangan dalam operasi rangkaian dan IT. Ini adalah kawasan di mana pangkalan data relasional tradisional cenderung menjadi tidak cekap dan lambat kerana perlunya gabungan SQL yang kompleks beroperasi pada set data yang besar.

Neptune adalah perkhidmatan pangkalan data grafik yang diuruskan sepenuhnya dengan sifat ACID dan konsistensi segera, yang pada intinya mempunyai mesin pangkalan data grafik berprestasi tinggi yang dibina khas yang dioptimumkan untuk menyimpan berbilion hubungan dan menanyakan grafik dengan kependaman milisaat. Neptune menyokong dua bahasa pertanyaan grafik sumber terbuka yang paling popular, Apache TinkerPop Gremlin dan W3C SPARQL. Cypher Query Language (CQL) yang popular yang digunakan di Neo4j bermula dengan hak milik, tetapi kemudian menjadi sumber terbuka.

Gremlin dan SPARQL menangani pelbagai jenis pangkalan data grafik. Gremlin, seperti CQL, adalah untuk pangkalan data grafik harta tanah; SPARQL adalah untuk tiga kali ganda Rangka Kerja Penerangan Sumber (RDF), yang direka untuk web. Gremlin adalah bahasa melintang grafik; SPARQL adalah bahasa pertanyaan dengan klausa SELECT dan WHERE.

Pelaksanaan Amazon Neptune membolehkan kedua bahasa Gremlin dan SPARQL dalam satu contoh pangkalan data, tetapi mereka tidak dapat melihat data satu sama lain. Sebab untuk membenarkan kedua-duanya adalah membiarkan pengguna baru mengetahui mana yang lebih baik untuk keperluan mereka.

Dokumentasi Neptune mempunyai sampel menggunakan varian Gremlin-Groovy, Gremlin-Java, dan Gremlin-Python dari Gremlin. Neptune membenarkan Gremlin di konsol, panggilan HTTP REST, program Java, Python, .Net, dan Node.js. Di sisi SPARQL, Neptune menyokong konsol dan meja kerja Eclipse RDF4J, panggilan HTTP REST, dan program Java.

Ciri dan faedah Amazon Neptune

Sebagai pangkalan data grafik transaksi yang dikendalikan sepenuhnya sebagai perkhidmatan, Amazon Neptune tidak hanya menawarkan kebebasan dari keperluan untuk menjaga perkakasan dan perisian pangkalan data, ia juga menawarkan penskalaan yang mudah, ketersediaan yang lebih besar dari 99,99%, dan tahap keselamatan yang pelbagai. Kluster pangkalan data Neptunus boleh mempunyai penyimpanan automatik penskalaan hingga 64 TB dalam enam replika data anda di tiga zon ketersediaan, dan lebih banyak lagi jika anda mengaktifkan ketersediaan tinggi dengan menggunakan replika baca di zon tambahan.

Lapisan penyimpanan data Neptune disokong oleh SSD, toleransi kesalahan, dan penyembuhan diri. Kegagalan cakera diperbaiki di latar belakang tanpa kehilangan ketersediaan pangkalan data. Neptune secara automatik mengesan kerosakan pangkalan data, dan dimulakan semula — biasanya dalam 30 saat atau kurang — tanpa perlu melakukan pemulihan kerosakan atau membina semula cache pangkalan data, kerana cache diasingkan dari proses pangkalan data dan dapat bertahan semula. Sekiranya keseluruhan contoh utama gagal, Neptune secara automatik akan gagal ke salah satu daripada 15 replika baca. Sandaran terus dialirkan ke S3.

Anda boleh meningkatkan kluster Amazon Neptune ke atas dan ke bawah sama ada dengan mengubah keadaan, atau (untuk mengelakkan waktu henti) dengan menambahkan contoh dari ukuran yang diinginkan dan mematikan contoh lama setelah salinan data telah berpindah dan anda telah mempromosikan contoh baru ke primer. Saiz contoh Neptune VM berkisar dari db.r4.large (dua vCPU dan 16 GiB RAM) hingga db.r4.16xlarge (64 vCPU dan 488 GiB RAM).

Amazon Neptune menerapkan keselamatan dengan menjalankan enjin dalam rangkaian VPC (awan peribadi maya) dan secara opsional mengenkripsi data dalam keadaan rehat menggunakan Perkhidmatan Pengurusan Kunci AWS. Selain mengenkripsi penyimpanan yang mendasari, Neptune juga mengenkripsi sandaran, gambar, dan replika. Neptune layak digunakan dalam aplikasi HIPAA. Neptune tidak mengharuskan anda membuat indeks khusus untuk mencapai prestasi pertanyaan yang baik, yang merupakan perubahan yang dialu-alukan daripada mengimbangi permintaan dan prestasi penulisan dengan menyesuaikan indeks dengan teliti.

Amazon Neptune tidak menyokong algoritma pertanyaan analitik, seperti PageRank, yang dipaparkan di beberapa pangkalan data grafik lain, seperti Neo4j, TigerGraph, dan AnzoGraph. Neptune bertujuan untuk menjadi pangkalan data grafik transaksional latensi rendah (OLTP) untuk set data yang besar, bukan pangkalan data analitik (OLAP), dan hanya tidak dioptimumkan untuk kes penggunaan atau pertanyaan analitik yang melibatkan lebih dari tiga hop - dan PageRank menyentuh setiap item dalam pangkalan data.

Amazon Neptune memang menyokong agregat, jadi boleh melakukan sedikit analisis, tetapi tidak banyak. Seperti Neptune, Neo4j pada asalnya juga dimaksudkan untuk digunakan untuk OLTP, tetapi menambahkan perpustakaan pertanyaan analitik pada tahun 2017. Fakta bahawa kemampuan analisis terhad di Neptune tidak semestinya menjadi alasan untuk menolaknya, sebagai pangkalan data grafik OLTP dengan latensi rendah dengan replika baca yang diedarkan secara global dan kemampuan untuk menangani 64 TB data tidak perlu disinari.

Mulakan dengan Amazon Neptune

Anda boleh melancarkan gugus Amazon Neptune dengan dua cara: terus dari konsol Amazon Neptune, atau dengan menggunakan templat AWF CloudFormation untuk membuat timbunan Neptune. Perhatikan bahawa templat CloudFormation yang disediakan tidak sesuai untuk pengeluaran, kerana tidak begitu selamat - ini dimaksudkan sebagai asas untuk tutorial.

Anda boleh mula kecil dan menambah kapasiti — VM yang lebih besar, atau lebih banyak replika baca — setiap kali aplikasi anda memerlukannya. Storan bertambah secara automatik, dan anda hanya membayar simpanan yang anda gunakan.

Dalam tangkapan skrin berikut, saya menunjukkan beberapa kitaran hidup gambar Neptune yang dibuat dari konsol Neptune. Saya mulakan dengan pembuatan kluster.

Adakah anda mahukan ketersediaan yang tinggi untuk kluster anda? Ia sama sekali tidak sukar.

Dalam tetapan lanjutan, terdapat beberapa panel. Nasib baik, kebanyakan lalai harus memenuhi keperluan anda.

Akhirnya, anda akan melihat amaran sebelum anda menekan butang untuk melancarkan pangkalan data. Sekiranya anda benar-benar perlu melihat penjelasannya, klik kanan pada pautan dan paparkan di tab lain. (Saya berharap pepijat ini dapat diperbaiki.)

Setelah anda mempunyai kluster yang berfungsi, anda boleh melakukan beberapa tindakan pada kejadian tersebut.

Di peringkat kluster, anda boleh memaparkan ringkasan.

Pada peringkat contoh anda dapat melihat grafik prestasi.

Memuatkan data ke Amazon Neptune

Untuk memuatkan data ke Amazon Neptune, pertama-tama anda memuatkan fail ke Amazon S3 dalam salah satu format yang betul: CSV untuk Gremlin, dan tiga kali ganda, quad, RDF / XML, atau Turtle for RDF. Pemuat menyokong pemampatan gzip fail tunggal.

Anda perlu membuat peranan IAM dan titik akhir S3 VPC untuk memberi kebenaran kepada Neptune untuk mengakses baldi S3 anda kecuali mereka sudah dibuat, misalnya oleh templat CloudFormation. Terdapat Neptune loader API yang dapat dipanggil melalui titik akhir REST (misalnya dari perintah curl) yang dapat mengambil peranan IAM dan memuatkan data secara besar-besaran ke dalam kluster anda. Terdapat juga penukar untuk GraphML ke CSV di GitHub. Panduan memuatkan data adalah untuk format data yang disokong.

Pertanyaan Amazon Neptune dengan Gremlin

Anda boleh menggunakan konsol Gremlin dan titik akhir REST untuk menyambung dan menanyakan kejadian Amazon Neptune di Gremlin dari EC2 VM dalam VPC yang sama dengan pangkalan data. Lebih berguna untuk aplikasi, anda boleh membuat pertanyaan Neptune menggunakan Gremlin di Java, Python, .Net, dan Node.js.

Terdapat keseluruhan buku mengenai Gremlin, Practical Gremlin: An Apache TinkerPop Tutorial , oleh Kelvin Lawrence. Buku ini menggunakan TinkerGraph untuk pangkalan data, tetapi sintaks Gremlin yang sama berfungsi untuk Neptune dengan pengecualian kecil yang didokumentasikan oleh Amazon.

Pertanyaan Gremlin menerangkan cara menavigasi bucu dan tepi grafik. Contoh pangkalan data laluan udara yang dibincangkan dalam buku ini menemui semua cara untuk terbang dari Austin, Texas (kod lapangan terbang AUS) ke Agra, India (kod lapangan terbang AGR) dengan dua hentian:

gV (). mempunyai ('code', 'AUS'). ulangi (keluar ()). kali (3) .mempunyai ('code', 'AGR'). path (). oleh ('code')

Sekiranya anda ingin mencuba contoh dalam buku di Amazon Neptune, pertama sekali anda perlu menyalin fail CSV tepi dan simpul ke baldi S3 menggunakan perintah AWS CLI cp, dan memuatkan data dari sana ke Neptune.

Pertanyaan Amazon Neptune dengan SPARQL

Anda boleh menggunakan konsol RDF4J, meja kerja RDF4J, dan titik akhir REST untuk menyambung ke dan meminta contoh Amazon Neptune anda dalam SPARQL dari EC2 VM dalam VPC yang sama dengan pangkalan data. Lebih berguna untuk aplikasi, anda boleh membuat pertanyaan Neptune menggunakan SPARQL di Java. Spesifikasi Bahasa Pertanyaan SPARQL 1.1 menentukan cara membina pertanyaan. Sekiranya anda mencari di web untuk "tutorial sparql", anda akan menemui sebilangan tutorial tulisan dan video percuma mengenai perkara ini. Ini semua mesti berfungsi dengan Neptune setelah anda memuatkan data.

SPARQL kelihatan kurang seperti kod berfungsi daripada Gremlin, dan lebih seperti SQL. Sebagai contoh:

PILIH? Tempah? Siapa

DI MANA {? Book dc: creator? Who}

Prestasi dan penskalaan Amazon Neptune

Amazon Neptune dirancang untuk pertanyaan grafik latensi rendah hingga tiga hops pada pangkalan data besar (sehingga 64 TB). Ia menyokong sehingga 15 replika baca latensi rendah di tiga zon ketersediaan untuk meningkatkan kapasiti membaca dan, menurut Amazon, dapat melaksanakan lebih dari 100,000 pertanyaan grafik sesaat.

Ukuran contohnya bermula dari dua hingga 64 vCPU dengan RAM 15 GiB hingga 488 GiB, kira-kira dua kali ganda pada setiap langkah. Paling banyak, Neptune dapat menggunakan 64 vCPU kali 16 tayangan untuk sejumlah 1024 vCPU, dan 488 GiB RAM kali 16 tayangan untuk sejumlah 7808 GiB RAM. Ini adalah kemungkinan peningkatan skala secara keseluruhan sebanyak 512x, dengan mempertimbangkan saiz contoh dan bilangan replika baca. Kos mengesan penskalaan sumber dengan tepat.

Sekiranya anda mencari pangkalan data grafik transaksional sebagai perkhidmatan, Amazon Neptune adalah pilihan yang sesuai. Memandangkan Neptune menyokong kedua-dua bahasa pertanyaan Gremlin dan SPARQL, anda seharusnya dapat mencari pembangun untuk membina aplikasi menentangnya. Sebaliknya, kekurangan sokongan Cypher Neptune boleh mengecilkan pengguna Neo4j yang ada, dan kekurangan OLAP dan sokongan algoritma grafik akan mendorong orang yang menginginkan pangkalan data grafik tunggal untuk transaksi dan analisis.

Pelbagai kapasiti Amazon Neptune (ukuran hingga 16x dan 16 kejadian), kadar transaksi maksimum yang tinggi (100,000 pertanyaan sesaat), dan harga bayar-sambil-pergi harus memenuhi kebanyakan keperluan perniagaan. Walau bagaimanapun, kekurangan pilihan di tempat mungkin menghalangi penggunaannya pada syarikat yang mempunyai polisi untuk tidak meletakkan data sensitif mereka di awan dan syarikat yang lebih suka menanggung dan menulis perbelanjaan modal daripada perbelanjaan operasi yang berterusan.

-

Kos: $ 0,348 hingga $ 5,568 per Instance-Hour bergantung pada saiz contoh, $ 0.10 per GB-bulan untuk penyimpanan, $ 0.20 per juta permintaan I / O, $ 0.023 per GB-bulan untuk simpanan sandaran, $ 0.12 per GB untuk pemindahan data keluar; pelbagai jeda harga berlaku. 

Platform: Perkhidmatan Web Amazon; menyokong pertanyaan Apache TinkerPop Gremlin atau SPARQL; akses melalui AWS console, HTTP REST, dan Java, serta RDF4J Workbench (SPARQL) dan Python, .Net, dan Node.js (Gremlin).