Ulasan Couchbase: Pangkalan data NoSQL yang pintar

Setiap perniagaan sederhana hingga besar memerlukan pangkalan data. Perniagaan berbilang negara yang besar sering memerlukan pangkalan data yang diedarkan secara global, dan apabila mereka menggunakan pangkalan data mereka untuk aplikasi kewangan atau inventori, mereka memerlukan konsistensi yang kuat. Beberapa pangkalan data dapat memenuhi kedua-dua keperluan.

Pelayan Couchbase adalah pangkalan data dokumen JSON yang pertama di memori dan diedarkan yang sangat konsisten dalam kluster tempatan. Pelayan Couchbase juga menyokong replikasi pusat data silang dengan konsistensi akhirnya di seluruh kelompok. 

Couchbase Lite adalah pangkalan data mudah alih terbenam yang berfungsi di luar talian dan diselaraskan dengan Couchbase Sync Gateway ketika dalam talian. Sync Gateway diselaraskan dengan Couchbase Server dan juga dengan beberapa kejadian Couchbase Lite.

Pelayan Couchbase dapat digunakan di premis, di awan, di Kubernetes, atau dalam konfigurasi hibrid. Ia terdapat dalam versi sumber terbuka dan versi perusahaan.

Bahasa pertanyaan Server Couchbase, N1QL, adalah superset SQL yang direka untuk pangkalan data dokumen JSON, dengan peluasan untuk analisis. Couchbase juga menyokong akses data nilai kunci dan carian teks penuh.

Couchbase, syarikat di belakang pangkalan data, berkembang dari penggabungan Membase (pembuat pangkalan data nilai kunci berkelompok dalam memori) dan CouchOne (pemaju pangkalan data dokumen Apache CouchDB) pada tahun 2011. Syarikat baru bermula dengan kunci- lapisan nilai, menambahkan lapisan dokumen JSON pada tahun 2012, dan terus menambahkan pangkalan data mudah alih pada tahun 2014, pertanyaan seperti SQL pada tahun 2015, carian teks penuh pada tahun 2017, dan analisis pada tahun 2018.

Alternatif dan pesaing sofa

Alternatif untuk Couchbase termasuk MongoDB, pangkalan data dokumen fleksibel yang lain; MongoDB digabungkan dengan Redis untuk caching; Pangkalan Data Oracle, pangkalan data hubungan mewah; dan SQL Server, penawaran pangkalan data hubungan Microsoft. Sistem pangkalan data relasional dirancang untuk digunakan pada pelayan tunggal dan besar, dan sukar untuk memperluasnya. MongoDB dirancang untuk melakukan replikasi master-slave, yang sedikit skala, tetapi perlu dilakukan agar lebih baik. Redis membantu mempercepat MongoDB, tetapi memperkenalkan bahagian bergerak yang lain, yang dapat menyulitkan pengurusan sistem gabungan.

Alternatif lain lain untuk Couchbase termasuk CockroachDB, Azure Cosmos DB, Amazon Aurora, Aerospike, Amazon DocumentDB, dan Amazon DynamoDB. Saya telah membincangkan pilihan hubungan dan NoSQL dalam ulasan sebelumnya.

Senibina Pelayan Couchbase

Pelayan Couchbase melakukan pelbagai peranan: perkhidmatan data, perkhidmatan indeks, perkhidmatan pertanyaan, keselamatan, replikasi, carian, eventing, analisis, dan pengurusan. Perkhidmatan ini masing-masing boleh dijalankan pada satu atau lebih nod.

Pelayan Couchbase telah dirancang berdasarkan tiga prinsip asas: seni bina memori dan berpusatkan rangkaian, pengasingan beban kerja, dan pendekatan tidak segerak untuk semuanya.

Penulisan dilekatkan pada memori, kemudian dimasukkan ke disk dan diindeks secara asinkron tanpa menyekat pembacaan atau penulisan. Data dan indeks yang paling banyak digunakan disimpan secara telus dalam memori untuk bacaan pantas. Penggunaan memori yang berat ini baik untuk latensi dan throughput, walaupun meningkatkan keperluan RAM Couchbase.

Pelayan Couchbase dapat meningkatkan setiap perkhidmatannya secara bebas, untuk menjadikannya lebih cekap. Perkhidmatan pertanyaan boleh memanfaatkan lebih banyak sumber daya CPU, perkhidmatan indeks dapat menggunakan SSD, dan perkhidmatan data dapat menggunakan lebih banyak RAM. Couchbase memanggil penskalaan pelbagai dimensi (MDS) ini, dan ia adalah salah satu ciri Couchbase Server yang membezakan.

Operasi tak segerak membantu Pelayan Couchbase untuk mengelakkan menyekat penulisan, pembacaan, atau pertanyaan. Pembangun dapat mengimbangkan ketahanan dan konsistensi terhadap kependaman apabila diperlukan.

Model data Couchbase JSON menyokong kedua-dua jenis data asas dan kompleks: nombor, rentetan, objek bersarang, dan tatasusunan. Anda boleh membuat dokumen yang dinormalisasi atau dinormalisasi. Pelayan Couchbase tidak memerlukan atau bahkan menyokong skema. Sebaliknya, MongoDB tidak memerlukan skema, tetapi dapat menyokong dan menguatkuasakannya jika pemaju memilih.

Seperti yang akan saya bincangkan dengan lebih terperinci di kemudian hari, anda boleh mengakses dokumen Couchbase Server melalui empat mekanisme: nilai kunci, pertanyaan berdasarkan SQL, carian teks penuh, dan kejadian JavaScript. Sekiranya dokumen JSON anda mempunyai subdokumen atau tatasusunan, anda boleh mengaksesnya secara langsung menggunakan ungkapan jalur tanpa perlu memindahkan dan mengurai keseluruhan dokumen. Model eventing boleh mencetuskan perubahan data ( OnUpdate) atau pemasa. Di samping itu, anda boleh mengakses dokumen Couchbase Server melalui penyegerakan dengan Couchbase Mobile.  

Pelayan Couchbase disusun ke dalam baldi, vBucket, nod, dan kluster. Baldi memegang dokumen JSON. vBucket pada dasarnya adalah pecahan yang diedarkan secara automatik ke seluruh nod. Nod adalah mesin fizikal atau maya yang menjadi tuan rumah kepada satu kejadian dari Couchbase Server Kluster adalah kumpulan nod. Replikasi segerak berlaku di antara nod dalam kluster.

Pilihan penyebaran Pelayan Couchbase

Anda boleh memasang Couchbase Server di premis, di awan, dan di Kubernetes. Couchbase Server Enterprise Edition percuma untuk pengembangan dan pengujian dan tersedia dengan langganan untuk pengeluaran. Edisi Komuniti Couchbase Server sumber terbuka adalah percuma untuk semua tujuan. Selain daripada beberapa ciri yang dihilangkan, Couchbase Server Edition Edition adalah serasi API dengan Couchbase Server Enterprise Edition.

Saya membuat sesi pemacu ujian awan di Google Cloud Platform, yang (setelah penundaan penggunaan selama lima minit) memberi saya kluster Couchbase Server tiga nod dan simpul Sync Gateway, semuanya baik selama tiga jam. Saya memerlukan kira-kira satu jam untuk menjalani empat tutorial Couchbase, yang memberi saya rasa ingin bertanya kepada pelayan.

Pengendali Autonomi Couchbase

Couchbase Autonomous Operator, yang hanya disokong dalam Edisi Perusahaan, menyediakan integrasi asli Couchbase Server dengan sumber terbuka Kubernetes dan Red Hat OpenShift. Operator memperluas API Kubernetes dengan membuat Definisi Sumber Kustom dan mendaftarkan dirinya sebagai pengawal Pelayan Couchbase tersuai untuk menguruskan kelompok Pelayan Couchbase. Ini mengurangkan jumlah usaha devops yang diperlukan untuk menjalankan kluster Couchbase di Kubernetes, dan memungkinkan anda mengotomatisasi pengurusan tugas-tugas Server Couchbase yang biasa, seperti konfigurasi, pembuatan, penskalaan, dan pemulihan kluster Server Couchbase. Pengendali juga bekerjasama dengan Azure Kubernetes Service, Amazon Elastic Kubernetes Service, dan Google Kubernetes Engine.

Replikasi Merentas Pusat (XDCR)

Seperti yang saya nyatakan sebelumnya, Couchbase Server melakukan replikasi segerak dan mempunyai konsistensi yang kuat dalam kluster. Ia melakukan replikasi tak aktif dan aktif di seluruh kelompok, pusat data, dan zon ketersediaan, untuk mengelakkan berlakunya latensi penulisan yang tinggi. XDCR membolehkan Couchbase menjadi pangkalan data yang diedarkan secara global, dengan kos membenarkan konsistensi akhirnya (dan bukannya kuat) antara kelompok.

XDCR asas disokong dalam semua edisi Couchbase Server. Penyaringan XDCR, penyelesaian, dan penyelesaian konflik berdasarkan cap waktu adalah semua ciri Edisi Perusahaan.

Alat pertanyaan sofa

Anda boleh meminta Couchbase Server menggunakan kunci untuk mendapatkan nilai yang berkaitan, yang boleh menjadi dokumen JSON atau Blob. Anda juga boleh bertanya dengan bahasa N1QL seperti SQL atau dengan carian teks penuh. Pertanyaan N1QL dan teks penuh berjalan lebih cepat jika keranjang mempunyai indeks untuk menyokong pertanyaan.

N1QL

N1QL, disebut "nikel," sangat mirip dengan SQL standard, dengan sambungan untuk JSON. Saya merasa jauh lebih mudah untuk diambil daripada saluran agregasi MongoDB, memandangkan saya telah menggunakan SQL selama beberapa dekad.

Sebenarnya terdapat dua varian N1QL yang serupa: satu untuk perkhidmatan Couchbase Server Query, dan satu untuk perkhidmatan Analitis, yang merupakan ciri Edisi Perusahaan. N1QL untuk Analitis berdasarkan SQL ++.

Sebahagian daripada sambungan N1QL adalah USE KEYS, NEST, UNNEST, dan MISSING. USE KEYSdan USE HASHmerupakan petunjuk pertanyaan untuk JOINs. NESTdan UNNESTbungkus dan bongkar tatasusunan. MISSINGadalah alternatif khusus JSON untuk NULL; IS NOT MISSINGbermaksud bahawa nilai tertentu ada atau NULLdalam dokumen. Kata kunci untuk nilai yang ada NOT MISSINGdan NOT NULLadalah KNOWN. Pertanyaan N1QL boleh menggunakan jalan, yang juga berlaku untuk carian teks penuh.

Pencarian teks penuh

Couchbase menyokong enjin carian teks penuh luaran, seperti Solr, tetapi ia juga mempunyai enjin carian teks penuh berasaskan Go sendiri, Bleve. Bleve termasuk dalam Couchbase Mobile dan juga Couchbase Server, dan ia menyokong sebahagian besar sintaks carian yang anda harapkan.

SDK Couchbase

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

Sebagai tambahan kepada SDK, Couchbase menawarkan integrasi yang ketat dengan beberapa kerangka kerja: Spring Data, .NET LINQ, dan Couchbase sendiri Ottoman Node.js ODM. Sebagai contoh, pertanyaan contoh berikut menggunakan Linq2Couchbase:

{

     Pelayan = Senarai baru {Uri baru ("// localhost: 8091 /")}

});

var konteks = BucketContext baru (ClusterHelper.GetBucket ("travel-sample"));

var query = (dari dalam konteks. Pertanyaan ()

               di mana a.Country == "United Kingdom"

               pilih a).

               Ambil (10);

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

ClusterHelper.Close ();

Couchbase Mudah Alih

Couchbase Mobile mempunyai dua bahagian: Couchbase Lite, yang berjalan pada peranti mudah alih, dan Couchbase Sync Gateway, yang berjalan pada nod pelayan. Couchbase Lite berjalan pada iOS, Android, .Net, dan Xamarin, dan menyokong bahasa Swift, Objective-C, Java, Kotlin, dan C ++.

Sebagai contoh, kod Java berikut menentukan pertanyaan untuk dijalankan di Android:

Pangkalan data pangkalan data = DatabaseManager.getDatabase ();

Pencarian pertanyaanQuery = QueryBuilder

  .select (SelectResult.expression (Expression.property ("nama lapangan terbang")))

  .dari (DataSource.database (pangkalan data))

  .di mana (

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

      .and (Expression.property ("nama lapangan terbang"). seperti (Expression.string (awalan + "%")))

);

Penanda aras sofa

Walaupun belum mempunyai penanda aras Couchbase Server, pihak ketiga (Altoros) telah melakukannya menggunakan ujian YCSB JSON dan nilai-kunci dan ujian TPCx-IoT. Carta di bawah adalah untuk penanda aras dokumen JSON. Seperti yang anda lihat, Couchbase Server mengungguli MongoDB dan DataStax. Anda boleh menjalankan penanda aras ini sendiri, kerana Altoros telah menyediakan semua skrip yang diperlukan.

Altoros

Secara keseluruhan, Couchbase Server bertumpu sebagai pangkalan data dokumen NoSQL JSON dengan bahasa pertanyaan seperti SQL dan mesin carian teks penuh, dan Couchbase Mobile memperluas cadangan nilai ke peranti mudah alih. Sama ada Couchbase masuk akal untuk anda bergantung pada aplikasi dan keperluan anda.

Sekiranya anda memerlukan struktur skema yang boleh dipercayai dari pangkalan data hubungan, atau orientasi sambungan pangkalan data grafik, maka Couchbase tidak akan melakukan apa yang anda mahukan. Tetapi jika anda memerlukan pangkalan data dokumen berskala global, maka Couchbase adalah pilihan yang baik.

-

Kos: Edisi Komuniti Pelayan Couchbase: Percuma. Couchbase Server Enterprise Edition: Langganan tahunan berharga mengikut nod dan tersedia pada titik harga yang berbeza bergantung pada teras dan RAM yang diperlukan nod. Nod pengembangan dan ujian adalah percuma. Penyebaran awan Edisi Perusahaan tersedia setiap jam, dengan harga perisian biasa $ 0.662 / node / jam pada AWS untuk Couchbase Server dan $ 1.641 / node / jam untuk Mobile Sync Gateway, dengan templat standard menggunakan empat nod pelayan dan dua nod penyegerakan pada mulanya , dengan penskalaan automatik. Harga boleh dibandingkan dengan Microsoft Azure dan Google Cloud Platform. Anda juga boleh membawa lesen anda sendiri dan membayar hanya untuk sumber awan.

Platform: Pelayan Couchbase: Linux, Windows Server 2012 R2 dan yang lebih baru; Kubernetes, OpenShift; AWS, Azure, GCP. Pembangunan dan ujian Couchbase Server: MacOS 10.11 dan yang lebih baru, Kemas kini Ulang Tahun Windows 10 dan yang lebih baru; Docker. 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.