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

Jumat, 13 Desember 2013

Pada kesempatan ini kita akan membahas tentang bagaimana cara memanajemen bandwidth dengan simple queue pada mikrotik.
Pada sebuah jaringan yang mempunyai banyak client, diperlukan sebuah mekanisme pengaturan bandwidth dengan tujuan mencegah terjadinya monopoli penggunaan bandwidth sehingga semua client bisa mendapatkan jatah bandwidth masing-masing. QOS(Quality of services) atau lebih dikenal dengan Bandwidth Manajemen, merupakan metode yang digunakan untuk memenuhi kebutuhan tersebut.
Pada RouterOS Mikrotik penerapan QoS bisa dilakukan dengan fungsi Queue.
Metode Pembagian Bandwidth Share
Selain digunakan untuk melakukan manajemen bandwidth fix seperti pada contoh sebelumnya, kita juga bisa memanfaatkan Simple Queue untuk melakukan pengaturan bandwidth share dengan menerapkan Limitasi Bertingkat.

Contoh :
Kita akan melakukan pengaturan bandwidth sebesar 512kbps untuk digunakan 3 client.
Konsep: 
  1. Dalam keadaan semua client melakukan akses, maka masing-masing client akan mendapat bandwidth minimal 128kbps.
  2. Jika hanya ada 1 Client yang melakukan akses, maka client tersebut bisa mendapatkan bandwidth hingga 512kbps.
  3. Jika terdapat beberapa Client (tidak semua client) melakukan akses, maka bandwidth yang tersedia akan dibagi rata ke sejumlah client yg aktif.
Topologi Jaringan
Langkah-langkah manajemen bandwidth dengan simple queue sebagai berikut :
1. Pastikan kita sudah login ke winbox (bila belum login maka buka winbox kemudian login).
2. Klik pada menu Queues maka akan tampil berupa tampilan berikut ini :
Manajemen Bandwidth dengan Simple Queue
3. Apabila kita akan menambahkan queues baru maka klik add (+) dan kemudian akan masuk pada kotak dialog “New Simple Queue”.
Manajemen Bandwidth dengan Simple Queue
Pada Name dapat isi terserah sesuai dengan kebutuhan. Kemudian pada Target Address bisa diisi dengan IP yang akan ditembak, bisa satu IP dengan komputer yg sedang dipakai.
Pada bagian Burst, Max limit (Target Upload dan Target Download) dapat isi sesuai dengan keiinginan. Misal, diisi dengan 256 Kbps maka yang didapat oleh client juga sebesar itu pula.
Note : Burst dapat tembus hingga 512 Kbps (Burst Limit) dengan syarat tidak download apapun hingga 192 Kbps (Burst Threshold) dalam waktu 8 second (Burst Time).
Kemudian Klik Apply dan Klik OK.
Dalam kasus ini kita contohkan kita ingin memanajemenkan bandwidth disebuah kantor ke beberapa ruangan. Jadi, dapat kita ganti dengan nama : Kantor dengan Max Limitnya target upload-nya 1 M dan dan target downloadnya 1 M.
Manajemen Bandwidth dengan Simple Queue
Note : apabila warna queuenya merah maka sudah over maksimal
4. Apabila kita akan membagi bandwidthnya maka, tambah queue baru dengan memilih add (+) dan isikan namanya, target address dan max limitnya.
Manajemen Bandwidth dengan Simple Queue
Contoh :
Name : Ruang1
Target Address : 192.168.10.0/24
Max limit target uploadnya 1 M dan dan target downloadnya 1 M.
Kemudian masuk pada tab Advance , disinilah nanti bandwidth akan dibagi. Pada bagian Limit At diisi dengan 512 Mb dan 512 Mb.
Manajemen Bandwidth dengan Simple Queue
Pada bagian Parent diisi dengan nama queue yang awal tadi “Kantor”..
Kemudian klik Apply dan klik OK.
Maka dapat kita lihat tampilan manajemen bandwidth yang telah kita lakukan dengan simple queue.
Manajemen Bandwidth dengan Simple Queue
sekian langkah-langkah manajemen bandwidth pada mikrotik dengan menggunakan simple queue.