Jumat, 27 Desember 2013

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

1 komentar :

  1. Kunjungan siang Sob..
    Visit balik ya.. http://impages.blogspot.com/

    BalasHapus