Ulasan Couchbase: Database NoSQL yang cerdas

Setiap bisnis menengah hingga besar membutuhkan database. Bisnis multinasional besar sering kali membutuhkan database yang didistribusikan secara global, dan ketika mereka menggunakan database mereka untuk aplikasi keuangan atau inventaris, mereka membutuhkan konsistensi yang kuat. Beberapa database dapat memenuhi kedua kebutuhan tersebut.

Couchbase Server adalah database dokumen JSON yang mengutamakan memori, terdistribusi, dan fleksibel yang sangat konsisten dalam cluster lokal. Couchbase Server juga mendukung replikasi lintas pusat data dengan konsistensi akhir di seluruh cluster. 

Couchbase Lite adalah database seluler tertanam yang bekerja secara offline dan disinkronkan dengan Couchbase Sync Gateway saat online. Sync Gateway disinkronkan dengan Couchbase Server serta dengan beberapa contoh Couchbase Lite.

Couchbase Server dapat diterapkan di tempat, di cloud, di Kubernetes, atau dalam konfigurasi hybrid. Itu datang dalam versi open source dan perusahaan.

Bahasa kueri Couchbase Server, N1QL, adalah superset SQL yang dirancang untuk database dokumen JSON, dengan ekstensi untuk analitik. Couchbase juga mendukung akses data nilai kunci dan pencarian teks lengkap.

Couchbase, perusahaan di balik basis data, tumbuh dari penggabungan Membase (pembuat basis data nilai kunci berkerumun dalam memori yang di-cache) dan CouchOne (pengembang basis data dokumen Apache CouchDB) pada tahun 2011. Perusahaan baru dimulai dengan kunci- value layer, menambahkan lapisan dokumen JSON pada tahun 2012, dan menambahkan database seluler pada tahun 2014, kueri seperti SQL pada tahun 2015, penelusuran teks lengkap pada tahun 2017, dan analitik pada tahun 2018.

Alternatif dan pesaing Couchbase

Alternatif untuk Couchbase termasuk MongoDB, database dokumen fleksibel lainnya; MongoDB dikombinasikan dengan Redis untuk penyimpanan cache; Oracle Database, database relasional kelas atas; dan SQL Server, penawaran database relasional Microsoft. Sistem database relasional dirancang untuk digunakan pada server tunggal yang besar, dan sulit untuk menskalakannya. MongoDB dirancang untuk melakukan replikasi master-slave, yang berskala sedikit, tetapi perlu sharding agar dapat diskalakan dengan baik. Redis membantu mempercepat MongoDB, tetapi memperkenalkan bagian bergerak lain, yang dapat mempersulit pengelolaan sistem gabungan.

Alternatif terbaru lainnya untuk Couchbase termasuk CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB, dan Amazon DynamoDB. Saya telah membahas opsi relasional dan NoSQL di ulasan sebelumnya.

Arsitektur Couchbase Server

Couchbase Server melakukan banyak peran: layanan data, layanan indeks, layanan kueri, keamanan, replikasi, pencarian, eventing, analitik, dan manajemen. Layanan ini masing-masing dapat dijalankan pada satu atau lebih node.

Couchbase Server telah dirancang dengan tiga prinsip dasar: memori dan arsitektur yang berpusat pada jaringan, isolasi beban kerja, dan pendekatan asinkron untuk semuanya.

Penulisan disimpan ke memori, lalu disimpan ke disk dan diindeks secara asinkron tanpa memblokir pembacaan atau penulisan. Data dan indeks yang paling sering digunakan disimpan secara transparan di memori untuk pembacaan cepat. Penggunaan memori yang berat ini bagus untuk latensi dan throughput, meskipun itu meningkatkan persyaratan RAM Couchbase.

Couchbase Server dapat menskalakan setiap layanannya secara independen, untuk membuatnya lebih efisien. Layanan kueri dapat memanfaatkan lebih banyak sumber daya CPU, layanan indeks dapat menggunakan SSD, dan layanan data dapat menggunakan lebih banyak RAM. Couchbase menyebut penskalaan multi-dimensi (MDS) ini, dan ini adalah salah satu fitur pembeda Couchbase Server.

Operasi asinkron membantu Couchbase Server untuk menghindari pemblokiran penulisan, pembacaan, atau kueri. Pengembang dapat menyeimbangkan daya tahan dan konsistensi terhadap latensi saat dibutuhkan.

Model data Couchbase JSON mendukung tipe data dasar dan kompleks: angka, string, objek bersarang, dan array. Anda dapat membuat dokumen yang dinormalisasi atau dinormalisasi. Couchbase Server tidak memerlukan atau bahkan mendukung skema. Sebaliknya, MongoDB tidak memerlukan skema, tetapi dapat mendukung dan menerapkannya jika pengembang memilihnya.

Seperti yang akan saya bahas lebih detail nanti, Anda dapat mengakses dokumen Couchbase Server melalui empat mekanisme: nilai kunci, kueri berbasis SQL, penelusuran teks lengkap, dan peristiwa JavaScript. Jika dokumen JSON Anda memiliki sub dokumen atau larik, Anda dapat mengaksesnya secara langsung menggunakan ekspresi jalur tanpa perlu mentransfer dan mengurai seluruh dokumen. Model eventing bisa memicu perubahan data ( OnUpdate) atau timer. Selain itu, Anda dapat mengakses dokumen Couchbase Server melalui sinkronisasi dengan Couchbase Mobile.  

Couchbase Server diatur ke dalam bucket, vBuckets, node, dan cluster. Bucket menampung dokumen JSON. vBuckets pada dasarnya adalah pecahan yang didistribusikan secara otomatis ke seluruh node. Node adalah mesin fisik atau virtual yang meng-host satu instance Couchbase Server. Cluster adalah kumpulan node. Replikasi sinkron terjadi antara node dalam cluster.

Opsi penyebaran Server Couchbase

Anda dapat menginstal Couchbase Server di tempat, di cloud, dan di Kubernetes. Couchbase Server Enterprise Edition gratis untuk pengembangan dan pengujian dan tersedia dengan berlangganan untuk produksi. Couchbase Server Community Edition open source gratis untuk semua tujuan. Selain dari beberapa fitur yang dihilangkan, Couchbase Server Community Edition kompatibel dengan API dengan Couchbase Server Enterprise Edition.

Saya membuat sesi cloud test drive di Google Cloud Platform, yang (setelah penundaan penerapan selama lima menit) memberi saya cluster Server Couchbase tiga node dan node Gateway Sinkronisasi, semuanya berfungsi selama tiga jam. Saya membutuhkan sekitar satu jam untuk melewati empat tutorial Couchbase, yang memberi saya perasaan untuk menanyakan server.

Operator Otonom Couchbase

Operator Otonomi Couchbase, hanya didukung di Edisi Perusahaan, menyediakan integrasi asli Server Couchbase dengan Kubernetes sumber terbuka dan Red Hat OpenShift. Operator memperluas API Kubernetes dengan membuat Definisi Sumber Daya Kustom dan mendaftarkan dirinya sebagai pengontrol Server Couchbase kustom untuk mengelola cluster Server Couchbase. Hal ini mengurangi jumlah upaya pengembang yang diperlukan untuk menjalankan kluster Couchbase di Kubernetes, dan memungkinkan Anda mengotomatiskan pengelolaan tugas Couchbase Server yang umum, seperti konfigurasi, pembuatan, penskalaan, dan pemulihan kluster Server Couchbase. Operator juga bekerja dengan Layanan Azure Kubernetes, Layanan Amazon Elastic Kubernetes, dan Google Kubernetes Engine.

Replikasi Lintas Datacenter (XDCR)

Seperti yang saya sebutkan sebelumnya, Couchbase Server melakukan replikasi sinkronis dan memiliki konsistensi yang kuat dalam sebuah cluster. Itu melakukan replikasi aktif-aktif asinkron di seluruh cluster, pusat data, dan zona ketersediaan, untuk menghindari terjadinya latensi tulis yang tinggi. XDCR memungkinkan Couchbase menjadi database yang terdistribusi secara global, dengan mengorbankan konsistensi akhir (bukan yang kuat) antar cluster.

XDCR dasar didukung di semua edisi Couchbase Server. Pemfilteran XDCR, pelambatan, dan resolusi konflik berbasis stempel waktu adalah semua fitur Edisi Perusahaan.

Alat kueri Couchbase

Anda dapat meminta Couchbase Server menggunakan kunci untuk mengambil nilai terkait, yang bisa berupa dokumen JSON atau Blob. Anda juga dapat menanyakannya dengan bahasa N1QL seperti SQL atau dengan pencarian teks lengkap. Kueri N1QL dan teks lengkap berjalan lebih cepat jika bucket memiliki indeks untuk mendukung kueri.

N1QL

N1QL, dilafalkan "nickel", sangat mirip dengan SQL standar, dengan ekstensi untuk JSON. Saya merasa jauh lebih mudah untuk mengambilnya daripada pipeline agregasi MongoDB, mengingat saya telah menggunakan SQL selama beberapa dekade.

Sebenarnya ada dua varian N1QL yang serupa: satu untuk layanan Kueri Server Couchbase, dan satu lagi untuk layanan Analytics, yang merupakan fitur Edisi Perusahaan. N1QL untuk Analytics didasarkan pada SQL ++.

Beberapa ekstensi N1QL adalah USE KEYS, NEST, UNNEST, dan MISSING. USE KEYSdan USE HASHmerupakan petunjuk permintaan untuk JOINs. NESTdan UNNESTmengemas dan membongkar array. MISSINGadalah alternatif khusus JSON untuk NULL; IS NOT MISSINGberarti ada nilai tertentu atau NULLdalam dokumen. Kata kunci untuk nilai are NOT MISSINGdan NOT NULLis KNOWN. Kueri N1QL dapat menggunakan jalur, yang juga berlaku untuk pencarian teks lengkap.

Pencarian teks lengkap

Couchbase mendukung mesin pencari teks lengkap eksternal, seperti Solr, tetapi juga memiliki mesin pencari teks lengkap berbasis Go, Bleve. Bleve disertakan dalam Couchbase Mobile serta Couchbase Server, dan mendukung sebagian besar sintaks pencarian yang Anda harapkan.

SDK Couchbase

Semua layanan Couchbase utama diekspos untuk pemrograman melalui SDK. SDK tersedia untuk C / C ++, .Net (C #, F #, dan Visual Basic .Net), Go, Java, Node.js, PHP, Python, dan Scala.

Selain SDK, Couchbase menawarkan integrasi yang erat dengan beberapa framework: Spring Data, .NET LINQ, dan Ottoman Node.js ODM milik Couchbase. Misalnya, kueri sampel berikut menggunakan Linq2Couchbase:

{

     Server = Daftar baru {new Uri ("// localhost: 8091 /")}

});

var context = new BucketContext (ClusterHelper.GetBucket ("travel-sample"));

var query = (dari dalam konteks.Query ()

               dimana a.Country == "United Kingdom"

               pilih a).

               Ambil (10);

query.ToList (). ForEach (Console.WriteLine);

ClusterHelper.Close ();

Couchbase Mobile

Couchbase Mobile memiliki dua bagian: Couchbase Lite, yang berjalan di perangkat seluler, dan Couchbase Sync Gateway, yang berjalan di node server. Couchbase Lite berjalan di iOS, Android, .Net, dan Xamarin, serta mendukung bahasa Swift, Objective-C, Java, Kotlin, dan C ++.

Misalnya, kode Java berikut mendefinisikan kueri untuk dijalankan di Android:

Database database = DatabaseManager.getDatabase ();

Query searchQuery = QueryBuilder

  .select (SelectResult.expression (Expression.property ("airportname")))

  .from (DataSource.database (database))

  .dimana(

    Expression.property ("type"). EqualTo (Expression.string ("airport"))

      .and (Expression.property ("airportname"). seperti (Expression.string (prefix + "%")))

);

Tolok ukur dasar sofa

Meskipun belum melakukan tolok ukur Couchbase Server, pihak ketiga (Altoros) telah melakukannya menggunakan YCSB JSON dan uji nilai kunci dan uji TPCx-IoT. Bagan di bawah ini adalah untuk tolok ukur dokumen JSON. Seperti yang Anda lihat, Couchbase Server mengungguli MongoDB dan DataStax. Anda dapat menjalankan kembali benchmark ini sendiri, karena Altoros telah menyediakan semua skrip yang diperlukan.

Altoros

Secara keseluruhan, Couchbase Server menumpuk serta database dokumen NoSQL JSON dengan bahasa kueri seperti SQL dan mesin pencari teks lengkap, dan Couchbase Mobile memperluas proposisi nilai ke perangkat seluler. Masuk akal apakah Couchbase untuk Anda bergantung pada aplikasi dan persyaratan Anda.

Jika Anda memerlukan struktur skema yang andal dari database relasional, atau orientasi koneksi dari database grafik, maka Couchbase tidak akan melakukan apa yang Anda inginkan. Tetapi jika Anda membutuhkan database dokumen yang dapat diskalakan secara global, maka Couchbase adalah pilihan yang baik.

-

Biaya: Edisi Komunitas Server Couchbase: Gratis. Couchbase Server Enterprise Edition: Langganan tahunan diberi harga berdasarkan node dan tersedia pada titik harga yang berbeda tergantung pada inti dan RAM yang dibutuhkan node. Node pengembangan dan pengujian gratis. Penerapan cloud Edisi Perusahaan tersedia per jam, dengan harga perangkat lunak tipikal $ 0,662 / node / jam di AWS untuk Couchbase Server dan $ 1,641 / node / jam untuk Mobile Sync Gateway, dengan templat standar menggunakan empat node server dan dua node sinkronisasi pada awalnya , dengan penskalaan otomatis. Harganya kira-kira sebanding di Microsoft Azure dan Google Cloud Platform. Anda juga dapat membawa lisensi Anda sendiri dan hanya membayar untuk sumber daya cloud.

Platform: Couchbase Server: Linux, Windows Server 2012 R2 dan yang lebih baru; Kubernetes, OpenShift; AWS, Azure, GCP. Pengembangan dan pengujian Couchbase Server: MacOS 10.11 dan yang lebih baru, Pembaruan Hari Jadi Windows 10 dan yang lebih baru; Buruh pelabuhan. Couchbase Lite: iOS, Android, .Net. Couchbase Sync Gateway: Linux, Windows Server 2010 dan yang lebih baru, MacOS 10.12.6 dan yang lebih baru; AWS, Docker, OpenShift.