Apakah pangkalan data grafik? Kaedah yang lebih baik untuk menyimpan data yang disambungkan

Nilai kunci, berorientasikan dokumen, keluarga lajur, grafik, hubungan ... Hari ini kita nampaknya mempunyai banyak jenis pangkalan data kerana terdapat jenis data. Walaupun ini menjadikan pemilihan pangkalan data lebih sukar, menjadikan pemilihan  pangkalan data yang tepat lebih mudah. Sudah tentu, itu memerlukan kerja rumah anda. Anda harus mengetahui pangkalan data anda. 

Salah satu jenis pangkalan data yang paling kurang difahami adalah pangkalan data grafik. Direka untuk bekerja dengan data yang sangat saling berkaitan, pangkalan data grafik mungkin digambarkan sebagai lebih "relasional" daripada pangkalan data relasional. Pangkalan data grafik bersinar ketika tujuannya adalah untuk menangkap hubungan yang rumit dalam rangkaian maklumat yang luas. 

Berikut adalah gambaran lebih mendalam tentang apa pangkalan data grafik, mengapa ia tidak seperti pangkalan data lain, dan jenis masalah data apa yang dibina untuk diselesaikan.

Pangkalan data grafik berbanding pangkalan data hubungan

Dalam pangkalan data relasional atau SQL tradisional, data disusun dalam jadual. Setiap jadual mencatat data dalam format tertentu dengan jumlah lajur yang tetap, setiap lajur dengan jenis data sendiri (bilangan bulat, waktu / tarikh, teks bentuk bebas, dll.).

Model ini berfungsi paling baik semasa anda berurusan dengan data dari mana-mana satu jadual. Ia juga tidak berfungsi dengan teruk ketika anda mengumpulkan data yang disimpan di pelbagai jadual. Tetapi tingkah laku itu mempunyai had yang ketara.

Pertimbangkan pangkalan data muzik, dengan album, band, label, dan pemain. Jika anda mahu melaporkan semua penghibur yang dipaparkan di ini album oleh yang band dikeluarkan pada ini label empat yang berbeza jadual-anda perlu jelas menggambarkan hubungan tersebut. Dengan pangkalan data hubungan, anda dapat melakukannya dengan lajur data baru (untuk hubungan satu-ke-satu atau hubungan satu-ke-banyak), atau jadual baru (untuk hubungan banyak-ke-banyak).

Ini praktikal selagi anda menguruskan hubungan yang sederhana. Sekiranya anda berurusan dengan berjuta-juta atau bahkan berbilion hubungan - rakan rakan rakan, contohnya - pertanyaan itu tidak sesuai.

Ringkasnya, jika  hubungan antara data , bukan data itu sendiri, menjadi perhatian utama Anda, maka jenis pangkalan data yang berbeza - pangkalan data grafik - sesuai.

Ciri pangkalan data grafik

Istilah "grafik" berasal dari penggunaan kata dalam matematik. Di sana ia digunakan untuk menggambarkan kumpulan nod (atau bucu ), masing-masing mengandungi maklumat ( sifat ), dan dengan hubungan berlabel (atau tepi ) antara nod.

Rangkaian sosial adalah contoh grafik yang baik. Orang-orang dalam rangkaian akan menjadi simpul, sifat setiap orang (seperti nama, usia, dan sebagainya) adalah sifat, dan garis yang menghubungkan orang-orang (dengan label seperti "rakan" atau "ibu" atau " penyelia ”) akan menunjukkan hubungan mereka. 

Dalam pangkalan data konvensional, pertanyaan mengenai hubungan memerlukan masa yang lama untuk diproses. Ini kerana hubungan dilaksanakan dengan kunci asing dan disoal dengan menggabungkan jadual. Seperti yang diberitahu oleh SQL DBA, melakukan penyertaan adalah mahal, terutamanya apabila anda mesti menyusun banyak objek - atau, lebih buruk lagi, apabila anda mesti bergabung dengan beberapa jadual untuk melakukan pertanyaan tidak langsung (misalnya "rakan rakan") bahawa pangkalan data grafik cemerlang di. 

Pangkalan data grafik berfungsi dengan menyimpan  hubungan bersama dengan data. Oleh kerana nod yang berkaitan secara fizikal dihubungkan dalam pangkalan data, mengakses hubungan tersebut secepat mengakses data itu sendiri. Dengan kata lain, bukannya mengira hubungan seperti pangkalan data relasional, pangkalan data grafik hanya membaca hubungan dari penyimpanan. Memenuhi pertanyaan adalah mudah untuk berjalan, atau "melintasi", grafik.  

Pangkalan data grafik tidak hanya menyimpan hubungan antara objek dengan cara yang asli, membuat pertanyaan mengenai hubungan dengan cepat dan mudah, tetapi membolehkan anda memasukkan pelbagai jenis objek dan pelbagai jenis hubungan dalam grafik. Seperti pangkalan data NoSQL yang lain, pangkalan data grafik tidak mempunyai skema. Oleh itu, dari segi prestasi dan fleksibiliti, pangkalan data grafik lebih dekat dengan pangkalan data dokumen atau kedai nilai utama daripada pangkalan data relasional atau berorientasikan jadual.

Kes penggunaan pangkalan data grafik

Pangkalan data grafik berfungsi paling baik apabila data yang anda gunakan sangat berhubung dan harus ditunjukkan dengan cara ia menghubungkan atau merujuk kepada data lain , biasanya melalui hubungan banyak-ke-banyak.

Sekali lagi, rangkaian sosial adalah contoh yang berguna. Pangkalan data grafik mengurangkan jumlah kerja yang diperlukan untuk membina dan memaparkan paparan data yang terdapat di rangkaian sosial, seperti suapan aktiviti, atau menentukan sama ada anda mungkin mengenali orang tertentu kerana jaraknya dengan rakan lain yang anda ada dalam rangkaian.

Aplikasi lain untuk pangkalan data grafik adalah mencari corak hubungan dalam data grafik yang sukar untuk digoda melalui perwakilan data lain. Sistem pengesanan penipuan menggunakan pangkalan data grafik untuk menjelaskan hubungan antara entiti yang mungkin sukar untuk diperhatikan. 

Begitu juga, pangkalan data grafik adalah fit untuk aplikasi yang menguruskan hubungan atau saling bergantung antara entiti. Anda sering akan menemui pangkalan data grafik di belakang enjin cadangan, sistem pengurusan kandungan dan aset, sistem pengurusan identiti dan akses, dan penyelesaian pematuhan peraturan dan pengurusan risiko. 

Pertanyaan pangkalan data grafik

Pangkalan data grafik - seperti pangkalan data NoSQL yang lain - biasanya menggunakan metodologi pertanyaan tersendiri dan bukan SQL.

Salah satu bahasa pertanyaan grafik yang biasa digunakan ialah Cypher, yang pada asalnya dikembangkan untuk pangkalan data grafik Neo4j. Sejak akhir 2015 Cypher telah dikembangkan sebagai projek sumber terbuka yang berasingan, dan sebilangan vendor lain telah menggunakannya sebagai sistem pertanyaan untuk produk mereka (contohnya, SAP HANA).

Berikut adalah contoh pertanyaan Cypher yang mengembalikan hasil carian untuk semua orang yang merupakan rakan Scott:

PERTANDINGAN (a: Orang {nama: 'Scott'}) - [: FRIENDOF] -> (b) KEMBALI b 

Simbol anak panah ( ->) digunakan dalam pertanyaan Cypher untuk mewakili hubungan terarah dalam grafik.

Bahasa pertanyaan grafik lain yang biasa, Gremlin, dirancang untuk kerangka pengkomputeran grafik Apache TinkerPop. Sintaks Gremlin serupa dengan yang digunakan oleh pustaka akses pangkalan data ORM beberapa bahasa.

Berikut adalah contoh pertanyaan "rakan-rakan Scott" di Gremlin:

gV (). mempunyai ("name", "Scott"). keluar ("friendof") 

Banyak pangkalan data grafik mempunyai sokongan untuk Gremlin melalui perpustakaan, baik yang terbina dalam atau pihak ketiga.

Bahasa pertanyaan lain ialah SPARQL. Ia pada asalnya dikembangkan oleh W3C untuk meminta data yang disimpan dalam format Resource Description Framework (RDF) untuk metadata. Dengan kata lain, SPARQL tidak dirancang untuk pencarian pangkalan data grafik, tetapi dapat digunakan untuk mereka. Secara keseluruhan, Cypher dan Gremlin telah diterima pakai secara lebih luas.

Pertanyaan SPARQL mempunyai beberapa elemen yang mengingatkan SQL, iaitu  SELECTdan WHEREklausa, tetapi sintaks yang lain secara radikal tidak sama. Jangan menganggap SPARQL sama-sama berkaitan dengan SQL, atau untuk masalah pertanyaan grafik yang lain.

Pangkalan data grafik yang popular

Oleh kerana pangkalan data grafik melayani kes penggunaan yang agak khusus, hampir tidak terdapat sebilangan besar daripada mereka seperti pangkalan data hubungan. Di sisi positifnya, ini menjadikan produk yang menonjol lebih mudah dikenali dan dibincangkan.

Neo4j

Neo4j adalah yang paling matang (11 tahun dan dikira) dan terkenal dengan pangkalan data grafik untuk kegunaan umum. Tidak seperti produk pangkalan data grafik sebelumnya, ia tidak menggunakan back-end SQL. Neo4j adalah pangkalan data grafik asli yang direkayasa dari dalam ke luar untuk menyokong struktur grafik yang besar, seperti dalam pertanyaan yang mengembalikan ratusan ribu hubungan dan banyak lagi.

Neo4j terdapat dalam edisi sumber terbuka dan perusahaan percuma, dengan yang terakhir tidak mempunyai sekatan pada ukuran set data (antara ciri lain). Anda juga boleh bereksperimen dengan Neo4j dalam talian dengan menggunakan Kotak Pasirnya, yang merangkumi beberapa contoh dataset untuk latihan.

Lihat ulasan Neo4j untuk maklumat lebih lanjut.

Microsoft Azure Cosmos DB

Pangkalan data awan Azure Cosmos DB adalah projek yang bercita-cita tinggi. Ini bertujuan untuk meniru pelbagai jenis pangkalan data - jadual konvensional, berorientasikan dokumen, keluarga lajur, dan grafik - semuanya melalui satu, perkhidmatan terpadu dengan satu set API yang konsisten.

Untuk itu, pangkalan data grafik adalah salah satu daripada pelbagai mod yang dapat digunakan oleh Cosmos DB. Ia menggunakan bahasa dan API pertanyaan Gremlin untuk pertanyaan jenis grafik, dan menyokong konsol Gremlin yang dibuat untuk Apache TinkerPop sebagai antara muka lain.

Titik penjualan besar Cosmos DB lain adalah bahawa pengindeksan, penskalaan, dan replikasi geo ditangani secara automatik di awan Azure, tanpa ada perubahan pada anda. Masih belum jelas bagaimana arsitektur all-in-one Microsoft mengukur sehingga pangkalan data grafik asli dari segi prestasi, tetapi Cosmos DB pasti menawarkan kombinasi fleksibiliti dan skala yang berguna.

Lihat ulasan Azure Cosmos DB untuk maklumat lebih lanjut.

JanusGraph

JanusGraph dikeluarkan dari projek TitanDB, dan kini berada di bawah pemerintahan Yayasan Linux. Ia menggunakan sebilangan besar hujung belakang yang disokong — Apache Cassandra, Apache HBase, Google Cloud Bigtable, Oracle BerkeleyDB — untuk menyimpan data grafik, menyokong bahasa pertanyaan Gremlin (serta elemen lain dari timbunan Apache TinkerPop), dan juga dapat menggabungkan carian teks penuh melalui projek Apache Solr, Apache Lucene, atau Elasticsearch.

IBM, salah satu penyokong projek JanusGraph, menawarkan versi JanusGraph yang dihoskan di IBM Cloud, yang dipanggil Compose for JanusGraph. Seperti Azure Cosmos DB, Compose untuk JanusGraph menyediakan penskalaan automatik dan ketersediaan tinggi, dengan harga berdasarkan penggunaan sumber.