TigerGraph: Pangkalan data grafik selari dijelaskan

Victor Lee adalah pengarah pengurusan produk di TigerGraph.

Pangkalan data grafik unggul dalam menjawab soalan kompleks mengenai hubungan dalam kumpulan data yang besar. Tetapi mereka mencapai tembok — dari segi prestasi dan kemampuan analisis — ketika jumlah data bertambah besar, dan ketika jawapan mesti diberikan dalam masa nyata.

Ini kerana teknologi grafik yang ada menghadapi masalah memuat sejumlah besar data, atau mengambil data yang tiba cepat, dalam masa nyata. Mereka juga berjuang untuk memberikan kelajuan pantas. Walaupun analitik yang lebih mendalam memerlukan penyebaran grafik yang lebih dalam, pangkalan data grafik hari ini biasanya melambatkan atau habis selepas dua helah melintasi.

TigerGraph adalah platform pengkomputeran grafik asli yang diedarkan yang direka untuk mengatasi had ini. Senibina grafik selari asli TigerGraph dan analitik pautan dalam masa nyata bertujuan untuk memberikan kelebihan berikut:

  • Pemuatan data lebih cepat untuk membina grafik dengan cepat
  • Pelaksanaan algoritma graf selari yang lebih pantas
  • Keupayaan masa nyata untuk streaming kemas kini dan sisipan menggunakan REST
  • Keupayaan untuk menyatukan analisis masa nyata dengan pemprosesan data luar talian berskala besar
  • Keupayaan untuk meningkatkan dan meningkatkan aplikasi yang diedarkan

Pada bahagian yang berikut, kami akan melihat ringkas bagaimana pemprosesan grafik berfungsi, meneroka faedah analitik pautan dalam, dan meningkatkan pengetahuan tentang TigerGraph untuk memahami bagaimana ia dapat memberikan analisis pautan dalam dalam masa nyata.  

Melintasi grafik: Lebih banyak perjalanan, lebih banyak pandangan

Mengapa analisis pautan dalam? Kerana semakin banyak pautan yang anda dapat melintasi (hop) dalam grafik, semakin besar pandangan yang anda capai. Pertimbangkan grafik pengetahuan dan sosial hibrid. Setiap simpul menghubungkan dengan apa yang anda tahu dan siapa yang anda kenal. Pautan langsung (satu hop) mendedahkan apa yang anda tahu. Dua hop menunjukkan semua yang diketahui oleh rakan dan kenalan anda. Tiga hop? Anda akan mendedahkan apa yang diketahui oleh semua orang .

Kelebihan grafik adalah mengetahui hubungan antara entiti data dalam kumpulan data, yang merupakan inti penemuan pengetahuan, pemodelan, dan ramalan. Setiap hop dapat menyebabkan pertumbuhan eksponensial dalam jumlah sambungan dan, dengan demikian, dalam jumlah pengetahuan. Tetapi di dalamnya terdapat rintangan teknologi. Hanya sistem yang melakukan hop dengan cekap dan selari yang dapat memberikan analisis pautan dalam (multi-hop) masa nyata.

Contoh mudah seperti cadangan peribadi masa nyata menunjukkan nilai dan kekuatan mengikuti beberapa pautan dalam grafik:

"Pelanggan yang menyukai apa yang anda suka juga membeli barang-barang ini."

Ini diterjemahkan menjadi pertanyaan tiga hop:

  1. Bermula dari seseorang (anda), kenal pasti item yang anda lihat / sukai / beli.
  2. Kedua, cari orang lain yang telah melihat / menyukai / membeli barang tersebut.
  3. Ketiga, kenal pasti barang tambahan yang dibeli oleh orang-orang tersebut.

Orang → produk → (lain) orang → (lain) produk

Dengan menggunakan teknologi grafik sebelumnya, anda hanya terhad kepada dua hop dalam set data yang lebih besar. TigerGraph memperluas pertanyaan dengan mudah kepada tiga atau lebih hop untuk menyampaikan pandangan utama dari dalam set data yang sangat besar.

Analisis pautan dalam masa nyata TigerGraph

TigerGraph menyokong tiga hingga lebih dari 10 lintasan melintasi graf besar, bersama dengan kelajuan melintasi grafik pantas dan kemas kini data. Kombinasi kelajuan, lintasan dalam, dan skalabiliti ini menawarkan kelebihan besar untuk beberapa kes penggunaan.

Satu kes penggunaan adalah pencegahan penipuan. Salah satu cara perniagaan mengesan kemungkinan penipuan adalah mencari hubungan dengan transaksi buruk yang diketahui. Sebagai contoh, bermula dari transaksi kad kredit yang masuk, berikut adalah salah satu jalan menuju transaksi buruk:

Transaksi baru → kad kredit → pemegang kad → (lain) kad kredit → (lain) urus niaga buruk

Sebagai pertanyaan grafik, corak ini menggunakan empat hops untuk mencari sambungan hanya satu kad dari transaksi masuk. Penipu hari ini cuba menyamarkan aktiviti mereka melalui hubungan litar antara mereka dan aktiviti buruk atau pelakon buruk yang diketahui. Untuk mengesan penipuan dengan tepat, anda perlu meneroka pelbagai kemungkinan corak dan mengumpulkan pandangan yang lebih holistik.

Dengan kemampuan untuk mengungkap banyak sambungan tersembunyi, TigerGraph dapat meminimumkan penipuan kad kredit. Corak melintasi ini berlaku untuk banyak kasus penggunaan lain — di mana Anda hanya dapat mengganti transaksi kad kredit dengan peristiwa klik web, catatan panggilan telefon, atau transfer uang.

Gambaran keseluruhan sistem TigerGraph

Keupayaan untuk membuat hubungan yang mendalam antara entiti data dalam masa nyata memerlukan teknologi baru yang dirancang untuk skala dan prestasi. Terdapat banyak keputusan reka bentuk yang bekerja sama untuk mencapai kejayaan dan skalabiliti terobosan TigerGraph. Di bawah ini kita akan melihat ciri reka bentuk ini dan membincangkan bagaimana ia berfungsi bersama.

Graf asli

TigerGraph adalah pangkalan data grafik tulen, dari bawah ke atas. Kedai datanya menyimpan node, pautan, dan atributnya, noktah. Beberapa produk pangkalan data grafik di pasaran adalah pembungkus yang dibina di atas kedai data NoSQL yang lebih generik. Strategi grafik maya ini mempunyai penalti dua kali dalam hal prestasi. Pertama, terjemahan dari operasi grafik maya ke operasi penyimpanan fizikal memperkenalkan beberapa kerja tambahan. Kedua, struktur yang mendasari tidak dioptimumkan untuk operasi grafik.

Storan padat dengan akses pantas

Kami tidak menggambarkan TigerGraph sebagai pangkalan data dalam memori, kerana mempunyai data dalam memori adalah pilihan tetapi bukan syarat. Pengguna dapat menetapkan parameter yang menentukan berapa banyak memori yang ada dapat digunakan untuk menahan grafik. Sekiranya graf penuh tidak sesuai dengan memori, maka lebihan disimpan pada cakera. Prestasi terbaik dicapai apabila graf penuh sesuai dengan memori, tentu saja. 

Nilai data disimpan dalam format yang dikodkan yang memampatkan data dengan berkesan. Faktor mampatan berbeza dengan struktur grafik dan data, tetapi faktor mampatan khas antara 2x dan 10x. Pemampatan mempunyai dua kelebihan: Pertama, jumlah data grafik yang lebih besar dapat dimasukkan ke dalam memori dan dalam cache. Mampatan sedemikian mengurangkan bukan sahaja jejak memori, tetapi juga kehilangan cache CPU, mempercepat keseluruhan prestasi pertanyaan. Kedua, bagi pengguna dengan grafik yang sangat besar, kos perkakasan dikurangkan. Sebagai contoh, jika faktor pemampatan adalah 4x, organisasi mungkin dapat memasukkan semua datanya dalam satu mesin dan bukan empat.

Penyahmampatan / penyahkodan sangat cepat dan telus bagi pengguna akhir, jadi manfaat pemampatan melebihi kelewatan masa kecil untuk pemampatan / penyahmampatan. Secara umum, penyahmampatan diperlukan hanya untuk memaparkan data. Apabila nilai digunakan secara dalaman, selalunya nilai tersebut tetap dikod dan dimampatkan.

Indeks Hash digunakan untuk merujuk nod dan pautan. Dalam istilah Big-O, purata masa akses kami adalah O (1) dan rata-rata masa kemas kini indeks kami juga O (1). Terjemahan: mengakses nod atau pautan tertentu dalam grafik sangat pantas, dan tetap pantas walaupun grafik bertambah besar. Lebih-lebih lagi, mengekalkan indeks sebagai nod dan pautan baru yang ditambahkan ke grafik juga sangat cepat.

Paralelisme dan nilai bersama

Apabila kepantasan adalah tujuan anda, anda mempunyai dua laluan asas: Lakukan setiap tugas dengan lebih cepat, atau lakukan beberapa tugas sekaligus. Jalan terakhir adalah paralelisme. Walaupun berusaha untuk melakukan setiap tugas dengan cepat, TigerGraph juga unggul dalam paralelisme. Mesin grafiknya menggunakan pelbagai utas pelaksanaan untuk melintasi graf.

Sifat pertanyaan grafik adalah "mengikuti pautan". Mulakan dari satu atau lebih nod. Lihat sambungan yang ada dari nod tersebut dan ikuti sambungan tersebut ke beberapa atau semua nod yang berdekatan. Kami mengatakan bahawa anda baru saja "melintasi" satu "hop". Ulangi proses itu untuk pergi ke jiran tetangga simpul asal, dan anda telah melalui dua hop. Oleh kerana setiap nod boleh mempunyai banyak sambungan, traversal dua-hop ini melibatkan banyak jalan untuk menuju dari simpul permulaan ke nod tujuan. Grafik sesuai untuk pelaksanaan selari dan multithreaded.

Pertanyaan tentu harus lebih daripada sekadar mengunjungi simpul. Dalam kes mudah, kita boleh mengira bilangan jiran dua hop unik atau membuat senarai ID mereka. Bagaimana seseorang mengira jumlah kiraan, apabila anda mempunyai beberapa pembilang selari? Prosesnya serupa dengan apa yang anda akan lakukan di dunia nyata: Minta setiap kaunter untuk melakukan bahagiannya di dunia, dan kemudian gabungkan hasilnya pada akhirnya.

Ingat bahawa pertanyaan meminta bilangan nod unik . Ada kemungkinan simpul yang sama telah dihitung oleh dua pembilang yang berbeza, kerana terdapat lebih dari satu jalan untuk mencapai tujuan tersebut. Masalah ini boleh berlaku walaupun dengan rekaan utas tunggal. Penyelesaian standard adalah dengan menetapkan pemboleh ubah sementara ke setiap nod. Pemboleh ubah diinisialisasi menjadi Salah. Apabila satu kaunter mengunjungi nod, pemboleh ubah nod ditetapkan ke True, supaya pembilang lain tahu untuk tidak mengira.

Enjin penyimpanan dan pemprosesan ditulis dalam C ++

Pilihan bahasa juga mempengaruhi prestasi. Mesin penyimpanan grafik dan mesin pemprosesan TigerGraph dilaksanakan di C ++. Dalam keluarga bahasa prosedur tujuan umum, C dan C ++ dianggap peringkat lebih rendah dibandingkan dengan bahasa lain seperti Java. Ini bermaksud bahawa pengaturcara yang memahami bagaimana perkakasan komputer melaksanakan perintah perisian mereka dapat membuat pilihan yang tepat untuk mengoptimumkan prestasi. TigerGraph telah dirancang dengan teliti untuk menggunakan memori dengan cekap dan melepaskan memori yang tidak digunakan. Pengurusan memori yang teliti menyumbang kepada kemampuan TigerGraph untuk melintasi banyak pautan, baik dari segi kedalaman dan luasnya, dalam satu pertanyaan.

Banyak produk pangkalan data grafik ditulis dalam Java, yang mempunyai kelebihan dan kekurangan. Program Java dijalankan di dalam Java Virtual Machine (JVM). JVM mengurus pengurusan memori dan pengumpulan sampah (membebaskan memori yang tidak diperlukan lagi). Walaupun ini mudah, sukar bagi pengaturcara untuk mengoptimumkan penggunaan memori atau untuk mengawal bila memori yang tidak digunakan tersedia.

Bahasa pertanyaan grafik GSQL

TigerGraph juga mempunyai grafik pertanyaan dan bahasa kemas kini sendiri, GSQL. Walaupun terdapat banyak perincian yang bagus tentang GSQL, saya akan memberi tumpuan kepada dua aspek yang penting untuk menyokong pengiraan selari yang cekap: klausa ACCUM dan pemboleh ubah penumpuk.

Inti kebanyakan pertanyaan GSQL adalah pernyataan SELECT, dimodelkan dengan teliti setelah pernyataan SELECT di SQL. Klausa PILIH, DARI, dan DI MANA digunakan untuk memilih dan menyaring sekumpulan pautan atau nod. Selepas pemilihan ini, klausa ACCUM pilihan boleh digunakan untuk menentukan sekumpulan tindakan yang akan dilakukan oleh setiap pautan atau simpul bersebelahan. Saya katakan "perform by" dan bukannya "perform on" kerana secara konseptual, setiap objek grafik adalah unit pengiraan bebas. Struktur grafik bertindak seperti jaring pengiraan selari secara besar-besaran. Grafik bukan hanya simpanan data anda; ini juga enjin pertanyaan atau analitik anda.

Klausa ACCUM mungkin mengandungi banyak tindakan atau pernyataan yang berbeza. Pernyataan ini dapat membaca nilai dari objek grafik, melakukan pengiraan tempatan, menerapkan pernyataan bersyarat, dan menjadualkan kemas kini grafik. (Kemas kini tidak berlaku sehingga pertanyaan selesai.)

Untuk menyokong pengiraan yang tersebar, dalam-pertanyaan ini, bahasa GSQL menyediakan pemboleh ubah penumpuk. Akumulator terdapat dalam banyak rasa, tetapi semuanya bersifat sementara (hanya ada semasa pelaksanaan pertanyaan), dibagikan (tersedia untuk mana-mana utas pelaksanaan), dan saling eksklusif (hanya satu utas yang dapat memperbaruinya pada satu masa). Contohnya, penumpuk jumlah sederhana akan digunakan untuk melakukan kiraan semua jiran tetangga yang disebutkan di atas. Satu set akumulator akan digunakan untuk merakam ID semua jiran tetangga tersebut. Akumulator tersedia dalam dua ruang lingkup: global dan per-node. Dalam contoh pertanyaan sebelumnya, kami menyebutkan perlunya menandakan setiap nod sebagai dikunjungi atau tidak. Di sini, penumpuk setiap nod akan digunakan.

Model pengiraan MPP

Untuk mengulangi apa yang telah kami nyatakan di atas, grafik TigerGraph adalah model penyimpanan dan model komputasi. Setiap nod dan pautan boleh dikaitkan dengan fungsi komputasi. Oleh itu, TigerGraph bertindak sebagai unit penyimpanan dan pengiraan selari secara serentak. Ini tidak dapat dicapai dengan menggunakan penyimpanan data NoSQL generik atau tanpa penggunaan akumulator.

Pembahagian automatik

Dalam dunia data besar sekarang ini, perusahaan memerlukan penyelesaian pangkalan data mereka untuk dapat menggunakan beberapa mesin, kerana data mereka mungkin tumbuh terlalu besar untuk disimpan secara ekonomi pada satu pelayan. TigerGraph dirancang untuk secara automatik mempartisi data grafik di sekumpulan pelayan, dan masih berfungsi dengan cepat. Indeks hash digunakan untuk menentukan bukan hanya lokasi data pelayan tetapi juga pelayan mana. Semua pautan yang bersambung dari nod tertentu disimpan di pelayan yang sama. Teori sains komputer memberitahu kita bahawa mencari partisi grafik keseluruhan yang terbaik, jika kita dapat menentukan "terbaik" biasanya sangat lambat, jadi kita tidak mencuba. Mod lalai kami adalah menggunakan hashing rawak, yang berfungsi dengan baik dalam kebanyakan kes. Sistem TigerGraph juga menyokong partition yang diarahkan pengguna untuk pengguna yang mempunyai skema partition tertentu.

Mod pengiraan diedarkan