Migrasi dari Blazegraph ke Amazon Neptune - Amazon Neptune

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

Migrasi dari Blazegraph ke Amazon Neptune

Jika Anda memiliki grafik di sumber terbuka Blazegraf RDF triplestore, Anda dapat bermigrasi ke data grafik Anda ke Amazon Neptune menggunakan langkah-langkah berikut:

  • PenyediaanAWS infrastruktur. Mulailah dengan menyediakan infrastruktur Neptune yang dibutuhkan menggunakanAWS CloudFormation templat (lihatMembuat klaster DB).

  • Ekspor data dari Blazegraph. Ada dua metode utama untuk mengekspor data dari Blazegraph, yaitu menggunakan kueri SPARQL CONSTRUCT atau menggunakan utilitas Ekspor Blazegraph.

  • Mengimpor data ke Neptune. Anda kemudian dapat memuat file data yang diekspor ke Neptune menggunakan Neptune Workbench dan Bulk Loader Neptune.

Pendekatan ini juga umumnya berlaku untuk migrasi dari database triplestore RDF lainnya.

Kompatibilitas Blazegraph ke Neptune

Sebelum memigrasikan data grafik Anda ke Neptune, ada beberapa perbedaan signifikan antara Blazegraph dan Neptune yang harus Anda sadari. Perbedaan ini dapat memerlukan perubahan pada kueri, arsitektur aplikasi, atau keduanya, atau bahkan membuat migrasi tidak praktis:

  • Full-text search   –   Dalam Blazegraph, Anda dapat menggunakan pencarian teks lengkap internal atau kemampuan pencarian teks lengkap eksternal melalui integrasi dengan Apache Solr. Jika Anda menggunakan salah satu fitur ini, tetaplah mendapatkan informasi tentang pembaruan terbaru pada fitur pencarian teks lengkap yang didukung Neptune. Lihat Pencarian teks lengkap Neptunus.

  • Query hints   –   Blazegraph dan Neptune memperluas SPARQL menggunakan konsep petunjuk kueri. Selama migrasi, Anda perlu untuk memigrasi setiap petunjuk kueri yang Anda gunakan. Untuk informasi tentang dukungan Neptune petunjuk kueri terbaru, lihat Petunjuk kueri SPARQL.

  • Inferensi   –   Blazegraph mendukung inferensi sebagai opsi yang dapat dikonfigurasi dalam mode tripel, tetapi tidak dalam mode quad. Neptune belum mendukung inferensi.

  • Pencarian geospasial   –   Blazegraph mendukung konfigurasi ruang nama yang mengaktifkan dukungan geospasial. Fitur ini belum tersedia di Neptune.

  • Multi-tenancy   –   Blazegraph mendukung multi-tenancy dalam basis data tunggal. Di Neptune, multi-tenancy didukung baik dengan menyimpan data dalam grafik bernama dan menggunakan klausa USING NAMED untuk kueri SPARQL, atau dengan membuat klaster basis data terpisah untuk setiap tenant.

  • Federasi   –   Neptune saat ini mendukung federasi SPARQL 1.1 ke lokasi yang dapat diakses oleh instans Neptune, seperti dalam VPC privat, seluruh VPC, atau ke titik akhir internet eksternal. Tergantung pada pengaturan tertentu dan titik akhir federasi yang diperlukan, Anda mungkin memerlukan beberapa konfigurasi jaringan tambahan.

  • Ekstensi standar Blazegraph   –   Blazegraph menyertakan beberapa ekstensi untuk standar SPARQL dan REST API, sedangkan Neptune hanya kompatibel dengan spesifikasi standar itu sendiri. Hal ini mungkin memerlukan perubahan pada aplikasi Anda, atau membuat migrasi menjadi sulit.

Penyediaan infrastruktur AWS untuk Neptune

Meskipun Anda dapat membangunAWS infrastruktur yang diperlukan secara manual melaluiAWS Management Console atauAWS CLI, seringkali lebih nyaman menggunakan CloudFormation templat, seperti yang dijelaskan di bawah ini:

Penyediaan Neptune menggunakan CloudFormation templat:
  1. Navigasikan ke Menggunakan AWS CloudFormation Stack untuk Membuat Cluster DB Neptunus.

  2. Pilih Luncurkan Tumpukan di wilayah pilihan Anda.

  3. Tetapkan parameter yang diperlukan (nama tumpukan dan EC2SSHKeyPairName). Juga tetapkan parameter pilihan berikut untuk memudahkan proses migrasi:

    • Atur AttachBulkloadIAMRoleToNeptuneCluster menjadi BETUL. Parameter ini memungkinkan untuk membuat dan melampirkan IAM role yang sesuai untuk klaster Anda sehingga mengizinkan bulk loading data.

    • Set NotebookInstanceType ke tipe instans pilihan Anda. Parameter ini membuat buku kerja Neptune yang Anda gunakan untuk menjalankan beban massal ke Neptune dan memvalidasi migrasi.

  4. Pilih Selanjutnya.

  5. Mengatur pilihan tumpukan lain yang Anda inginkan.

  6. Pilih Selanjutnya.

  7. Tinjau pilihan Anda dan pilih kedua kotak centang untuk mengetahui bahwaAWS CloudFormation mungkin memerlukan kemampuan tambahan.

  8. Pilih Membuat tumpukan.

Proses pembuatan tumpukan dapat memakan waktu beberapa menit.

Mengekspor data dari Blazegraph

Langkah selanjutnya adalah mengekspor data dari Blazegraph dalam format yang kompatibel dengan pemuat massal Neptune.

Tergantung pada bagaimana data disimpan dalam Blazegraph (tiga atau empat kali lipat) dan berapa banyak grafik bernama yang digunakan, Blazegraph mungkin mengharuskan Anda melakukan proses ekspor beberapa kali dan menghasilkan beberapa file data:

  • Jika data disimpan sebagai tripel, Anda perlu menjalankan satu ekspor untuk setiap grafik bernama.

  • Jika data disimpan sebagai quad, Anda dapat memilih untuk mengekspor data dalam format N-Quads atau mengekspor setiap grafik bernama dalam format tripel tiga kali lipat.

Di bawah ini kami berasumsi bahwa Anda mengekspor namespace tunggal sebagai N-Quads, tetapi Anda dapat mengulangi proses untuk ruang nama tambahan atau format ekspor yang diinginkan.

Jika Anda membutuhkan Blazegraph untuk online dan tersedia selama migrasi, gunakan kueri SPARQL CONSTRUCT. Hal ini mengharuskan Anda menginstal, mengkonfigurasi, dan menjalankan instans Blazegraph dengan titik akhir SPARQL yang dapat diakses.

Jika Anda tidak memerlukan Blazegraph untuk online, gunakan utilitas BlazeGraph Ekspor. Untuk melakukan ini, Anda harus men-download Blazegraph, dan file data dan file konfigurasi harus dapat diakses, tetapi server tidak perlu berjalan.

Mengekspor data dari Blazegraph menggunakan SPARQL CONSTRUCT

SPARQL CONSTRUCT adalah fitur dari SPARQL yang mengembalikan grafik RDF yang cocok dengan templat kueri yang ditentukan. Untuk kasus penggunaan ini, Anda menggunakannya untuk mengekspor data Anda satu namespace pada satu waktu, menggunakan kueri seperti berikut:

CONSTRUCT WHERE { hint:Query hint:analytic "true" . hint:Query hint:constructDistinctSPO "false" . ?s ?p ?o }

Meskipun alat RDF lain ada untuk mengekspor data ini, cara termudah untuk menjalankan kueri ini adalah dengan menggunakan titik akhir API REST yang disediakan oleh Blazegraph. Skrip berikut menunjukkan bagaimana menggunakan script Python (3.6+) untuk mengekspor data sebagai N-Quads:

import requests # Configure the URL here: e.g. http://localhost:9999/sparql url = "http://localhost:9999/sparql" payload = {'query': 'CONSTRUCT WHERE { hint:Query hint:analytic "true" . hint:Query hint:constructDistinctSPO "false" . ?s ?p ?o }'} # Set the export format to be n-quads headers = { 'Accept': 'text/x-nquads' } # Run the http request response = requests.request("POST", url, headers=headers, data = payload, files = []) #open the file in write mode, write the results, and close the file handler f = open("export.nq", "w") f.write(response.text) f.close()

Jika data disimpan sebagai tripel, Anda perlu mengubah parameterAccept header untuk mengekspor data dalam format yang sesuai (N-Triples, RDF/XML/Turtle) menggunakan nilai-nilai yang ditentukan pada GitHub repo Blazegraph Blazegraph.

Menggunakan utilitas ekspor Blazegraph untuk mengekspor data

Blazegraph berisi metode utilitas untuk mengekspor data, yaitu kelas ExportKB. ExportKB memfasilitasi ekspor data dari Blazegraph, tetapi tidak seperti metode sebelumnya, mengharuskan server offline saat ekspor sedang berjalan. Ini menjadikannya metode ideal untuk digunakan ketika Anda dapat mengambil Blazegraph offline selama migrasi, atau migrasi dapat terjadi dari cadangan data.

Anda menjalankan utilitas dari baris perintah Java pada mesin yang memiliki Blazegraph diinstal tetapi tidak berjalan. Cara termudah untuk menjalankan perintah ini adalah mengunduh rilis blazegraph.jar terbaru yang terletak di GitHub. Menjalankan perintah ini memerlukan beberapa parameter:

  • log4j.primary.configuration   –   Lokasi file properti log4j.

  • log4j.configuration   –   Lokasi file properti log4j.

  • output   –   Direktori output untuk data yang diekspor. File terletak sebagai tar.gz dalam subdirektori bernama sebagai yang didokumentasikan dalam basis pengetahuan.

  • format   –   Format output yang diinginkan diikuti oleh lokasi file ke RWStore.properties. Jika Anda bekerja dengan tripel, Anda perlu mengubah parameter -format ke N-Triples, Turtle, atau RDF/XML.

Misalnya, jika Anda memiliki file jurnal Blazegraph dan file properti, ekspor data sebagai N-Quads menggunakan kode berikut:

java -cp blazegraph.jar \ com.bigdata.rdf.sail.ExportKB \ -outdir ~/temp/ \ -format N-Quads \ ./RWStore.properties

Jika ekspor berhasil, Anda akan melihat output seperti ini:

Exporting kb as N-Quads on /home/ec2-user/temp/kb Effective output directory: /home/ec2-user/temp/kb Writing /home/ec2-user/temp/kb/kb.properties Writing /home/ec2-user/temp/kb/data.nq.gz Done

Buat bucket Amazon Simple Storage Service (Amazon S3) dan salin data yang diekspor ke dalamnya

Setelah Anda mengekspor data Anda dari Blazegraph, buat bucket Amazon Simple Storage Service (Amazon S3) di Wilayah yang sama dengan target klaster DB Neptune untuk loader massal Neptune gunakan untuk mengimpor data.

Untuk petunjuk tentang cara membuat bucket Amazon S3, lihat Bagaimana cara membuat Bucket S3? dalam Panduan Pengguna Amazon Simple Storage Service, dan Contoh pembuatan bucket di Panduan Pengguna Amazon Simple Storage Service.

Untuk petunjuk tentang cara menyalin file data yang telah diekspor ke dalam bucket Amazon S3 baru, lihat Mengunggah objek ke bucket di Panduan Pengguna Amazon Simple Storage Service, atau Menggunakan perintah tingkat tinggi (s3) denganAWS CLI. Anda juga dapat menggunakan kode Python seperti berikut untuk menyalin file satu per satu:

import boto3 region = 'region name' bucket_name = 'bucket name' s3 = boto3.resource('s3') s3.meta.client.upload_file('export.nq', bucket_name, 'export.nq')

Gunakan pemuat massal Neptune untuk mengimpor data ke Neptune

Setelah mengekspor data Anda dari Blazegraph dan menyalinnya ke dalam bucket Amazon S3, Anda siap untuk mengimpor data ke Neptune. Neptune memiliki loader massal yang memuat data lebih cepat dan dengan sedikit overhead daripada melakukan operasi beban menggunakan SPARQL. Proses loader massal dimulai dengan panggilan ke loader titik akhir API untuk memuat data yang tersimpan dalam bucket S3 yang diidentifikasi ke Neptune.

Meskipun Anda bisa melakukan ini dengan panggilan langsung ke titik akhir loader REST, Anda harus memiliki akses ke VPC privat di mana instans Neptune target berjalan. Anda bisa mengatur bastion host, SSH ke mesin itu, dan menjalankan perintah cURL, tetapi menggunakan Neptune Workbench adalah lebih mudah.

Neptune Workbench adalah notebook Jupyter prakonfigurasi yang berjalan sebagai SageMaker notebook Amazon, dengan beberapa magic notebook spesifik Neptune diinstal. Magics ini menyederhanakan operasi Neptune umum seperti memeriksa status klaster, menjalankan traversal SPARQL dan Gremlin, dan menjalankan operasi pemuatan massal.

Untuk memulai proses pemuatan massal menggunakan magic %load, yang menyediakan sebuah antarmuka untuk menjalankan Perintah Loader Neptune:

  1. Masuk ke Konsol Manajemen AWS, dan buka konsol Amazon Neptune di https://console.aws.amazon.com/neptune/home.

  2. Pilih aws-neptune-blazegraph-to-neptune.

  3. Pilih Buka Notebook.

  4. Di instans berjalan Jupyter, pilih notebook yang ada atau membuat notebook baru menggunakan kernel Python 3.

  5. Dalam notebook Anda, buka sel, masukkan %load, dan jalankan sel.

  6. Mengatur parameter untuk loader massal:

    1. Untuk Sumber, masukkan lokasi file sumber untuk diimpor: s3://{bucket_name}/{file_name}.

    2. Untuk Format, pilih format yang sesuai, yang dalam contoh ini nquads.

    3. Untuk Beban ARN, masukkan ARN untuk peran IAMBulkLoad (informasi ini terletak di konsol IAM di bawah Peran).

  7. Pilih Submit (Kirim).

Hasilnya berisi status permintaan. Beban massal seringnya sebagai proses yang berjalan lama, sehingga respon tidak berarti bahwa beban telah selesai, hanya itu telah dimulai. Informasi status ini diperbarui secara berkala sampai melaporkan bahwa tugas selesai.

catatan

Informasi ini juga tersedia di posting blog, Pindah ke cloud: Migrasi Blazegraph ke Amazon Neptune.