Keunggulan NoSQL: Database dokumen terbaik

“Alat yang tepat untuk pekerjaan yang tepat.” Jika kebijaksanaan seperti itu berlaku di mana saja, itu pasti berlaku dengan pilihan database yang dipilih pengembang untuk aplikasi tertentu. Database dokumen, salah satu keluarga produk data yang secara kolektif disebut sebagai "NoSQL", ditujukan untuk pengembang yang ingin fokus pada aplikasinya daripada teknologi database .

Dengan database dokumen, data tidak disimpan dalam tabel dengan tipe kolom berbeda. Sebaliknya, ini disimpan dalam "dokumen" format bebas dengan sejumlah bidang dan sejumlah struktur bersarang. Dokumen semacam itu biasanya direpresentasikan sebagai JSON, dan diperbarui baik melalui API atau dengan mengirim JSON ke titik akhir REST. Hampir setiap bahasa pemrograman modern mendukung JSON dan REST, jadi bekerja dengan database dokumen terasa lebih seperti bekerja secara native dengan struktur data tersebut daripada bekerja dengan database tradisional.

Desain tanpa skema ini, demikian sebutannya, memiliki keterbatasan. Pengembang harus melakukan lebih banyak pekerjaan untuk memastikan bahwa data yang dimasukkan konsisten, karena konsistensi seperti itu tidak selalu dijamin oleh database itu sendiri. SQL, masalah standar dan bahasa yang dipahami secara luas untuk pekerjaan database, tidak didukung oleh sebagian besar database dokumen, jadi mereka yang memiliki keahlian database harus mulai dari awal. Tetapi kenyamanan, kecepatan, skalabilitas, dan keserbagunaan database dokumen sulit dikalahkan saat Anda menulis aplikasi yang membutuhkan struktur data bentuk bebas yang beragam.

Di sini kami telah memprofilkan tujuh dari database dokumen yang paling terkenal dan paling banyak digunakan. Empat dari tujuh — CouchDB, Couchbase Server, MongoDB, dan RethinkDB — adalah proyek open source dengan sedikit atau tanpa hambatan praktis untuk memulai; Couchbase dan MongoDB juga tersedia dalam edisi perusahaan yang didukung di bawah lisensi komersial. Tiga lainnya — Amazon DynamoDB, Google Firebase, dan IBM Cloudant — adalah layanan yang dihosting dari vendor cloud besar, di mana integrasi yang erat dengan layanan lain di cloud tersebut merupakan daya tarik besar.

Lihat tabel di bawah untuk membandingkan fitur; gulir ke kanan di tabel untuk melihat semua kolom, menggunakan bilah gulir di bagian bawah. Bacalah untuk diskusi singkat dari setiap database.

L W M S I A O

1. Alat pihak ketiga mungkin menyediakan fungsi ini. 2 . Per tabel. 3 . Edisi perusahaan saja. 4 . Lihat fungsi saja. 5 . Transaksi multidokumen juga tersedia, tetapi tidak pada cluster yang dipisahkan.

Key: = Linux, = Windows, = MacOS, = Solaris, = iOS, = Android, = other mobile,
  Amazon DynamoDB Cosmos DB Couchbase CouchDB Google Firebase IBM Cloudant MarkLogic MongoDB RethinkDB
Platform Hanya cloud Hanya cloud LWM LWMIAO Hanya cloud Hanya cloud LWMS LWMS LWM
Sistem kueri REST API Protokol kawat MongoDB Protokol memcached, REST API REST API REST / JavaScript API REST API REST API API berbasis JSON, sebagian REST API Bahasa kueri ReQL, REST API
Kueri SQL Tidak 1 Iya Melalui bahasa N1QL Tidak Tidak Tidak Iya Tidak 1 Tidak
Pengetikan yang kuat Iya Iya Iya Tidak Iya Tidak Untuk skema XML Iya Iya
Asli bergabung Tidak Iya Iya Tidak Tidak Tidak Iya Iya Iya
Pemartisian sharding Iya Iya Iya Iya NA Iya Iya Iya Ya2
Kekelompokan NA Iya Iya Iya NA NA Iya Iya Iya
Replikasi Iya Iya Iya Iya NA Iya Iya Iya Per tabel
Konsistensi: Segera Per baca Iya Secara keseluruhan Tidak Klien yang terhubung Tidak Iya Per tulis Per dokumen
Konsistensi: Akhirnya Iya Iya Iya Iya Klien offline Iya Iya Iya Seluruh database
Konkurensi Iya Iya Iya Iya Iya Iya Iya Iya Iya
Operasi dalam memori NA NA Tidak Tidak NA Tidak NA Ya3 Tidak
Prosedur yang disimpan Tidak JavaScript JavaScript4 JavaScript4 Aturan JavaScript4 Modul XQuery JavaScript Tidak
Transaksi Menurut aplikasi Iya Dokumen tunggal Dokumen tunggal Iya Dokumen tunggal Dokumen tunggal Dokumen tunggal5 Dokumen tunggal
Versi sekarang NA NA 5.0 (Oktober 2017) 2.1.1 (November 2017) NA NA 9.0 (Mei 2016) 3.4.10 (Oktober 2017) 2.3.6 (Juli 2017)
Peluncuran pertama 2012 2017 2011 2005 2012 2010 2005 2009 2009

Amazon DynamoDB

Penyimpanan dokumen DynamoDB Amazon mulai beroperasi pada tahun 2012 sebagai perpanjangan dari SimpleDB Amazon. Di bawah kap mesin ini didukung oleh penyimpanan nilai kunci, Dynamo. Seorang co-developer DynamoDB kemudian akan menggunakan banyak ide yang sama untuk membuat Apache Cassandra. 

Fitur DynamoDB

Seperti kebanyakan penawaran cloud Amazon lainnya, DynamoDB adalah layanan terkelola pay-as-you-go-for-what-you-need. Pengembang menyetel berapa banyak kapasitas penyimpanan yang harus disediakan untuk menyimpan dokumen tidak terstruktur atau pasangan nilai kunci, dan memilih batas tarif per jam tetap untuk permintaan baca dan tulis ke database. Tidak perlu menyediakan server atau mengonfigurasi replikasi — Amazon menangani semua itu di bawah perlindungan, dan baru-baru ini menambahkan penskalaan otomatis ke dalam campuran.

Biasanya, DynamoDB menawarkan integrasi yang berguna kepada pengembang dengan layanan lain di cloud Amazon. Pemicu, misalnya, dapat disiapkan melalui fungsi AWS Lambda. BI Amazon dan alat analisis juga dekat. Kedekatannya dengan layanan ini memang nyaman, tetapi itu juga berarti Amazon dapat meningkatkan fungsionalitas dengan berbagai cara. Caching dan akselerasi ala Redis, misalnya, tersedia melalui DynamoDB Accelerator, add-on cost-plus.

DynamoDB Lokal

Anda tidak akan menemukan DynamoDB dalam inkarnasi open source. Ini tersedia secara eksklusif sebagai penawaran yang dihosting di cloud Amazon.

Meskipun demikian, tidak seperti banyak database cloud-native lainnya, DynamoDB juga tersedia dalam versi yang dapat diunduh dan dijalankan secara lokal. Tetapi DynamoDB Local tidak dimaksudkan untuk penggunaan produksi, melainkan sebagai cara untuk menjalankan aplikasi dalam lingkungan pengujian tanpa memerlukan konektivitas atau menjalankan tagihan Amazon.

Microsoft Azure Cosmos DB

Cosmos DB adalah proyek ambisius, sistem database yang mencakup beberapa model untuk menyimpan dan mengambil data. Cosmos DB dapat berfungsi sebagai database dokumen, database kolom, database grafik, atau penyimpanan nilai kunci, yang memungkinkan pengguna untuk memilih paradigma yang sesuai untuk mereka dan menggunakan berbagai API untuk bekerja dengan paradigma tersebut. 

Fitur Cosmos DB

Daripada menciptakan API yang sama sekali baru untuk sistem database dokumen, Cosmos DB menyediakan API yang kompatibel dengan MongoDB yang populer (dibahas di bawah). Di antara manfaatnya adalah bahwa kode yang ada yang menggunakan pustaka antarmuka MongoDB atau protokol kawat biner MongoDB dapat berfungsi sebagaimana adanya. Ini berarti Cosmos DB mampu menyediakan MongoDB sebagai layanan. Demikian pula, Cosmos DB mendukung API Cassandra, database keluarga kolom yang populer. 

Microsoft memuji beberapa keuntungan untuk Cosmos DB yang tidak selalu eksklusif untuk fungsionalitas database dokumennya, tetapi dimaksudkan untuk menarik bagi mereka yang membangun aplikasi database dokumen. Salah satu penawaran tersebut adalah tingkat konsistensi yang merdu. Jika Anda memiliki beberapa kelas transaksi dokumen yang memerlukan konsistensi yang lebih kuat di seluruh wilayah Azure daripada yang lain, Anda bisa menentukannya secara manual per transaksi.

Fitur lainnya lebih spesifik untuk database dokumen. Misalnya, pengguna MongoDB harus mengatur indeks pada koleksi dokumen untuk mengoptimalkan pencarian. Pengguna Cosmos DB yang bekerja dengan API MongoDB tidak perlu menyiapkan pengindeksan untuk dokumen, karena setiap properti dalam dokumen yang dimasukkan secara otomatis diindeks.

Menggunakan Cosmos DB di Microsoft Azure

Tidak ada versi Cosmos DB yang dihosting secara lokal. Ini hanya tersedia sebagai layanan di cloud Microsoft Azure. Meskipun demikian, API pengembangan untuk Cosmos DB tersedia untuk hampir semua bahasa perusahaan populer — Java, Node.js, .NET, dan Python.

Server Couchbase

Couchbase tidak begitu mirip dengan CouchDB sebagai penerusnya. Couchbase dibangun berdasarkan pekerjaan yang dilakukan di CouchDB dan Membase, tetapi tidak terkait dengan salah satu proyek tersebut. Ini adalah database dokumen dan penyimpanan nilai kunci terdistribusi yang digabungkan menjadi satu, dengan fitur-fitur canggih seperti failover otomatis dan replikasi lintas pusat data, yang ditujukan untuk kasus penggunaan perusahaan.

Fitur Couchbase

Salah satu fitur yang membedakan Couchbase, tidak hanya dari kompetisi NoSQL lain tetapi dari pendahulunya CouchDB, adalah bahasa kueri mirip SQL-nya yang disebut N1QL (diucapkan "nikel"). N1QL tidak menawarkan berbagai perintah yang Anda harapkan dari implementasi SQL ANSI, tetapi menyediakan fungsi yang cukup berguna, seperti operasi JOIN, bagi seseorang dengan pengalaman SQL untuk mendapatkan hasil yang bisa diterapkan.

Sistem kueri Couchbase tidak hanya untuk pengembang, tetapi untuk DBA dan analis bisnis yang biasanya menangani database konvensional. Fitur-fitur seperti kata kunci MENJELASKAN tampaknya telah dimasukkan secara khusus untuk menarik kerumunan itu.

Sebagai database dokumen kombinasi dan penyimpanan nilai kunci, Couchbase menyimpan dokumen dengan menggunakan pengenal uniknya sebagai kuncinya. Dokumen juga dapat diberi nilai time-to-live, agar berfungsi seperti cache nilai kunci. Meskipun demikian, sistem penyimpanan nilai kunci sejati seperti Redis akan jauh lebih cepat untuk penyimpanan nilai kunci dasar, tetapi Couchbase lebih fleksibel, dan Redis serta Couchbase dapat digabungkan secara efektif untuk mempercepat pekerjaan. Pada catatan itu, Couchbase memiliki dukungan asli untuk protokol Memcached, sehingga aplikasi yang sudah ada yang menggunakan Memcache dapat dihubungkan ke Couchbase sebagai penggantinya.

Komunitas Couchbase vs. Perusahaan

Couchbase Server hadir dalam edisi perusahaan berbayar penuh, edisi komunitas gratis untuk digunakan, dan edisi sumber terbuka, yang merupakan fondasi bagi yang lain. Unduhan biner untuk edisi perusahaan dan komunitas tersedia dari situs Couchbase, dan kode sumber tersedia dari situs pengembang Couchbase. (Tidak ada satu tempat penyimpanan GitHub untuk proyek sumber terbuka Couchbase karena ini adalah kumpulan dari beberapa proyek.)

Edisi komunitas dapat digunakan dalam produksi, tetapi tidak memiliki fitur yang lebih canggih seperti edisi perusahaan serta dukungan, jadi berhati-hatilah bukan pembeli. Beberapa fitur di Couchbase, seperti fungsionalitas penskalaan horizontal, telah ditemukan dalam proyek CouchDB, tetapi itu lebih merupakan pengecualian daripada aturannya.

Couchbase Lite

Edisi Couchbase lain yang patut diperhatikan untuk pengembang aplikasi adalah Couchbase Lite, versi Couchbase yang dapat disematkan yang dapat disinkronkan dengan contoh edisi lengkap. Couchbase Lite adalah komponen kunci dalam Couchbase Mobile, tumpukan aplikasi untuk aplikasi seluler yang membutuhkan penyimpanan data yang disinkronkan secara otomatis dengan ujung belakang. Couchbase Mobile tersedia untuk iOS, Android, Java. .Net, MacOS, dan tvOS.

CouchDB

Proyek CouchDB dimulai pada tahun 2005 oleh mantan pengembang IBM dan dipindahkan ke Apache Software Foundation pada tahun 2008. Kadang-kadang diasumsikan bahwa CouchDB adalah basis untuk Couchbase, tetapi CouchDB dan Couchbase adalah proyek paralel dengan tujuan yang berbeda.

CouchDB vs. Couchbase

Sedangkan Couchbase adalah database dokumen dan penyimpanan nilai kunci, CouchDB secara ketat adalah database dokumen. Dan sementara Couchbase telah lama berfokus pada fitur perusahaan seperti toleransi kesalahan dan bahasa kueri seperti SQL, masalah seperti itu baru mulai muncul di CouchDB.

Fitur CouchDB

CouchDB menekankan kesederhanaan penerapan dan kemudahan penggunaan. Mengambil data dari database semudah mengirim kueri berformat JSON ke titik akhir REST HTTPS, dengan hasil yang dikembalikan dalam JSON. Hampir setiap bahasa pemrograman modern dapat melakukan hal-hal ini, dan juga melakukan pemetaan dan pengurangan yang diperlukan untuk membuat tampilan di balik kueri dan laporan CouchDB. Tidak perlu driver ODBC atau konektor data.

Salah satu saus spesial CouchDB adalah teknologi rekonsiliasi datanya. Perubahan yang dibuat pada satu peer CouchDB secara otomatis direkonsiliasi dengan yang lain, dengan cara yang mirip dengan sistem kontrol versi. Setiap konflik antara versi dokumen dipertahankan seolah-olah itu adalah revisi sebelumnya untuk dokumen itu.

Model yang akhirnya konsisten ini berguna untuk database yang tidak selalu atau secara konsisten terhubung (seperti untuk aplikasi seluler yang terhubung secara terputus-putus), atau dalam kasus di mana Anda tidak memerlukan versi data terbaru dan terhebat di node tertentu. Tetapi konsistensi akhirnya juga merupakan salah satu peringatan terbesar CouchDB. Jika Anda memang membutuhkan konsistensi segera, CouchDB bukanlah tempat untuk menemukannya.

Skalabilitas telah lama menjadi titik lemah untuk CouchDB, tetapi baru-baru ini telah diatasi. Versi 2.0 diaduk dalam teknologi pengelompokan baru, berkat bit open source oleh Cloudant / IBM dan digabungkan ke dalam proyek. Terakhir, bagi mereka yang terbiasa dengan MongoDB dan ingin menggunakan sintaks kueri deklaratif serupa, proyek Mango, juga dari Cloudant / IBM, menyediakannya sebagai add-on eksternal.

Download CouchDB

Biner CouchDB untuk semua platform utama, dan kode sumber, dapat diunduh dari situs resmi CouchDB. Sumber untuk proyek ini juga tersedia di GitHub.

Google Firebase Realtime Database

Anda mungkin menganggap Google Firebase sebagai jawaban Google untuk DynamoDB — cara untuk menyediakan penyimpanan data yang tersinkronisasi cepat antara back-end cloud dan aplikasi lokal di berbagai platform.

Firebase Realtime Database hanyalah salah satu komponen dalam tumpukan Firebase, yang ditujukan untuk membangun aplikasi yang banyak melibatkan interaksi dan wawasan audiens. Seluruh tumpukan mencakup fungsi-fungsi seperti otentikasi, pemantauan kinerja, analisis pengguna, dan banyak lainnya, tetapi di sini kami fokus pada Firebase itu sendiri.

Fitur Google Firebase

Google mengakuisisi Firebase pada tahun 2014. Bertahun-tahun sejak itu, Google telah menghubungkan Firebase untuk memanfaatkan banyak fitur Google Cloud. Google Cloud Functions for Firebase, misalnya, memungkinkan Anda memicu fungsi JavaScript di cloud sebagai respons terhadap peristiwa Firebase. Google Analytics for Firebase memungkinkan Anda menarik data aplikasi seluler ke BigQuery untuk analisis lebih dalam.

Karena game adalah salah satu aplikasi target Firebase, SDK yang disediakan untuk Firebase menyertakan kerangka kerja pengembangan game lintas platform Unity. Pengembang yang mengerjakan proyek konvensional yang berfokus pada perusahaan atau menghadap konsumen memiliki banyak pilihan lain: iOS dan Android asli, C ++, web / JavaScript generik, dan bahasa lain yang mendukung REST (Java, Python, sebut saja).

Firebase dirancang untuk berfungsi dalam skenario di mana konektivitas tidak dijamin. Seperti CouchDB, CouchDB menyimpan perubahan secara lokal saat offline, dan secara otomatis disinkronkan dengan back end saat konektivitas kembali. Perhatikan bahwa Firebase tidak dirancang untuk digunakan sebagai solusi offline sepenuhnya; di Android, misalnya, basis data lokal dibatasi hingga 10 MB dalam penyimpanan.

Firebase di Google Cloud dan GitHub

Firebase tidak tersedia sebagai produk mandiri, tetapi hanya tersedia sebagai bagian dari penawaran produk cloud Google. Repositori Firebase GitHub memiliki kode sumber untuk SDK dan untuk berbagai alat khusus platform.

IBM Cloudant

Cloudant pada dasarnya adalah edisi CouchDB yang dihosting oleh IBM. Awalnya, Cloudant adalah perusahaan independen, menawarkan edisi CouchDB yang disebut "BigCouch" yang dihosting di cloud SoftLayer IBM. Pada tahun 2014, IBM mengakuisisi Cloudant secara langsung sebagai bagian dari dorongan keseluruhan IBM menuju analitik dan data besar. 

Cloudant vs. CouchDB

Cloudant dimaksudkan untuk lebih dari sekadar versi CouchDB yang dihosting. Cloudant menyediakan fitur yang tidak tersedia di CouchDB itu sendiri, seperti pencarian teks lengkap yang terintegrasi secara asli. Pencarian teks lengkap di CouchDB biasanya memerlukan integrasi dengan proyek eksternal. Data dapat direplikasi di kedua arah antara Cloudant dan instance CouchDB, sehingga relatif mudah untuk berpindah di antara keduanya sesuai kebutuhan.

Beberapa peningkatan Cloudant pada CouchDB telah menemukan jalannya kembali ke proyek CouchDB yang mendasarinya, termasuk fungsionalitas penskalaan horizontal CouchDB 2.0 dan antarmuka bahasa kueri Mango. Tetapi jangan menganggap itu sebagai bukti bahwa fitur Cloudant akan secara otomatis mengalir ke CouchDB.

Cloudant di IBM Cloud

Cloudant pada dasarnya adalah tawaran cloud di IBM Cloud, yang dapat digunakan bersama dengan produk data Cloud IBM lainnya seperti dashDB, DataWorks, dan Watson Analytics.

Cloudant Local

Edisi Cloudant di belakang firewall, yang disebut Cloudant Local, menawarkan semua fungsionalitas yang sama dengan penawaran yang dihosting di cloud. Cloudant Local tersedia di Ubuntu dan Red Hat varian x86 Linux, serta Sistem z IBM sendiri yang menjalankan Red Hat atau Suse. Pengembang dapat mengunduh versi gratis, uji-dan-pengembangan-saja dalam gambar Docker.