Keunggulan NoSQL: Database nilai kunci terbaik dibandingkan

Sebagian besar aplikasi memerlukan beberapa bentuk persistensi — cara untuk menyimpan data di luar aplikasi untuk diamankan. Cara paling dasar adalah menulis data ke sistem file, tetapi itu bisa dengan cepat menjadi cara yang lambat dan sulit untuk menyelesaikan masalah. Basis data lengkap menyediakan cara yang ampuh untuk mengindeks dan mengambil data, tetapi mungkin juga berlebihan. Terkadang, yang Anda butuhkan hanyalah cara cepat untuk mengambil informasi dalam bentuk bebas, mengaitkannya dengan label, menyimpannya di suatu tempat, dan menariknya keluar lagi dalam sekejap.

Masukkan penyimpanan nilai kunci. Ini pada dasarnya adalah database NoSQL, tetapi satu dengan tujuan yang sangat spesifik dan desain yang sengaja dibatasi. Tugasnya adalah membiarkan Anda mengambil data (nilai), menerapkan label padanya (kunci), dan menyimpannya di dalam memori atau di beberapa sistem penyimpanan yang dioptimalkan untuk pengambilan cepat. Aplikasi menggunakan basis data nilai kunci untuk segala hal mulai dari objek cache hingga berbagi data yang umum digunakan di antara node aplikasi.

Banyak database relasional dapat berfungsi sebagai penyimpanan nilai kunci, tetapi itu mirip seperti menggunakan trailer traktor untuk pergi ke toko bahan makanan. Ini berhasil, tetapi sangat tidak efisien, dan ada cara yang jauh lebih ringan untuk menyelesaikan masalah. Penyimpanan nilai kunci, seperti database NoSQL lainnya, menyediakan infrastruktur yang cukup untuk penyimpanan dan pengambilan nilai sederhana, terintegrasi lebih langsung dengan aplikasi yang menggunakannya, dan menskalakan secara lebih terperinci dengan beban kerja aplikasi.

Dibandingkan fitur database NoSQL nilai kunci

Lima produk yang banyak digunakan (termasuk satu layanan cloud) patut Anda pertimbangkan; mereka secara eksplisit ditagih sebagai database nilai kunci atau menawarkan penyimpanan nilai kunci sebagai fitur utama. Perbedaan mendasar mereka:

  • Hazelcast dan Memcached cenderung ke arah minimalis, dan bahkan tidak repot-repot mencadangkan data di disk.
  • Aerospike, Cosmos DB, dan Redis memiliki fitur yang lebih lengkap, tetapi masih berputar di sekitar metafora nilai kunci.

Tabel: Produk database NoSQL nilai kunci dibandingkan

L W M S I A O

* Melalui implementasi pihak ketiga.

Kunci: = Linux, = Windows, = MacOS, = Solaris, = iOS, = Android, = Lainnya.
  Aerospike Hazelcast IMDG Microsoft Azure Cosmos DB Memcached Redis
Platform LWMO Jawa Hanya cloud LWMO LWMO
Versi sekarang 3.14.1.1 3.9 T / A 1.5.1 4.0.1
Peluncuran pertama 2012 2008 2017 2003 2009
Lisensi AGPL Apache 2 Hak milik BSD BSD
Didukung disk Iya Tidak Iya Tidak YesBSD
Kekelompokan Iya Iya Iya Tidak Iya
Sharding / partisi Iya Iya Iya Tidak Iya
Skrip asli Iya Jawa Iya Tidak Iya
Transaksi Per kunci Iya Iya Tidak Iya
Dapat disematkan Iya*

Iya Tidak Iya*

Iya*

Database NoSQL nilai kunci dirgantara secara mendalam

Jika Redis Dimasukkan dengan steroid, Aerospike bisa dikatakan sebagai Redis dengan steroid. Seperti Redis, Aerospike adalah penyimpanan nilai kunci yang dapat beroperasi sebagai database persisten atau cache data. Aerospike dirancang agar mudah dikelompokkan dan diskalakan, untuk mendukung beban kerja perusahaan dengan lebih baik.

Fitur unik untuk Aerospike

Banyak di Aerospike menggemakan penyimpanan nilai kunci lainnya dan database NoSQL lainnya. Data disimpan dan diambil melalui kunci, dan data dapat disimpan dalam beberapa tipe data fundamental, termasuk 64-bit integer, string, double-precision float, dan raw binary data serialized dari sejumlah bahasa pemrograman umum.

Aerospike juga dapat menyimpan data dalam tipe yang kompleks — daftar nilai, kumpulan pasangan kunci-nilai yang disebut peta, dan data geospasial dalam format GeoJSON. Aerospike dapat melakukan pemrosesan asli pada data geospasial — seperti menentukan lokasi mana yang disimpan dalam database yang paling dekat satu sama lain hanya dengan melakukan kueri — menjadikannya opsi yang menarik bagi pengembang aplikasi yang mengandalkan lokasi.

Data yang disimpan di Aerospike dapat diatur ke dalam beberapa wadah hierarki. Beberapa sistem NoSQL berorientasi dokumen, artinya data dienkapsulasi dalam beberapa jenis objek, biasanya JSON. Dengan Aerospike, container hampir seperti dokumen, tetapi dengan fungsi dan perilaku khusus untuk Aerospike. Setiap jenis penampung memungkinkan Anda menyetel properti perilaku yang berbeda pada data di dalamnya.

Misalnya, level paling atas dari container, namespace, menentukan apakah data disimpan di disk, di RAM, atau keduanya; apakah data direplikasi di cluster atau di seluruh cluster; dan kapan atau bagaimana data kedaluwarsa atau dikeluarkan. Melalui ruang nama, Aerospike memungkinkan pengembang menyimpan data yang paling sering diakses di memori untuk respons secepat mungkin.

Bagaimana Aerospike menangani penyimpanan dan pengelompokan

Aerospike dapat menyimpan datanya di hampir semua sistem file, tetapi telah ditulis secara khusus untuk memanfaatkan SSD. Karena itu, jangan berharap untuk menjatuhkan Aerospike pada SSD lama mana pun dan mengharapkan hasil yang baik. Pengembang Aerospike menyimpan daftar perangkat SSD yang disetujui, dan mereka telah membuat alat yang disebut ACT untuk menilai kinerja perangkat penyimpanan SSD di bawah beban kerja Aerospike.

Aerospike, seperti kebanyakan sistem NoSQL, menggunakan arsitektur shared-nothing demi replikasi dan pengelompokan. Aerospike tidak memiliki node master dan tidak ada sharding manual. Setiap node identik. Data didistribusikan secara acak di seluruh node dan secara otomatis diseimbangkan ulang untuk mencegah terjadinya bottleneck. Jika mau, Anda dapat menetapkan aturan tentang seberapa agresif data diimbangi kembali. Anda dapat mengkonfigurasi beberapa cluster, berjalan di segmen jaringan yang berbeda atau bahkan pusat data yang berbeda, untuk melakukan sinkronisasi satu sama lain.

Scripting di Aerospike

Seperti Redis, Aerospike memungkinkan pengembang untuk menulis skrip Lua, atau UDF (fungsi yang ditentukan pengguna), yang berjalan di dalam mesin Aerospike. Anda dapat menggunakan UDF untuk membaca atau mengubah record, tetapi yang terbaik adalah menggunakannya untuk melakukan operasi kecepatan tinggi, read-only, pengurangan peta di seluruh koleksi, atau "stream", record pada beberapa node.

Dimana mendapatkan Aerospike

Edisi komunitas Aerospike dapat diunduh langsung dari situs web Aerospike. Ini termasuk edisi server untuk Linux, versi desktop untuk Apple MacOS dan Microsoft Windows, edisi cloud untuk Amazon EC2, Azure, dan Google Compute Engine, dan kontainer Docker. Edisi perusahaan Aerospike tersedia melalui program Mulai Cepat Aerospike, yang menyediakan versi percobaan 90 hari tanpa batas.

Kode sumber tersedia di GitHub.

Database NoSQL nilai kunci IMDG Hazelcast secara mendalam

Hazelcast disebut sebagai "kisi data dalam memori," yang pada dasarnya merupakan cara untuk mengumpulkan sumber daya RAM dan CPU di beberapa mesin untuk memungkinkan kumpulan data didistribusikan ke seluruh mesin tersebut dan dimanipulasi dalam memori.

Database NoSQL menawarkan fitur nilai kunci, grafik, atau dokumen. Hazelcast berkonsentrasi pada fungsionalitas nilai kunci, menekankan akses cepat ke data terdistribusi. Menurut pembuatnya, ini juga dapat digunakan sebagai alternatif untuk produk seperti Pivotal Gemfire, Software Terracotta, dan Oracle Coherence.

Hazelcast dapat dijalankan sebagai layanan terdistribusi atau disematkan langsung di dalam aplikasi Java. Klien tersedia untuk Java, Scala, .Net, C / C ++, Python, dan Node.js, dan satu untuk Go sedang dalam pengerjaan.

Fitur unik untuk Hazelcast

Hazelcast dibangun dengan Java dan memiliki ekosistem yang berpusat pada Java. Setiap node dalam cluster Hazelcast menjalankan instance pustaka inti Hazelcast, IMDG, di JVM. Cara kerja Hazelcast dengan data juga dipetakan secara dekat ke struktur bahasa Java. Antarmuka Peta Java, misalnya, digunakan oleh Hazelcast untuk menyediakan penyimpanan nilai kunci. Seperti Memcache, tidak ada yang ditulis ke disk; semuanya disimpan dalam memori setiap saat.

Salah satu manfaat yang dapat diberikan Hazelcast dalam lingkungan terdistribusi adalah "near cache", di mana objek yang biasanya diminta dipindahkan ke server yang membuat permintaan. Dengan cara ini, permintaan dapat dilakukan secara langsung di dalam memori pada sistem yang sama, tanpa memerlukan perjalanan bolak-balik melintasi jaringan.

Selain pasangan nilai-kunci, Anda dapat menyimpan dan mendistribusikan banyak jenis struktur data lainnya melalui Hazelcast. Beberapa adalah implementasi sederhana dari objek Java, seperti Map. Lainnya khusus untuk Hazelcast. MultiMap, misalnya, adalah varian pada penyimpanan nilai kunci yang dapat menyimpan beberapa nilai di bawah kunci yang sama. Fitur-fitur ini memungkinkan untuk meniru beberapa perilaku sistem NoSQL lainnya, seperti mengatur data ke dalam dokumen, tetapi penekanannya ada pada struktur yang memungkinkan data untuk didistribusikan dan diakses dengan cepat.

Bagaimana Hazelcast menangani pengelompokan

Cluster Hazelcast tidak memiliki pengaturan master / slave; semuanya peer-to-peer. Data secara otomatis dibagi dan didistribusikan ke semua anggota cluster. Anda juga dapat menetapkan anggota cluster tertentu sebagai "lite", yang pada awalnya tidak menyimpan data tetapi kemudian dapat dipromosikan menjadi anggota penuh. Ini memungkinkan beberapa node digunakan secara ketat untuk komputasi, atau untuk mendistribusikan data secara bertahap melalui cluster saat sedang online.

Hazelcast juga dapat memastikan bahwa operasi dilanjutkan hanya jika setidaknya sejumlah node sedang online. Namun, Anda harus mengkonfigurasi perilaku ini secara manual, dan ini hanya berfungsi untuk struktur data tertentu. Mulai Hazelcast Versi 3.9, Anda dapat mengonfigurasi ulang struktur data di seluruh kluster tanpa harus membuatnya offline terlebih dahulu.

Di mana mendapatkan Hazelcast

Hazelcast tersedia untuk diunduh langsung dari situs Hazelcast. Ini biasanya digunakan sebagai kumpulan file Java .JAR. Image Docker juga tersedia di registri resmi Docker.

Anda dapat mengunduh edisi perusahaan Hazelcast langsung dari Hazelcast. Anda juga bisa mendapatkan kunci uji coba gratis selama 30 hari untuk Hazelcast.

Database NoSQL nilai kunci memcache secara mendalam

Memcache adalah hal mendasar dan secepat penyimpanan nilai kunci. Awalnya ditulis sebagai lapisan akselerasi untuk platform blog LiveJournal, Memcached sejak itu menjadi komponen tumpukan teknologi web di mana-mana. Jika Anda memiliki banyak fragmen kecil data yang dapat dikaitkan dengan kunci sederhana dan tidak perlu direplikasi antar instance cache, Memcache adalah alat yang tepat.

Fitur unik untuk Memcached

Memcache paling sering digunakan untuk kueri cache dari database dan menyimpan hasilnya secara eksklusif di memori. Dalam hal ini, tidak seperti banyak database NoSQL lainnya, nilai kunci atau lainnya, karena mereka menyimpan data dalam beberapa bentuk persisten. 

Memcached tidak mendukung penyimpanan datanya ke apa pun. Semua kunci hanya disimpan di memori, jadi kunci tersebut menguap setiap kali instance Memcache atau server yang menghostingnya disetel ulang. Jadi, Memcache tidak dapat benar-benar digunakan sebagai pengganti database NoSQL.

Namun, kegunaannya adalah cara kecepatan tinggi untuk menyimpan data yang umum digunakan yang mungkin membutuhkan waktu lebih lama untuk melakukan kueri dari suatu sumber.

Semua data yang dapat diserialkan ke aliran biner dapat disimpan di Memcache. Nilai dapat diatur untuk kedaluwarsa setelah jangka waktu tertentu, atau sesuai permintaan, dengan mereferensikan kunci ke nilai dari aplikasi. Jumlah memori yang Anda curahkan untuk setiap instance tertentu dari Memcache sepenuhnya terserah Anda, dan beberapa server dapat menjalankan Memcache berdampingan untuk menyebarkan beban. Lebih lanjut, Memcached menskalakan secara linier dengan jumlah inti yang tersedia dalam sistem karena ini adalah aplikasi multithread.

Bahasa pemrograman paling populer memiliki pustaka klien untuk Memcached. Misalnya, libmemcachedmengizinkan program C dan C ++ untuk bekerja secara langsung dengan instance Memcache. Ini juga memungkinkan Memcache disematkan dalam program C.

Bagaimana Memcached menangani pengelompokan

Meskipun Anda dapat menjalankan beberapa contoh Memcache, baik di server yang sama atau di beberapa node di seluruh jaringan, tidak ada federasi otomatis atau sinkronisasi data di antara instance. Data yang dimasukkan ke dalam contoh Memcache hanya tersedia dari contoh itu, titik.

Di mana mendapatkan Memcache

Kode sumber Memcached tersedia untuk diunduh dari GitHub dan dari situs resmi Memcached. Biner Linux tersedia di repositori untuk sebagian besar distribusi Linux. Pengguna Windows dapat membangunnya langsung dari sumber; beberapa biner tidak resmi telah dibuat sebelumnya tetapi tampaknya tidak tersedia dengan andal.

Database NoSQL nilai kunci Microsoft Azure Cosmos DB secara mendalam

Kebanyakan database memiliki satu paradigma menyeluruh: penyimpanan dokumen, penyimpanan nilai kunci, penyimpanan kolom lebar, database grafik, dan sebagainya. Tidak demikian halnya dengan Azure Cosmos DB. Berasal dari database NoSQL Microsoft sebagai layanan, DocumentDB, Cosmos DB adalah upaya Microsoft untuk membuat database tunggal yang dapat menggunakan banyak paradigma.

Fitur unik Azure Cosmos DB

Cosmos DB menggunakan apa yang disebut sistem penyimpanan urutan-catatan atom untuk mendukung model data yang berbeda. Atom adalah tipe primitif seperti string, integer, dan nilai Boolean. Rekaman adalah kumpulan atom, seperti struct di C. Urutan adalah array dari atom atau catatan.

Cosmos DB menggunakan blok bangunan ini untuk mereplikasi perilaku beberapa tipe database. Ini dapat mereproduksi perilaku tabel yang ditemukan dalam database relasional konvensional. Tetapi itu juga dapat mereproduksi fungsionalitas tipe data yang ditemukan di sistem NoSQL — dokumen JSON tanpa skema (DocumentDB dan MongoDB) dan grafik (Gremlin, Apache TinkerPop).