ON MULTI-MODEL DATABASES. INTERVIEW WITH MARTIN
SCHÖNERT AND FRANK CELLER
1
. Apa ArangoDB dan untuk jenis aplikasi yang dirancang untuk itu .
Frank
Celler : ArangoDB adalah multi - model yang sebagian besar - memori database
dengan model data yang fleksibel untuk dokumen dan grafik . Hal ini dirancang
sebagai " tujuan umum database" , menawarkan semua fitur yang Anda
biasanya perlu untuk aplikasi web modern.
ArangoDB
seharusnya tumbuh dengan aplikasi - proyek dapat dimulai sebagai prototipe
single- server sederhana , tidak ada yang tidak bisa dilakukan dengan database
relasional sama baiknya . Setelah beberapa waktu , beberapa fitur geo - lokasi
yang diperlukan dan keranjang belanja membutuhkan transaksi . Graph model data
ArangoDB adalah berguna untuk sistem rekomendasi . Aplikasi smartphone
membutuhkan API bersandar ke back-end - ini adalah di mana Foxx , terintegrasi
kerangka aplikasi ArangoDB Javascript , datang ke dalam bermain .
Ide keseluruhan adalah
: " Kami ingin mencegah kebuntuan di mana tim dipaksa untuk beralih
teknologi di tengah-tengah proyek karena tidak memenuhi persyaratan lagi .
"
ArangoDB adalah open
source ( Apache 2 lisensi ) - Anda bisa mendapatkan kode sumber di GitHub atau
download binari precompiled dari website kami .
Meskipun ArangoDB
sebagai pendekatan universal, ada kasus di mana tepi kami tidak menyarankan
ArangoDB . Sebenarnya , ArangoDB tidak bersaing dengan sistem terdistribusi
secara besar-besaran seperti Cassandra dengan ribuan node dan banyak terabyte
data .
2
. Apa yang begitu istimewa tentang model data ArangoDB ?
Martin Schönert :
ArangoDB adalah database multi- Model . Yang menyimpan dokumen dalam koleksi .
Sebuah format data file biner khusus digunakan untuk penyimpanan disk. Dokumen
yang memiliki struktur yang mirip (yaitu , yang memiliki nama atribut yang sama
dan jenis atribut ) dapat berbagi informasi struktural mereka. Struktur (
disebut " bentuk " ) disimpan hanya sekali , dan beberapa dokumen
dapat digunakan kembali dengan menyimpan hanya pointer ke " bentuk "
mereka .
Dalam prakteknya , dokumen dalam koleksi cenderung
homogen , dan berbagi data struktur antara beberapa dokumen dapat sangat
mengurangi ruang penyimpanan disk dan penggunaan memori untuk dokumen .
3
. Siapa yang saat ini menggunakan ArangoDB untuk apa ?
Frank Celler : ArangoDB
adalah open source . Anda tidak perlu mendaftar untuk mengunduh kode sumber
atau binari dikompilasi . Sebagai pengguna , Anda bisa mendapatkan dukungan
melalui Google Group, GitHub itu pelacak isu dan bahkan melalui Twitter . Kami
sangat setuju , yang merupakan bagian penting dari proyek tersebut .
Kekurangannya adalah bahwa kita tidak benar-benar tahu apa yang dilakukan orang
dengan ArangoDB secara rinci . Kami menyadari jumlah meningkat secara
eksponensial download selama bulan terakhir .
Kami menyadari berbagai kasus penggunaan : CMS ,
komponen logging kinerja tinggi , alat geo - coding , sistem penjelasan untuk
animasi , hanya untuk beberapa nama . Kasus penggunaan menarik lainnya adalah
aplikasi satu halaman atau aplikasi mobile melalui Foxx , kerangka aplikasi
ArangoDB itu . Banyak pengguna kami telah di- produksi pengalaman dengan
database lain NoSQL , terutama toko dokumen terkemuka.
4
. Bisakah Anda memotivasi keputusan desain Anda untuk menggunakan mesin V8
JavaScript Google ?
Martin Schönert :
ArangoDB menggunakan mesin V8 Google untuk mengeksekusi server-side JavaScript
fungsi . Pengguna dapat menulis logika bisnis server-side JavaScript dan
menyebarkan di dalam ArangoDB . Ini disebut " tindakan " jauh seperti
prosedur yang tersimpan tinggal dekat dengan data .
Sebagai contoh, dengan tindakan yang dimungkinkan
untuk melakukan Cascading menghapus / update , memberikan izin , dan melakukan
perhitungan tambahan dan modifikasi data .
ArangoDB juga memungkinkan pengguna untuk memetakan
URL ke tindakan kustom , sehingga dapat digunakan sebagai server aplikasi yang
menangani permintaan HTTP client dengan user-defined logika bisnis .
Kami memilih untuk Javascript karena memenuhi
persyaratan kami untuk "bahasa tertanam " dalam konteks basis data :
• Javascript banyak digunakan . Terlepas di mana
" back-end language " pengembang web menulis kode mereka , hampir semua
orang dapat kode juga dalam Javascript .
• Javascript efektif dan masih modern.
Sama juga , kami memilih Google V8 , karena
merupakan yang tercepat , paling stabil Javascript interpreter yang tersedia
untuk saat ini .
5
. Bagaimana Anda query ArangoDB jika Anda tidak ingin menggunakan JavaScript ?
Frank Celler : ArangoDB
menawarkan beberapa pilihan untuk mendapatkan data dari database . Memiliki
antarmuka REST untuk operasi CRUD dan juga memungkinkan " query dengan contoh
" . " Query dengan contoh " berarti bahwa Anda membuat dokumen
JSON dengan atribut yang Anda cari. Database mengembalikan semua dokumen yang
terlihat seperti " contoh dokumen " .
Mengekspresikan pertanyaan kompleks sebagai dokumen
JSON dapat menjadi tugas - dan membosankan itu hampir mustahil untuk dukungan
bergabung mengikuti pendekatan ini . Kami ingin - untuk-belajar mudah cara
mudah dan untuk mengeksekusi query bahkan kompleks, tidak melibatkan
program-program seperti dalam pendekatan berdasarkan peta / mengurangi .
Sebagai ArangoDB mendukung beberapa model data termasuk grafik , itu tidak
cukup untuk menempel SQL atau untuk hanya menerapkan UNQL . Kita berakhir
dengan " ArangoDB bahasa query " ( AQL ) , bahasa deklaratif mirip
dengan SQL dan Jsoniq . AQL mendukung bergabung , permintaan grafik , daftar
iterasi , hasil penyaringan , hasil proyeksi , menyortir , variabel ,
pengelompokan , fungsi agregat , serikat pekerja , dan persimpangan .
Tentu saja, ArangoDB juga menawarkan driver untuk
semua bahasa pemrograman utama . Driver membungkus opsi query yang disebutkan
berikut ini paradigma bahasa pemrograman dan / atau kerangka seperti Ruby on
Rails .
6
. Bagaimana Anda melakukan query grafik ? Bagaimana hal ini berbeda dari sistem
seperti Neo4j ?
Frank Celler : SQL tidak dapat mengatasi dengan
semantik yang diperlukan untuk mengekspresikan hubungan antara node graph ,
sehingga database grafik harus menyediakan cara lain untuk mengakses data.
Opsi pertama adalah untuk menulis program kecil ,
yang disebut " traversals jalan . " Di ArangoDB , Anda menggunakan
Javascript , dalam Neo4j Jawa , pendekatan umum sangat mirip .
Pemrograman memberikan Anda semua kebebasan untuk
melakukan apa pun yang datang ke pikiran Anda . Itu bagus . Untuk kasus
penggunaan standar , pemrograman mungkin terlalu banyak usaha . Jadi , baik
ArangoDB dan Neo4j menawarkan deklaratif bahasa Neo4j memiliki " Cypher ,
" ArangoDB yang " ArangoDB Query Language . " Keduanya juga
menerapkan cetak biru standar sehingga Anda dapat menggunakan " Gremlin
" query - bahasa dalam Java . Kita sudah menyebutkan bahwa ArangoDB adalah
database multi- Model : AQL mencakup dokumen dan grafik , menyediakan dukungan
untuk bergabung , daftar , variabel , dan tidak banyak lagi.
Contoh berikut ini diambil dari situs Neo4j :
" Sebagai contoh , di sini adalah permintaan
yang menemukan user bernama John dalam indeks dan kemudian melintasi grafik
mencari teman dari teman John (meskipun bukan teman langsungnya ) sebelum
kembali baik John dan teman-teman teman - dari - yang ditemukan .
MULAI john = simpul : node_auto_index ( name = '
John ' )
MATCH john - [ : teman ] - > ( ) - [ : teman ] -
> fof
RETURN john , fof "
Permintaan yang sama terlihat di AQL seperti ini :
UNTUK t IN Traversal ( pengguna , teman-teman ,
" pengguna / john " , " outbound" ,
{ minDepth : 2 } ) RETURN t.vertex._key
Hasilnya adalah :
[ " Maria " , " steve " ]
Anda melihat bahwa Cypher menggambarkan pola
sementara AQL menjelaskan bergabung . Secara internal , ArangoDB memiliki
perpustakaan grafik fungsi - fungsi-fungsi mengembalikan koleksi jalan dan
jalan atau menggunakan koleksi mereka dalam bergabung .
7
. Bagaimana Anda merancang ArangoDB untuk skala dan / atau meningkatkan ?
Tolong beri kami beberapa detail .
Martin Schönert : disk
solid state menjadi lebih dan lebih keras komoditas . Append -only desain
ArangoDB adalah cocok untuk SSD tersebut , memungkinkan untuk data set yang
jauh lebih besar daripada memori utama tetapi masih fit kepada disk solid state
.
ArangoDB mendukung replikasi master / slave di versi
1.4 yang akan dirilis pada hari-hari berikutnya ( beta telah tersedia untuk
beberapa waktu ) . Di satu sisi ini menyediakan mudah fail-over setup . Di sisi
lain ia menyediakan cara sederhana untuk skala membaca kinerja.
Sharding diimplementasikan dalam versi 2.0 . Hal ini
memungkinkan Anda untuk menyimpan lebih besar data-set dan meningkatkan menulis
kinerja. Seperti disebutkan sebelumnya , namun, kami melihat aplikasi utama
kami ketika skala untuk rendahnya jumlah node . Kami tidak berencana untuk
mengoptimalkan ArangoDB untuk skala besar dengan ratusan node . Plain toko
kunci / nilai yang jauh lebih bermanfaat dalam skenario tersebut.
8
. Apa pembaruan ArangoDB dan strategi menghapus?
Martin Schönert :
ArangoDB versi sebelum 1.3 toko semua revisi dokumen dalam mode append -only ,
obyek akan pernah ditimpa . Versi terbaru dari dokumen ini tersedia untuk
pengguna akhir .
Dengan saat ini versi
1.3 , ArangoDB memperkenalkan transaksi dan menetapkan pondasi teknis untuk
replikasi dan sharding . Dalam perjalanan mereka fitur yang sangat ingin datang
" nyata" MVCC dengan bersamaan menulis .
Dalam database
menerapkan strategi append -only, versi usang dokumen harus dihapus untuk
menghemat ruang . Seperti kita telah disebutkan , ArangoDB adalah
multi-threaded : Yang disebut pemadatan dilakukan secara otomatis di latar
belakang di thread yang berbeda tanpa blocking membaca dan menulis .
9
. Bagaimana ArangoDB berbeda dari menyimpan data NoSQL lain seperti Couchbase
dan MongoDB dan menyimpan data grafik seperti Neo4j , untuk beberapa nama ?
Frank Celler : lingkup
fitur ArangoDB yang didorong oleh ide untuk memberikan segala sesuatu
pengembang yang dia butuhkan untuk menguasai tugas-tugas khas dalam aplikasi
web - dengan cara yang nyaman dan secara teknis canggih sama.
Dari sudut pandang kami itu adalah kombinasi fitur
dan kualitas produk yang menyumbang ArangoDB : ArangoDB tidak hanya menangani
dokumen tetapi juga grafik .
ArangoDB adalah extensible melalui Javascript dan
Ruby . Terlampir dengan ArangoDB Anda mendapatkan " Foxx " . Foxx
adalah kerangka aplikasi yang ideal terpadu untuk lean back- berakhir dan
halaman Javascript aplikasi ( SPA ) .
Transaksi multi - koleksi berguna tidak hanya untuk
online banking dan e -commerce tetapi mereka menjadi penting dalam setiap
aplikasi web dalam arsitektur terdistribusi . Di sini sekali lagi , kami
menawarkan para pengembang banyak pilihan . Jika transaksi yang diperlukan ,
pengembang dapat menggunakannya .
Jika , di sisi lain , masalah membutuhkan kinerja
yang lebih tinggi dan kurang transaksi - aman , pengembang bebas untuk
mengabaikan transaksi multi- koleksi dan menggunakan standar transaksi single-
dokumen yang dilaksanakan oleh sebagian besar database NoSQL .
Fitur lain yang unik adalah bahasa query ArangoDB
yang AQL - itu membuat query kuat dan nyaman . Untuk pertanyaan sederhana ,
kami menawarkan sederhana permintaan - by- contoh antarmuka . Kemudian lagi ,
AQL memungkinkan Anda untuk menggambarkan kondisi filter yang kompleks dan
bergabung dalam format yang mudah dibaca .
10
. Bisakah Anda merangkum hasil utama tes benchmarking Anda?
Frank Celler : Mengutip
Jan Lenhardt dari CouchDB : " NoSQL bukan tentang kinerja , skala ,
menjatuhkan ACID atau membenci SQL - ini adalah tentang pilihan . Sebagai
database NoSQL agak berbeda itu tidak membantu banyak untuk membandingkan
database dengan throughput yang mereka dan memilih satu yang berpuasa .
Sebaliknya - pengguna harus hati-hati berpikir tentang persyaratan keseluruhan
dan berat aspek yang berbeda . Massively scalable toko kunci / nilai atau
memori - satunya sistem [ s ] dapat arsip benchmark jauh lebih tinggi . Tapi
tujuan Anda adalah [ untuk ] menyediakan sistem yang jauh lebih nyaman untuk
berbagai luas penggunaan - kasus - yang cukup cepat untuk hampir semua kasus .
"
Lagi pula , kami telah melakukan banyak tes kinerja
dan lebih dari senang dengan hasilnya. ArangoDB 1.3 sisipan hingga 140.000
dokumen per detik . Kita akan mempublikasikan seluruh test suite termasuk
runner tes segera , sehingga semua orang dapat mencobanya pada hardware sendiri
.
Kami juga telah menguji penggunaan ruang : Menyimpan
3,5 juta AQL permintaan pencarian memakan waktu sekitar 200 MB di MongoDB
dengan pra - alokasi dibandingkan dengan 55 MB di ArangoDB . Ini adalah Manfaat
dari penerapan konsep bentuk .
11
. ArangoDB adalah open source . Bagaimana Anda memotivasi dan melibatkan
komunitas pengembangan open source untuk berkontribusi pada proyek Anda
daripada open source lainnya NoSQL ?
Frank Celler : Jujur :
Para kontributor datang atas kemauan sendiri dan sampai sekarang kita tidak
harus " mendorong " pihak yang berkepentingan . Jelas, ArangoDB cukup
menarik , meskipun ada lebih dari 150 database NoSQL tersedia untuk dipilih .
Semuanya berawal ketika Ruby penemu Yukihiro "
Matz " Matsumoto tweeted pada ArangoDB dan direkomendasikan kepada
masyarakat . Setelah tweet ini , pertama basis penggemar lokal ArangoDB yang
didirikan di Jepang - dan kami belajar banyak tentang batas-batas terjemahan
otomatis dari tweet Jepang ke Bahasa Inggris dan sebaliknya ;-) .
Dalam sehari-hari "bekerja " dengan
komunitas kami , kami mencoba untuk menjadi seperti terbuka dan mendukung
mungkin. Para pengembang inti berkomunikasi secara langsung dan dalam waktu
respon pendek dengan orang yang memiliki ide-ide atau membutuhkan bantuan
melalui Google Groups atau GitHub . Kami mengurus masyarakat , terutama untuk
kontributor , di mana kita membahas fitur masa depan dan menginformasikan
tentang perubahan yang akan datang lebih awal sehingga kontributor API dapat
menjaga implementasi mereka up to date.
----------
Hasil
Review
Dari banyak ide mewah di ArangoDB . Sebagai kepala
arsitek dia bertanggung jawab untuk arsitektur keseluruhan sistem , membawa
pengalamannya dari lebih dari 20 tahun di bidang TI sebagai pengembang ,
arsitek , manajer proyek dan pengusaha .
Martin memulai karirnya sebagai ilmuwan di
universitas teknis Aachen setelah mendapatkan gelar di bidang Matematika .
Kemudian ia bekerja sebagai kepala pengembangan produk ( TEAM4 Systemhaus ) ,
Direktur IT ( OnVista Technologies) dan kepala divisi di Deutsche Post .
Martin telah bekerja sama dengan relasional dan non
- hubungan database ( misalnya panas terik cinta-benci relationsship dengan
kakek dari semua database non - relasional : Lotus Notes ) untuk bagian
terbesar dari kehidupan profesionalnya .
Ketika ada database melakukan apa yang ia butuhkan
ia juga menulis sendiri , satu untuk tingkat update yang sangat tinggi dan yang
lainnya untuk caching didistribusikan .
Frank adalah baik pengusaha dan pengembang backend ,
berkembang sebagian besar database memori selama dua dekade . Dia adalah
pengembang utama ArangoDB dan co - pendiri triAGENS . Selain Frank
menyelenggarakan Cologne kelompok pengguna NoSQL , konferensi NoSQL dan
berbicara di konferensi pengembang .
Frank belajar di Aachen dan London dan menerima PHD
di Matematika . Sebelum mendirikan triAGENS , perusahaan di balik ArangoDB , ia
bekerja untuk beberapa perusahaan teknologi Jerman sebagai konsultan , memimpin
tim dan pengembang .
Fokus teknisnya adalah C dan C + + , baru-baru ini
ia mendapatkan beberapa pengalaman dengan Ruby ketika mengintegrasikan Mruby ke
ArangoDB