Apa itu Azure Cosmos DB untuk Apache Gremlin?

BERLAKU UNTUK: Gremlin

Azure Cosmos DB adalah NoSQL dan database relasional yang dikelola sepenuhnya untuk pengembangan aplikasi modern.

Azure Cosmos DB for Apache Gremlin adalah layanan database grafik yang dapat digunakan untuk menyimpan grafik besar-besaran dengan miliaran simpul dan tepi. Anda dapat mengkueri grafik dengan latensi milidetik dan mengembangkan struktur grafik dengan mudah. API untuk Gremlin dibangun berdasarkan Apache TinkerPop, kerangka kerja komputasi grafik yang menggunakan bahasa kueri Gremlin.

Penting

Mesin grafik Azure Cosmos DB mengikuti dengan cermat spesifikasi Apache TinkerPop. Namun, ada beberapa perbedaan dalam detail implementasi yang spesifik untuk Azure Cosmos DB. Beberapa fitur yang didukung oleh Apache TinkerPop tidak tersedia di Azure Cosmos DB, untuk mempelajari selengkapnya tentang fitur yang tidak didukung, lihat artikel kompatibilitas dengan Apache TinkerPop.

API untuk Gremlin menggabungkan kekuatan algoritma database grafik dengan infrastruktur terkelola yang sangat dapat diskalakan. Pendekatan ini memberikan solusi unik dan fleksibel untuk masalah data umum yang terkait dengan batasan yang tidak fleksibel atau relasional.

Tip

Ingin mencoba API untuk Gremlin tanpa komitmen? Buat akun Azure Cosmos DB menggunakan Coba Azure Cosmos DB secara gratis.

API untuk manfaat Gremlin

API untuk Gremlin telah menambahkan manfaat dibangun di Azure Cosmos DB:

  • Throughput dan penyimpanan yang dapat diskalakan secara elastis: Grafik di dunia nyata perlu menskalakan melebihi kapasitas satu server. Azure Cosmos DB mendukung database grafik yang dapat diskalakan secara horizontal yang dapat memiliki ukuran tak terbatas dalam hal penyimpanan dan throughput yang disediakan. Seiring bertambahnya skala database grafik, data didistribusikan secara otomatis menggunakan partisi grafik.

  • Replikasi multi-wilayah: Azure Cosmos DB dapat secara otomatis mereplikasi data grafik Anda ke wilayah Azure mana pun di seluruh dunia. Replikasi global menyederhanakan pengembangan aplikasi yang memerlukan akses global ke data. Selain meminimalkan latensi baca dan tulis di mana saja di seluruh dunia, Azure Cosmos DB menyediakan mekanisme failover regional yang dikelola layanan. Mekanisme ini dapat memastikan kelangsungan aplikasi Anda dalam kasus gangguan layanan yang jarang terjadi di suatu wilayah.

  • Kueri dan traversal cepat dengan standar kueri grafik yang paling banyak diadopsi: Simpan simpul dan tepi heterogen dan kueri melalui sintaks Gremlin yang sudah dikenal. Gremlin adalah bahasa kueri fungsional, imperatif yang menyediakan antarmuka yang kaya untuk mengimplementasikan algoritme grafik umum. API untuk Gremlin memungkinkan kueri dan traversal real-time yang kaya tanpa perlu menentukan petunjuk skema, indeks sekunder, atau tampilan. Untuk informasi selengkapnya, lihat grafik kueri dengan menggunakan Gremlin.

  • Database grafik yang dikelola sepenuhnya: Azure Cosmos DB menghilangkan kebutuhan untuk mengelola database dan sumber daya mesin. Sebagian besar platform database grafik yang ada terikat pada keterbatasan infrastruktur mereka dan sering memerlukan tingkat pemeliharaan yang tinggi untuk memastikan operasinya. Sebagai layanan yang dikelola sepenuhnya, Cosmos DB menghapus kebutuhan untuk mengelola mesin virtual, memperbarui perangkat lunak runtime, mengelola sharding atau replikasi, atau menangani peningkatan tingkat data yang kompleks. Setiap grafik secara otomatis dicadangkan dan dilindungi terhadap kegagalan regional. Manajemen ini memungkinkan pengembang untuk fokus memberikan nilai aplikasi alih-alih mengoperasikan dan mengelola database grafik mereka.

  • Pengindeksan otomatis: Secara default, API untuk Gremlin secara otomatis mengindeks semua properti dalam simpul (juga disebut sebagai simpul) dan tepi dalam grafik dan tidak mengharapkan atau memerlukan skema atau pembuatan indeks sekunder. Untuk informasi selengkapnya, lihat pengindeksan di Azure Cosmos DB.

  • Kompatibilitas dengan Apache TinkerPop: API untuk Gremlin mendukung standar Apache TinkerPop sumber terbuka. Standar Apache TinkerPop memiliki ekosistem aplikasi dan pustaka yang cukup yang dapat dengan mudah diintegrasikan dengan API.

  • Tingkat konsistensi yang dapat disetel: Azure Cosmos DB menyediakan lima tingkat konsistensi yang terdefinisi dengan baik untuk mencapai tradeoff yang tepat antara konsistensi dan performa untuk aplikasi Anda. Untuk kueri dan operasi baca, Azure Cosmos DB menawarkan lima tingkat konsistensi yang berbeda: kuat, dibatasi-basi, sesi, prefiks konsisten, dan berdasarkan kejadian. Tingkat konsistensi granular dan terdefinisi dengan baik ini memungkinkan Anda untuk menyeimbangkan dengan baik antara konsistensi, ketersediaan, dan latensi. Untuk informasi selengkapnya, lihat tingkat konsistensi data yang dapat disesuaikan di Azure Cosmos DB.

Skenario umum untuk API untuk Gremlin

Berikut adalah beberapa skenario di mana dukungan grafik Azure Cosmos DB dapat berguna:

  • Jejaring sosial/Pelanggan 365: Dengan menggabungkan data tentang pelanggan Anda dan interaksi mereka dengan orang lain, Anda dapat mengembangkan pengalaman yang dipersonalisasi, memprediksi perilaku pelanggan, atau menghubungkan orang dengan orang lain dengan minat yang sama. Azure Cosmos DB dapat digunakan untuk mengelola jaringan sosial dan melacak preferensi dan data pelanggan.

  • Mesin rekomendasi: Skenario ini umumnya digunakan di industri ritel. Dengan menggabungkan informasi tentang produk, pengguna, dan interaksi pengguna, seperti membeli, menelusuri, atau memberi peringkat item, Anda dapat membuat rekomendasi yang disesuaikan. Latensi rendah, skala elastis, dan dukungan grafik native Azure Cosmos DB sangat ideal untuk skenario ini.

  • Geospasial: Banyak aplikasi dalam telekomunikasi, logistik, dan perencanaan perjalanan perlu menemukan lokasi yang menarik dalam suatu area atau menemukan rute terpendek/optimal antara dua lokasi. Azure Cosmos DB sangat cocok untuk masalah ini.

  • Internet of Things: Dengan jaringan dan koneksi antara perangkat IoT yang dimodelkan sebagai grafik, Anda dapat membangun pemahaman yang lebih baik tentang status perangkat dan aset Anda. Anda juga dapat mempelajari bagaimana perubahan di salah satu bagian jaringan dapat berpotensi mempengaruhi bagian lain.

Pengantar database grafik

Data seperti yang muncul di dunia nyata terhubung secara alami. Pemodelan data tradisional berfokus pada mendefinisikan entitas secara terpisah dan menghitung hubungan mereka pada waktu proses. Meskipun model ini memiliki kelebihan, data yang sangat terhubung dapat menantang untuk dikelola dengan berbagai kendalanya.

Pendekatan database grafik mengandalkan hubungan yang terus-menerus di lapisan penyimpanan, yang mengarah ke operasi pengambilan grafik yang sangat efisien. API untuk Gremlin mendukung model grafik properti.

Objek grafik properti

Grafik properti adalah struktur yang terdiri dari simpul dan tepi. Kedua objek dapat memiliki jumlah pasangan nilai kunci yang berubah-ubah sebagai properti.

  • Simpul/simpul: Simpul menunjukkan entitas diskrit, seperti seseorang, tempat, atau peristiwa.

  • Tepi/hubungan: Tepi menunjukkan hubungan antar simpul. Misalnya, seseorang mungkin mengenal orang lain, terlibat dalam suatu peristiwa, atau baru-baru ini berada di lokasi.

  • Properti: Properti mengekspresikan informasi (atau metadata) tentang simpul dan tepi. Mungkin ada sejumlah properti baik di simpul atau tepi, dan dapat digunakan untuk menggambarkan dan memfilter objek dalam kueri. Contoh properti menyertakan vertex yang memiliki nama dan usia, atau tepi, yang dapat memiliki tanda waktu dan/atau berat.

  • Label - Label adalah nama atau pengidentifikasi vertex atau tepi. Label dapat mengelompokkan beberapa simpul atau tepi sedemikian rupa sehingga semua simpul/tepi dalam grup memiliki label tertentu. Misalnya, grafik dapat memiliki beberapa simpul dengan label "orang".

Database grafik sering disertakan dalam kategori database NoSQL atau non-relasional, karena tidak ada dependensi pada skema atau model data yang dibatasi. Tidak adanya skema ini memungkinkan pemodelan dan penyimpanan struktur yang terhubung secara alami dan efisien.

Contoh database grafik

Mari kita gunakan contoh grafik untuk memahami bagaimana kueri dapat diekspresikan di Gremlin. Gambar berikut menunjukkan aplikasi bisnis yang mengelola data tentang pengguna, minat, dan perangkat dalam bentuk grafik.

Contoh grafik properti yang menunjukkan orang, perangkat, dan minat.

Grafik ini memiliki jenis vertex berikut. Jenis-jenis ini juga disebut label di Gremlin:

  • Orang: Grafik memiliki tiga orang; Robin, Thomas, dan Ben.

  • Minat: Minat mereka, dalam contoh ini, termasuk permainan Sepak Bola.

  • Perangkat: Perangkat yang digunakan orang.

  • Sistem Operasi: Sistem operasi tempat perangkat berjalan.

  • Tempat: Tempat di mana perangkat diakses.

Kita menunjukkan hubungan antara entitas ini melalui jenis tepi berikut:

  • Knows: Mewakili keakraban. Misalnya, "Thomas mengenal Robin".

  • Tertarik: Mewakili minat orang-orang dalam grafik kami. Misalnya, "Ben tertarik dengan Sepak Bola".

  • RunsOS: Mewakili OS apa yang dijalankan perangkat. Misalnya, "Laptop menjalankan OS Windows".

  • Penggunaan: Mewakili perangkat mana yang digunakan seseorang. Misalnya, "Robin menggunakan ponsel Motorola dengan nomor seri 77".

  • Lokasi: Mewakili lokasi tempat perangkat diakses.

Konsol Gremlin adalah terminal interaktif yang ditawarkan oleh Apache TinkerPop dan terminal ini digunakan untuk berinteraksi dengan data grafik. Untuk informasi selengkapnya, lihat mulai cepat konsol Gremlin. Anda juga dapat melakukan operasi ini menggunakan driver Gremlin di platform pilihan Anda (Java, Node.js, Python, atau .NET). Contoh berikut menunjukkan cara menjalankan kueri terhadap data grafik ini menggunakan Konsol Gremlin.

Pertama mari kita lihat membuat, membaca, memperbarui, dan menghapus (CRUD). Pernyataan Gremlin berikut menyisipkan vertex Thomaske dalam grafik dengan beberapa properti:

g.addV('person').
  property('id', 'thomas.1').
  property('firstName', 'Thomas').
  property('lastName', 'Andersen').
  property('age', 44)

Tip

Jika Anda mengikuti contoh-contoh ini, Anda dapat menggunakan salah satu properti ini (age, firstName, lastName) sebagai kunci partisi saat membuat grafik Anda. Properti id tidak didukung sebagai kunci partisi dalam grafik.

Selanjutnya, pernyataan Gremlin berikut menyisipkan tepi tahu antara Thomas dan Robin.

g.V('thomas.1').
  addE('knows').
  to(g.V('robin.1'))

Kueri berikut mengembalikan simpul orang dalam urutan turun dari nama depannya:

g.V().
  hasLabel('person').
  order().
  by('firstName', decr)

Di mana grafik berguna adalah ketika Anda perlu menjawab pertanyaan seperti "Sistem operasi apa yang digunakan teman-teman Thomas?". Anda dapat menjalankan traversal Gremlin ini untuk mendapatkan informasi tersebut dari grafik:

g.V('thomas.1').
  out('knows').
  out('uses').
  out('runsos').
  group().
  by('name').
  by(count())

Langkah berikutnya