Keistimewaan NoSQL: Pangkalan data dokumen terbaik

"Alat yang tepat untuk pekerjaan yang tepat." Sekiranya kebijaksanaan seperti itu berlaku di mana sahaja, ia pasti berlaku dengan pilihan pangkalan data yang dipilih oleh pembangun untuk aplikasi tertentu. Pangkalan data dokumen, salah satu kumpulan produk data yang secara kolektif disebut sebagai "NoSQL," adalah untuk pembangun yang ingin memfokuskan pada aplikasi mereka daripada teknologi pangkalan data .

Dengan pangkalan data dokumen, data tidak disimpan dalam jadual dengan jenis lajur yang berbeza. Sebaliknya, ia disimpan dalam "dokumen" bentuk bebas dengan sebilangan bidang dan sebilangan struktur bersarang. Dokumen seperti itu biasanya ditunjukkan sebagai JSON, dan dikemas kini dengan menggunakan API atau dengan menghantar JSON ke titik akhir REST. Sebilangan besar bahasa pengaturcaraan moden menyokong JSON dan REST, jadi bekerja dengan pangkalan data dokumen terasa seperti bekerja secara asli dengan struktur data daripada bekerja dengan pangkalan data tradisional.

Reka bentuk skema ini, seperti yang disebut, mempunyai batasannya. Pembangun mesti melakukan lebih banyak kerja untuk memastikan bahawa data yang dimasukkan adalah konsisten, kerana konsistensi tersebut tidak selalu dijamin oleh pangkalan data itu sendiri. SQL, bahasa standard-issue dan difahami secara meluas untuk kerja pangkalan data, tidak disokong oleh kebanyakan pangkalan data dokumen, jadi mereka yang mempunyai kepakaran pangkalan data yang ada mesti bermula dari awal. Tetapi kemudahan, kepantasan, skalabilitas, dan fleksibiliti pangkalan data dokumen sukar ditandingi ketika anda menulis aplikasi yang memerlukan struktur data bentuk bebas protean.

Di sini kami telah memprofilkan tujuh pangkalan data dokumen yang paling terkenal dan paling banyak digunakan. Empat daripada tujuh — CouchDB, Couchbase Server, MongoDB, dan RethinkDB — adalah projek sumber terbuka dengan sedikit atau tanpa halangan praktikal untuk memulakan; Couchbase dan MongoDB juga tersedia dalam edisi perusahaan yang disokong di bawah lesen komersial. Tiga yang lain — Amazon DynamoDB, Google Firebase, dan IBM Cloudant — adalah perkhidmatan yang dihoskan dari vendor awan utama, di mana integrasi rapat dengan perkhidmatan lain di awan tersebut merupakan tarikan besar.

Lihat jadual di bawah untuk membandingkan ciri; tatal ke kanan dalam jadual untuk melihat semua lajur, menggunakan bar tatal di bahagian bawah. Teruskan membaca untuk perbincangan ringkas setiap pangkalan data.

L W M S I A O

1. Alat pihak ketiga mungkin menyediakan fungsi ini. 2 . Setiap jadual. 3 . Edisi perusahaan sahaja. 4 . Lihat fungsi sahaja. 5 . Urus niaga multidokumen juga tersedia, tetapi tidak pada kelompok terlindung.

Kunci: = Linux, = Windows, = MacOS, = Solaris, = iOS, = Android, = telefon bimbit lain,
  Amazon DynamoDB Cosmos DB Pondok sofa CouchDB Google Firebase IBM Cloudant MarkLogik MongoDB Fikirkan semulaDB
Pelantar Awan sahaja Awan sahaja LWM LWMIAO Awan sahaja Awan sahaja LWMS LWMS LWM
Sistem pertanyaan API REST Protokol wayar MongoDB Protokol Memcached, REST API API REST API REST / JavaScript API REST API REST API berasaskan JSON, API REST separa Bahasa pertanyaan ReQL, REST API
Pertanyaan SQL Tidak 1 Ya Melalui bahasa N1QL Tidak Tidak Tidak Ya Tidak 1 Tidak
Menaip kuat Ya Ya Ya Tidak Ya Tidak Untuk skema XML Ya Ya
Orang Asli bergabung Tidak Ya Ya Tidak Tidak Tidak Ya Ya Ya
Membahagi bahagian Ya Ya Ya Ya NA Ya Ya Ya Ya2
Penggabungan NA Ya Ya Ya NA NA Ya Ya Ya
Replikasi Ya Ya Ya Ya NA Ya Ya Ya Setiap jadual
Ketekalan: Segera Setiap bacaan Ya Secara keseluruhan Tidak Pelanggan yang bersambung Tidak Ya Setiap tulisan Setiap dokumen
Ketekalan: Akhirnya Ya Ya Ya Ya Pelanggan luar talian Ya Ya Ya Keseluruhan pangkalan data
Serentak Ya Ya Ya Ya Ya Ya Ya Ya Ya
Operasi dalam memori NA NA Tidak Tidak NA Tidak NA Ya3 Tidak
Prosedur yang disimpan Tidak JavaScript JavaScript4 JavaScript4 Peraturan JavaScript4 Modul XQuery JavaScript Tidak
Urus Niaga Melalui aplikasi Ya Dokumen tunggal Dokumen tunggal Ya Dokumen tunggal Dokumen tunggal Dokumen tunggal5 Dokumen tunggal
Versi terkini NA NA 5.0 (Okt 2017) 2.1.1 (November 2017) NA NA 9.0 (Mei 2016) 3.4.10 (Okt 2017) 2.3.6 (Jul 2017)
Pelepasan awal 2012 2017 2011 2005 2012 2010 2005 2009 2009

Amazon DynamoDB

Kedai dokumen Amazon DynamoDB mula beroperasi pada tahun 2012 sebagai lanjutan dari SimpleDB Amazon. Di bawah tudung ia dikuasakan oleh kedai nilai kunci, Dynamo. Seorang pembangun bersama DynamoDB kemudiannya akan menggunakan banyak idea yang sama untuk membuat Apache Cassandra. 

Ciri-ciri DynamoDB

Seperti kebanyakan tawaran awan Amazon yang lain, DynamoDB adalah perkhidmatan terurus bayar-sebagai-anda-pergi-untuk-apa-yang-anda-perlukan. Pembangun menetapkan berapa banyak kapasiti penyimpanan untuk menyediakan sama ada dokumen tidak tersusun atau pasangan nilai kunci, dan memilih had kadar setiap jam untuk permintaan membaca dan menulis ke pangkalan data. Tidak perlu menyediakan pelayan atau mengkonfigurasi replikasi — Amazon menangani semua itu di bawah penutup, dan baru-baru ini menambahkan penskalaan automatik ke campuran.

Secara semula jadi, DynamoDB menawarkan pemaju penyatuan yang berguna dengan perkhidmatan lain di awan Amazon. Pencetus, misalnya, dapat disiapkan dengan fungsi AWS Lambda. BI dan alat analisis Amazon juga berdekatan. Kedekatan dengan perkhidmatan ini adalah mudah, tetapi ini juga bermaksud Amazon dapat meningkatkan fungsi dengan pelbagai cara. Caching dan pecutan a la Redis, misalnya, tersedia dengan menggunakan DynamoDB Accelerator, sebuah tambah-tambah biaya.

DynamoDB Setempat

Anda tidak akan menjumpai DynamoDB dalam penjelmaan sumber terbuka. Ini tersedia secara eksklusif sebagai tawaran yang dihoskan di awan Amazon.

Yang mengatakan, tidak seperti banyak pangkalan data awan asli lain, DynamoDB juga tersedia dalam versi yang boleh dimuat turun dan dijalankan secara tempatan. Tetapi DynamoDB Local tidak dimaksudkan untuk penggunaan produksi, melainkan sebagai cara untuk membuat aplikasi dalam lingkungan ujian tanpa memerlukan sambungan atau menjalankan tagihan Amazon.

Microsoft Azure Cosmos DB

Cosmos DB adalah projek yang bercita-cita tinggi, sistem pangkalan data yang merangkumi pelbagai model untuk menyimpan dan mengambil data. Cosmos DB dapat berfungsi sebagai pangkalan data dokumen, pangkalan data kolumnar, pangkalan data grafik, atau penyimpanan nilai-kunci, yang memungkinkan pengguna memilih paradigma yang sesuai dengan mereka dan menggunakan pelbagai API untuk bekerja dengan paradigma tersebut. 

Ciri-ciri Cosmos DB

Daripada mencipta API yang sama sekali baru untuk sistem pangkalan data dokumen, Cosmos DB menyediakan API yang serasi dengan MongoDB yang popular (dibincangkan di bawah). Antara faedahnya ialah kod yang ada yang menggunakan perpustakaan antara muka MongoDB atau protokol wayar binari MongoDB dapat berfungsi sebagaimana mestinya. Ini sama dengan Cosmos DB yang dapat menyediakan MongoDB sebagai perkhidmatan. Begitu juga, Cosmos DB menyokong API Cassandra, pangkalan data keluarga-keluarga yang popular. 

Microsoft menunjukkan beberapa kelebihan untuk Cosmos DB yang tidak semestinya eksklusif untuk fungsi pangkalan data dokumennya, tetapi bertujuan untuk menarik aplikasi pangkalan data dokumen bangunan tersebut. Salah satu tawaran tersebut adalah tahap konsistensi yang dapat disesuaikan. Sekiranya anda mempunyai beberapa kelas transaksi dokumen yang memerlukan konsistensi yang lebih kuat di seluruh wilayah Azure daripada yang lain, anda boleh menentukannya secara manual berdasarkan setiap transaksi.

Ciri-ciri lain lebih khusus untuk pangkalan data dokumen. Sebagai contoh, pengguna MongoDB harus menyiapkan indeks pada koleksi dokumen untuk mengoptimumkan pencarian. Pengguna Cosmos DB yang bekerja dengan MongoDB API tidak perlu mengatur pengindeksan untuk dokumen, kerana setiap properti dalam dokumen yang dimasukkan akan diindeks secara automatik.

Menggunakan Cosmos DB di Microsoft Azure

Tidak ada versi Cosmos DB yang dihoskan secara tempatan. Ia hanya tersedia sebagai perkhidmatan di Microsoft Azure cloud. Oleh itu, API pengembangan untuk Cosmos DB tersedia untuk hampir semua bahasa perusahaan popular — Java, Node.js, .NET, dan Python.

Pelayan Couchbase

Couchbase tidak begitu banyak saudara kepada CouchDB sebagai pengganti. Couchbase dibina berdasarkan kerja yang dilakukan di CouchDB dan Membase, tetapi tidak berkaitan dengan salah satu projek tersebut. Ini adalah pangkalan data dokumen dan kedai nilai kunci yang diedarkan digabungkan menjadi satu, dengan ciri canggih seperti failover automatik dan replikasi pusat data silang, yang ditujukan untuk kes penggunaan perusahaan.

Ciri-ciri sofa

Salah satu ciri yang membezakan Couchbase, bukan hanya dari persaingan NoSQL lain tetapi dari pendahulunya CouchDB, adalah bahasa pertanyaan seperti SQL yang disebut N1QL (diucapkan "nikel"). N1QL tidak menawarkan pelbagai perintah yang anda harapkan dari pelaksanaan ANSI SQL, tetapi menyediakan fungsi yang cukup berguna, seperti operasi BERSAMA, bagi seseorang yang mempunyai pengalaman SQL untuk mendapatkan hasil yang dapat dilaksanakan.

Sistem pertanyaan Couchbase bukan hanya untuk pemaju, tetapi untuk DBA dan penganalisis perniagaan yang biasanya berurusan dengan pangkalan data konvensional. Ciri-ciri seperti kata kunci JELAS tampaknya telah dimasukkan secara khusus untuk menarik minat orang ramai.

Sebagai gabungan pangkalan data dokumen dan nilai kunci, Couchbase menyimpan dokumen dengan menggunakan pengecam uniknya sebagai kunci. Dokumen juga dapat diberikan nilai waktu-untuk-hidup, berfungsi seperti cache nilai-kunci. Walaupun begitu, sistem cache kunci-nilai yang sebenar seperti Redis akan jauh lebih pantas untuk penyimpanan nilai kunci asas, tetapi Couchbase lebih fleksibel, dan Redis dan Couchbase dapat digabungkan secara berkesan untuk mempercepat keadaan. Oleh itu, Couchbase memiliki dukungan asli untuk protokol Memcached, jadi aplikasi yang ada yang menggunakan Memcached dapat dipasang ke Couchbase sebagai pengganti.

Komuniti Couchbase vs Perusahaan

Pelayan Couchbase hadir dalam edisi perusahaan bayar penuh, edisi komuniti percuma untuk digunakan, dan edisi sumber terbuka, yang merupakan asas bagi yang lain. Muat turun binari untuk edisi perusahaan dan komuniti boleh didapati dari laman web Couchbase, dan kod sumber tersedia dari laman web pembangun Couchbase. (Tidak ada satu repositori GitHub untuk projek sumber terbuka Couchbase kerana ini adalah gabungan beberapa projek.)

Edisi komuniti dapat digunakan dalam produksi, tetapi tidak memiliki fitur yang lebih maju dari edisi perusahaan dan juga sokongan, jadi jangan pembeli berhati-hati. Beberapa ciri di Couchbase, seperti fungsi penskalaan mendatar, telah masuk ke dalam projek CouchDB, tetapi itu lebih merupakan pengecualian daripada peraturan.

Couchbase Lite

Edisi Couchbase lain yang patut diberi perhatian untuk pembangun aplikasi adalah Couchbase Lite, versi Couchbase yang dapat disematkan yang dapat diselaraskan dengan contoh edisi penuh. Couchbase Lite adalah komponen utama dalam Couchbase Mobile, timbunan aplikasi untuk aplikasi mudah alih yang memerlukan penyimpanan data yang diselaraskan secara automatik dengan hujung belakang. Couchbase Mobile tersedia untuk iOS, Android, Java. .Net, MacOS, dan tvOS.

CouchDB

Projek CouchDB dimulakan pada tahun 2005 oleh mantan pembangun IBM dan berpindah ke Apache Software Foundation pada tahun 2008. Kadang-kadang dianggap bahawa CouchDB adalah asas untuk Couchbase, tetapi CouchDB dan Couchbase adalah projek selari dengan tujuan yang berbeza.

CouchDB lwn Couchbase

Walaupun Couchbase adalah pangkalan data dokumen dan nilai kunci, CouchDB adalah pangkalan data dokumen. Dan sementara Couchbase telah lama memfokuskan pada ciri perusahaan seperti toleransi kesalahan dan bahasa pertanyaan seperti SQL, kebaikan seperti itu baru mula tiba di CouchDB.

Ciri-ciri CouchDB

CouchDB menekankan kesederhanaan penggunaan dan kemudahan penggunaan. Mengambil data dari pangkalan data semudah mengirim pertanyaan berformat JSON ke titik akhir REST HTTPS, dengan hasilnya dikembalikan di JSON. Sebilangan besar bahasa pengaturcaraan moden dapat melakukan perkara-perkara ini, dan juga melakukan pemetaan dan pengurangan yang diperlukan untuk membuat pandangan di sebalik pertanyaan dan laporan CouchDB. Tidak memerlukan pemacu ODBC atau penyambung data.

Salah satu sos khas CouchDB adalah teknologi pendamaian datanya. Perubahan yang dilakukan pada satu rekan CouchDB secara automatik didamaikan dengan yang lain, dengan cara yang serupa dengan sistem kawalan versi. Segala konflik antara versi dokumen dikekalkan seolah-olah merupakan semakan sebelumnya terhadap dokumen tersebut.

Model yang akhirnya konsisten ini berguna untuk pangkalan data yang tidak selalu atau selalu disambungkan secara konsisten (seperti untuk aplikasi mudah alih yang bersambung sekejap), atau dalam kes di mana anda tidak memerlukan versi data terbaru dan terhebat dalam node tertentu. Tetapi konsistensi akhirnya juga merupakan salah satu peringatan terbesar CouchDB. Jika anda jangan perlu konsisten serta-merta, CouchDB bukan tempat untuk mencari ia.

Skalabiliti telah lama menjadi titik lemah bagi CouchDB, tetapi baru-baru ini ditangani. Versi 2.0 digabungkan dalam teknologi pengelompokan baru, berdasarkan bit terbuka yang diperoleh oleh Cloudant / IBM dan digabungkan ke dalam projek. Akhirnya, bagi mereka yang biasa dengan MongoDB dan ingin menggunakan sintaks pertanyaan deklaratif yang serupa, projek Mango, juga dari Cloudant / IBM, menyediakannya sebagai tambahan luaran.

Muat turun CouchDB

Binari CouchDB untuk semua platform utama, dan kod sumber, boleh dimuat turun dari laman rasmi CouchDB. Sumber untuk projek ini juga terdapat di GitHub.

Pangkalan Data Masa Nyata Google Firebase

Anda mungkin menganggap Google Firebase sebagai jawapan Google kepada DynamoDB - cara untuk menyediakan penyimpanan data penyegerakan cepat antara back-end awan dan aplikasi tempatan di pelbagai platform.

Firebase Realtime Database hanyalah satu komponen dalam timbunan Firebase, yang bertujuan untuk membina aplikasi yang mementingkan penglibatan dan pandangan penonton. Keseluruhan timbunan merangkumi fungsi seperti pengesahan, pemantauan prestasi, analitik pengguna, dan banyak lagi yang lain, tetapi di sini kita memberi tumpuan kepada Firebase itu sendiri.

Ciri-ciri Google Firebase

Google memperoleh Firebase pada tahun 2014. Sejak bertahun-tahun, Firebase telah menyiapkan Firebase untuk memanfaatkan banyak ciri Google Cloud. Fungsi Awan Google untuk Firebase, misalnya, memungkinkan Anda untuk memicu fungsi JavaScript di awan sebagai tindak balas terhadap peristiwa Firebase. Analitis Google untuk Firebase membolehkan anda menarik data aplikasi mudah alih ke BigQuery untuk analisis yang lebih mendalam.

Oleh kerana permainan adalah salah satu aplikasi sasaran Firebase, SDK yang disediakan untuk Firebase merangkumi kerangka pembangunan permainan lintas platform Unity. Pembangun yang mengusahakan projek yang lebih berfokus pada perusahaan atau yang berhadapan dengan pengguna mempunyai banyak pilihan lain: iOS dan Android asli, C ++, web / JavaScript generik, dan bahasa lain yang menyokong REST (Java, Python, anda namakannya).

Firebase direka untuk berfungsi dalam senario di mana sambungan tidak terjamin. Seperti CouchDB, cache berubah secara tempatan ketika di luar talian, dan secara automatik diselaraskan dengan hujung belakang ketika sambungan kembali. Perhatikan bahawa Firebase tidak dirancang untuk digunakan sebagai penyelesaian mandiri, sepenuhnya di luar talian; pada Android, misalnya, pangkalan data tempatan terhad kepada penyimpanan 10 MB.

Firebase di Google Cloud dan GitHub

Firebase tidak tersedia sebagai produk yang berdiri sendiri, tetapi hanya tersedia sebagai sebahagian daripada tawaran produk awan Google. Repositori Firebase GitHub mempunyai kod sumber untuk SDK dan untuk pelbagai alat khusus platform.

IBM Cloudant

Cloudant pada dasarnya adalah edisi CouchDB yang dihoskan oleh IBM. Pada asalnya, Cloudant adalah syarikat bebas, menawarkan edisi CouchDB yang disebut "BigCouch" yang dihoskan di IBM SoftLayer cloud. Pada tahun 2014, IBM memperoleh Cloudant secara langsung sebagai sebahagian daripada dorongan keseluruhan IBM ke arah analitik dan data besar. 

Cloudant vs. CouchDB

Cloudant dimaksudkan untuk lebih daripada versi CouchDB yang dihoskan. Cloudant menyediakan ciri yang tidak tersedia dalam CouchDB itu sendiri, seperti carian teks penuh yang disatukan secara asli. Pencarian teks penuh di CouchDB biasanya memerlukan penyatuan dengan projek luaran. Data dapat ditiru di kedua arah antara Cloudant dan contoh CouchDB, jadi agak mudah untuk berpindah antara satu sama lain jika diperlukan.

Sebilangan penambahbaikan Cloudant terhadap CouchDB telah kembali ke projek CouchDB yang mendasari, termasuk fungsi penskalaan mendatar CouchDB 2.0 dan antara muka bahasa pertanyaan Mango. Tetapi jangan menganggapnya sebagai bukti bahawa ciri Cloudant secara automatik akan turun ke CouchDB.

Cloudant di IBM Cloud

Cloudant terutamanya merupakan tawaran awan di IBM Cloud, di mana ia dapat digunakan bersama dengan produk data IBM Cloud lain seperti dashDB, DataWorks, dan Watson Analytics.

Cloudant Local

Edisi di sebalik firewall Cloudant, yang disebut Cloudant Local, menawarkan semua fungsi yang sama dengan tawaran yang dihoskan oleh awan. Cloudant Local boleh didapati pada Ubuntu dan Red Hat versi x86 Linux, serta Sistem z IBM sendiri yang menjalankan Red Hat atau Suse. Pembangun boleh memuat turun versi percuma, ujian-dan-dev-hanya dalam gambar Docker.