Keistimewaan NoSQL: Pangkalan data nilai-kunci terbaik dibandingkan

Sebilangan besar aplikasi memerlukan beberapa bentuk ketekunan - cara untuk menyimpan data di luar aplikasi untuk disimpan. Cara yang paling asas adalah menulis data ke sistem fail, tetapi dengan cepat dapat menjadi cara yang perlahan dan tidak berat untuk menyelesaikan masalah. Pangkalan data yang lengkap menyediakan cara yang kuat untuk mengindeks dan mengambil data, tetapi mungkin juga berlebihan. Kadang-kadang, semua yang anda perlukan adalah cara cepat untuk mengambil maklumat berbentuk bebas, mengaitkannya dengan label, menyimpannya di suatu tempat, dan menariknya kembali dalam sekejap.

Masuk ke kedai nilai kunci. Ini pada dasarnya adalah pangkalan data NoSQL, tetapi satu dengan tujuan yang sangat spesifik dan reka bentuk yang sengaja dikekang. Tugasnya adalah membiarkan anda mengambil data (nilai), menerapkan label padanya (kunci), dan menyimpannya sama ada di dalam memori atau di beberapa sistem penyimpanan yang dioptimumkan untuk pengambilan cepat. Aplikasi menggunakan pangkalan data nilai-kunci untuk segala-galanya dari mencache objek hingga berkongsi data yang biasa digunakan di antara nod aplikasi.

Banyak pangkalan data perhubungan dapat berfungsi sebagai kedai nilai utama, tetapi seperti menggunakan traktor-treler untuk menjalankan runcit. Ia berfungsi, tetapi secara dramatik tidak cekap, dan ada cara yang jauh lebih ringan untuk menyelesaikan masalah tersebut. Sebuah kedai nilai-kunci, seperti pangkalan data NoSQL yang lain, menyediakan infrastruktur yang cukup untuk penyimpanan dan pengambilan nilai sederhana, berintegrasi secara lebih langsung dengan aplikasi yang menggunakannya, dan menimbang dengan cara yang lebih terperinci dengan beban kerja aplikasi.

Ciri-ciri pangkalan data NoSQL nilai utama dibandingkan

Lima produk yang digunakan secara meluas (termasuk satu perkhidmatan awan) perlu dipertimbangkan; mereka dinyatakan secara eksplisit sebagai pangkalan data nilai-kunci atau menawarkan penyimpanan nilai-kunci sebagai ciri utama. Perbezaan asas mereka:

  • Hazelcast dan Memcached cenderung ke arah minimalisme, dan bahkan tidak repot-repot membuat sandaran data pada cakera.
  • Aerospike, Cosmos DB, dan Redis mempunyai ciri yang lebih lengkap, tetapi masih berkisar pada metafora nilai-kunci.

Jadual: Produk pangkalan data NoSQL nilai utama dibandingkan

L W M S I A O

* Melalui pelaksanaan pihak ketiga.

Kunci: = Linux, = Windows, = MacOS, = Solaris, = iOS, = Android, = Lain-lain.
  Aeroangkasa Hazelcast IMDG Microsoft Azure Cosmos DB Memcached Redis
Pelantar LWMO Jawa Awan sahaja LWMO LWMO
Versi terkini 3.14.1.1 3.9 N / A 1.5.1 4.0.1
Pelepasan awal 2012 2008 2017 2003 2009
Lesen AGPL Apache 2 Hak Milik BSD BSD
Disokong cakera Ya Tidak Ya Tidak YaBSD
Penggabungan Ya Ya Ya Tidak Ya
Sharding / partitioning Ya Ya Ya Tidak Ya
Skrip asli Ya Jawa Ya Tidak Ya
Urus Niaga Setiap kunci Ya Ya Tidak Ya
Boleh dilekatkan Ya *

Ya Tidak Ya *

Ya *

Pangkalan data NoSQL nilai kunci Aerospike secara mendalam

Sekiranya Redis dipalsukan pada steroid, Aerospike boleh dikatakan sebagai Redis pada steroid. Seperti Redis, Aerospike adalah kedai nilai-kunci yang dapat beroperasi sebagai pangkalan data berterusan atau cache data. Aerospike direka agar mudah dikumpulkan dan senang ditimbang, untuk menyokong beban kerja perusahaan dengan lebih baik.

Ciri-ciri unik untuk Aerospike

Banyak di Aerospike menggemakan kedua-dua kedai nilai kunci dan pangkalan data NoSQL yang lain. Data disimpan dan diambil melalui kunci, dan data dapat disimpan dalam sejumlah jenis data asas, termasuk bilangan bulat 64-bit, rentetan, pelampung tepat dua kali, dan data binari mentah yang diselaraskan dari sejumlah bahasa pengaturcaraan biasa.

Aerospike juga dapat menyimpan data dalam jenis yang kompleks — daftar nilai, koleksi pasangan kunci-nilai yang disebut peta, dan data geospasial dalam format GeoJSON. Aerospike dapat melakukan pemprosesan asli pada data geospasial — seperti untuk menentukan lokasi yang tersimpan dalam pangkalan data yang paling dekat satu sama lain dengan hanya melakukan pertanyaan — menjadikannya pilihan menarik bagi pembangun aplikasi yang bergantung pada lokasi.

Data yang disimpan di Aerospike dapat disusun ke dalam beberapa wadah hierarki. Beberapa sistem NoSQL berorientasikan dokumen, yang bermaksud data dikemas dalam beberapa jenis objek, biasanya JSON. Dengan Aerospike, kontena kira-kira seperti dokumen, tetapi dengan fungsi dan tingkah laku khusus untuk Aerospike. Setiap jenis bekas membolehkan anda menetapkan sifat tingkah laku yang berbeza pada data di dalamnya.

Contohnya, tingkat paling atas dari bekas, ruang nama, menentukan sama ada data disimpan pada cakera, dalam RAM, atau kedua-duanya; sama ada data ditiru dalam kelompok atau merentasi kelompok; dan bila atau bagaimana data tamat atau diusir. Melalui ruang nama, Aerospike membolehkan pembangun menyimpan data yang paling sering diakses dalam memori untuk mendapatkan tindak balas secepat mungkin.

Bagaimana Aerospike menangani penyimpanan dan pengelompokan

Aerospike dapat menyimpan datanya di hampir semua sistem fail, tetapi ia ditulis khusus untuk memanfaatkan SSD. Yang demikian, jangan berharap untuk menjatuhkan Aerospike pada SSD lama dan mengharapkan hasil yang baik. Pembangun Aerospike menyimpan senarai peranti SSD yang diluluskan, dan mereka telah membuat alat yang disebut ACT untuk menilai prestasi peranti storan SSD di bawah beban kerja Aerospike.

Aerospike, seperti kebanyakan sistem NoSQL, menggunakan seni bina bersama-sama untuk replikasi dan pengelompokan. Aerospike tidak mempunyai nod utama dan tidak ada pelindung manual. Setiap nod adalah serupa. Data diedarkan secara rawak ke seluruh node dan diimbangi semula secara automatik untuk mengelakkan kemacetan terbentuk. Sekiranya anda mahu, anda boleh menetapkan peraturan bagaimana data diimbangi secara agresif. Anda boleh mengkonfigurasi beberapa kelompok, berjalan di segmen rangkaian yang berbeza atau bahkan pusat data yang berbeza, untuk diselaraskan antara satu sama lain.

Skrip dalam Aerospike

Seperti Redis, Aerospike membolehkan pembangun menulis skrip Lua, atau UDF (fungsi yang ditentukan pengguna), yang berjalan di dalam mesin Aerospike. Anda boleh menggunakan UDF untuk membaca atau mengubah rekod, tetapi lebih baik menggunakannya untuk melakukan operasi berkelajuan tinggi, hanya baca, mengurangkan peta di seluruh koleksi, atau "aliran", rekod di beberapa nod.

Di mana untuk mendapatkan Aerospike

Edisi komuniti Aerospike boleh dimuat turun terus dari laman web Aerospike. Ini termasuk edisi pelayan untuk Linux, versi desktop untuk MacOS Apple dan Windows Microsoft, edisi awan untuk Amazon EC2, Azure, dan Google Compute Engine, dan bekas Docker. Edisi perusahaan Aerospike boleh didapati melalui program Quick Start Aerospike, yang menyediakan versi percubaan 90 hari tanpa had.

Kod sumber terdapat di GitHub.

Pangkalan data NoSQL nilai kunci IMDG Hazelcast secara mendalam

Hazelcast dibebankan sebagai "grid data dalam memori," pada dasarnya adalah cara untuk mengumpulkan sumber RAM dan CPU di beberapa mesin untuk membolehkan set data diedarkan di mesin tersebut dan dimanipulasi dalam memori.

Pangkalan data NoSQL menawarkan ciri-ciri nilai, grafik, atau dokumen. Hazelcast menumpukan pada fungsi nilai kunci, menekankan akses cepat ke data yang diedarkan. Menurut pembuatnya, ia juga boleh digunakan sebagai alternatif untuk produk seperti Pivotal Gemfire, Software Terracotta, dan Oracle Coherence.

Hazelcast dapat dijalankan sebagai perkhidmatan yang diedarkan atau disematkan secara langsung di dalam aplikasi Java. Pelanggan tersedia untuk Java, Scala, .Net, C / C ++, Python, dan Node.js, dan satu untuk Go sedang dalam proses.

Ciri-ciri yang unik untuk Hazelcast

Hazelcast dibangun dengan Java dan memiliki ekosistem berpusat pada Java. Setiap simpul dalam kelompok Hazelcast menjalankan contoh perpustakaan teras Hazelcast, IMDG, di JVM. Cara kerja Hazelcast dengan data juga dipetakan dekat dengan struktur bahasa Java. Antara muka Peta Java, misalnya, digunakan oleh Hazelcast untuk menyediakan penyimpanan nilai-kunci. Seperti Memcached, tidak ada yang ditulis ke cakera; semuanya disimpan dalam ingatan setiap masa.

Salah satu manfaat yang dapat diberikan Hazelcast dalam lingkungan yang diedarkan adalah "dekat cache," di mana objek yang biasanya diminta dimigrasikan ke pelayan yang membuat permintaan. Dengan cara ini, permintaan dapat dilakukan secara langsung dalam memori pada sistem yang sama, tanpa memerlukan perjalanan pulang-pergi di seluruh rangkaian.

Selain pasangan nilai-kunci, anda boleh menyimpan dan menyebarkan pelbagai jenis struktur data lain melalui Hazelcast. Beberapa adalah implementasi sederhana dari objek Java, seperti Peta. Yang lain khusus untuk Hazelcast. MultiMap, misalnya, adalah varian pada penyimpanan nilai kunci yang dapat menyimpan beberapa nilai di bawah kunci yang sama. Ciri-ciri ini memungkinkan untuk meniru beberapa tingkah laku sistem NoSQL lain, seperti mengatur data ke dalam dokumen, tetapi penekanannya adalah pada struktur yang memungkinkan data diedarkan dan diakses dengan cepat.

Bagaimana Hazelcast menangani pengelompokan

Kumpulan Hazelcast tidak mempunyai persediaan tuan / hamba; semuanya peer-to-peer. Data dikumpulkan dan diedarkan secara automatik ke seluruh anggota kluster. Anda juga boleh menetapkan anggota kluster tertentu sebagai "lite", yang tidak menyimpan data pada mulanya tetapi kemudian dapat dipromosikan menjadi anggota penuh. Ini membolehkan beberapa nod digunakan dengan ketat untuk pengiraan, atau untuk menyebarkan data secara beransur-ansur melalui kluster semasa ia dibawa dalam talian.

Hazelcast juga dapat memastikan operasi berjalan hanya jika sekurang-kurangnya sebilangan nod berada dalam talian. Walau bagaimanapun, anda harus mengkonfigurasi tingkah laku ini secara manual, dan ia hanya berfungsi untuk struktur data tertentu. Pada Hazelcast Versi 3.9, anda boleh mengkonfigurasi semula struktur data di seluruh kelompok tanpa perlu membawanya ke luar talian terlebih dahulu.

Di mana untuk mendapatkan Hazelcast

Hazelcast boleh dimuat turun terus dari laman Hazelcast. Biasanya digunakan sebagai kumpulan file Java .JAR. Gambar Docker juga terdapat di pendaftaran rasmi Docker.

Anda boleh memuat turun edisi perusahaan Hazelcast terus dari Hazelcast. Anda juga boleh mendapatkan kunci percubaan percuma selama 30 hari untuk Hazelcast.

Pangkalan data NoSQL nilai-kunci yang dicatatkan secara mendalam

Memcached sama asas dan pantas dengan penyimpanan nilai kunci. Awalnya ditulis sebagai lapisan akselerasi untuk platform blog LiveJournal, Memcached sejak itu menjadi komponen tumpukan teknologi web di mana-mana. Sekiranya anda mempunyai banyak fragmen kecil data yang dapat dikaitkan dengan kunci sederhana dan tidak perlu ditiru antara contoh cache, Memcached adalah alat yang tepat.

Ciri-ciri yang unik untuk Memcached

Memcached paling sering digunakan untuk menyimpan pertanyaan dari pangkalan data dan menyimpan hasilnya secara eksklusif dalam memori. Sehubungan dengan itu, ia tidak seperti banyak pangkalan data NoSQL lain, nilai kunci atau sebaliknya, kerana mereka menyimpan data dalam beberapa bentuk berterusan. 

Memcached tidak mengembalikan simpanan datanya ke apa-apa. Semua kekunci dipegang hanya dalam memori, sehingga mereka menguap setiap kali Memcached instance atau pelayan yang menghostingnya diset semula. Oleh itu, Memcached tidak dapat digunakan sebagai pengganti pangkalan data NoSQL.

Namun, apa yang dapat digunakannya adalah cara berkelajuan tinggi untuk menyimpan data yang biasa digunakan yang mungkin memerlukan pesanan besar lebih banyak waktu untuk membuat pertanyaan dari sumber.

Segala data yang dapat diselaraskan ke aliran binari boleh disimpan di Memcached. Nilai dapat ditetapkan untuk berakhir setelah jangka waktu tertentu, atau berdasarkan permintaan, dengan merujuk kunci nilai dari aplikasi. Jumlah memori yang anda curahkan untuk setiap contoh Memcached sepenuhnya bergantung kepada anda, dan beberapa pelayan dapat menjalankan Memcached berdampingan untuk menyebarkan beban. Selanjutnya, skala Memcached secara linear dengan jumlah inti yang terdapat dalam sistem kerana merupakan aplikasi multithreaded.

Bahasa pengaturcaraan yang paling popular mempunyai perpustakaan pelanggan untuk Memcached. Sebagai contoh, libmemcachedmembolehkan program C dan C ++ berfungsi secara langsung dengan contoh Memcached. Ini juga memungkinkan Memcached tertanam dalam program C.

Bagaimana Memcached menangani pengelompokan

Walaupun anda dapat menjalankan beberapa contoh Memcached, sama ada di pelayan yang sama atau di beberapa node di seluruh rangkaian, tidak ada persekutuan automatik atau penyegerakan data di antara beberapa kejadian. Data yang dimasukkan ke dalam instance Memcached hanya tersedia dari instance, periode.

Di mana untuk mendapatkan Memcached

Kod sumber Memcached tersedia untuk dimuat turun dari GitHub dan dari laman web rasmi Memcached. Binari Linux tersedia di repositori untuk sebilangan besar pengedaran Linux. Pengguna Windows boleh membinanya secara langsung dari sumber; beberapa binari tidak rasmi telah dibina pada masa lalu tetapi nampaknya tidak boleh dipercayai.

Pangkalan data NoSQL nilai kunci Microsoft Azure Cosmos DB secara mendalam

Sebilangan besar pangkalan data mempunyai satu paradigma menyeluruh: kedai dokumen, stor nilai-kunci, stor lajur lebar, pangkalan data grafik, dan sebagainya. Tidak begitu Azure Cosmos DB. Berasal dari pangkalan data NoSQL Microsoft sebagai perkhidmatan, DocumentDB, Cosmos DB adalah usaha Microsoft untuk membuat satu pangkalan data yang dapat menggunakan pelbagai paradigma.

Ciri unik untuk Azure Cosmos DB

Cosmos DB menggunakan sistem penyimpanan urutan rekod-atom untuk menyokong model data yang berbeza. Atom adalah jenis primitif seperti rentetan, integer, dan nilai Boolean. Rekod adalah kumpulan atom, seperti struktur dalam C. Urutan adalah susunan sama ada atom atau rekod.

Cosmos DB menggunakan blok bangunan ini untuk meniru tingkah laku pelbagai jenis pangkalan data. Ia dapat menghasilkan semula tingkah laku jadual yang terdapat dalam pangkalan data hubungan konvensional. Tetapi ia juga dapat menghasilkan semula fungsi jenis data yang terdapat dalam sistem NoSQL - dokumen JSON tanpa skema (DocumentDB dan MongoDB) dan grafik (Gremlin, Apache TinkerPop).