1.1 Cara kerja database NoSQL

Database NoSQL menggunakan berbagai model data untuk mengakses dan memanipulasi data. Jenis database ini dioptimalkan untuk aplikasi padat data yang memerlukan latensi rendah dan model data yang fleksibel. Semua ini dicapai dengan melunakkan persyaratan konsistensi data yang ketat yang khas untuk jenis database lainnya.

Pertimbangkan contoh pemodelan skema untuk database buku sederhana.

  • Dalam database relasional, entri buku sering dipecah menjadi beberapa bagian (atau "dinormalkan") dan disimpan dalam tabel terpisah yang hubungannya ditentukan oleh batasan kunci utama dan kunci asing. Dalam contoh ini, tabel Buku memiliki kolom ISBN , Judul Buku, dan "ISBN"dan"Penulis"Penulis-ISBN, danNama PenulisdanID PenuliskolomPenulistabelEdisiNomor. Model relasional dirancang untuk menjaga integritas referensial antara tabel dalam database. Data dinormalisasi untuk mengurangi redundansi dan umumnya dioptimalkan untuk penyimpanan.

  • Dalam database NoSQL, catatan buku biasanya disimpan sebagai dokumen JSON. Untuk setiap buku, atau elemen, nilai ISBN , Judul Buku , Nomor Edisi , Nama Penulis , dan ID Penulis disimpan sebagai atribut dalam satu dokumen. Dalam model ini, data dioptimalkan untuk pengembangan intuitif dan skalabilitas horizontal.

1.2 Untuk apa database NoSQL digunakan?

Basis data NoSQL sangat cocok untuk banyak aplikasi modern, seperti seluler, game, aplikasi web, yang membutuhkan basis data yang fleksibel dan dapat diskalakan dengan kinerja tinggi dan fungsionalitas kaya yang dapat memberikan kegunaan maksimum.

  • Fleksibilitas . Biasanya, database NoSQL menawarkan skema yang fleksibel, memungkinkan pengembangan lebih cepat dan memungkinkan implementasi tambahan. Karena penggunaan model data yang fleksibel, database NoSQL sangat cocok untuk data semi-terstruktur dan tidak terstruktur.

  • Skalabilitas . Basis data NoSQL dirancang untuk menskalakan menggunakan kluster perangkat keras terdistribusi, bukan dengan menambahkan server yang mahal dan andal. Beberapa penyedia layanan cloud menjalankan operasi ini di latar belakang, menyediakan layanan yang terkelola sepenuhnya.

  • Performa tinggi . Basis data NoSQL dioptimalkan untuk model data tertentu dan pola akses untuk mencapai kinerja yang lebih tinggi daripada basis data relasional.

  • Fungsionalitas luas . Database NoSQL menyediakan API kaya dan tipe data yang dirancang khusus untuk model datanya masing-masing.

1.3 Jenis database NoSQL

Basis data NoSQL digunakan di tempat yang sangat tidak nyaman untuk menyimpan data dalam bentuk tabel. Oleh karena itu, mereka disimpan dalam format yang sangat berbeda. Biasanya, ada 6 tipe data utama dari database NoSQL.

DB berdasarkan pasangan nilai kunci

Basis data yang menggunakan pasangan kunci-nilai mendukung keterpisahan yang tinggi dan memberikan penskalaan horizontal yang belum pernah ada sebelumnya yang tidak dapat dicapai dengan jenis basis data lainnya. Kasus penggunaan yang baik untuk database nilai kunci adalah aplikasi game, iklan, dan IoT.

Misalnya, Amazon DynamoDB memastikan operasi database yang stabil dengan penundaan tidak lebih dari beberapa milidetik pada skala apa pun. Performa yang kuat ini adalah alasan utama untuk memigrasikan Snapchat Stories ke DynamoDB, karena fitur Snapchat ini dikaitkan dengan beban tulis penyimpanan terbesar.

Dokumen

Dalam kode aplikasi, data sering direpresentasikan sebagai objek atau dokumen dalam format mirip JSON karena merupakan model data yang efisien dan intuitif untuk pengembang. Database dokumen memungkinkan pengembang untuk menyimpan dan meminta data dalam database menggunakan model dokumen yang sama yang mereka gunakan dalam kode aplikasi mereka. Sifat dokumen dan basis data dokumen yang fleksibel, semi-terstruktur, dan hierarkis memungkinkannya berkembang sesuai kebutuhan aplikasi.

Model dokumen bekerja dengan baik di katalog, profil pengguna, dan sistem manajemen konten di mana setiap dokumen unik dan berubah seiring waktu. Amazon DocumentDB (kompatibel dengan MongoDB) dan MongoDB adalah database dokumen umum yang menyediakan API fungsional dan intuitif untuk pengembangan tangkas.

Database grafik

Database grafik memudahkan untuk mengembangkan dan menjalankan aplikasi yang bekerja dengan kumpulan data yang kompleks. Contoh umum penggunaan database grafik adalah jejaring sosial, layanan rekomendasi, sistem deteksi penipuan, dan grafik pengetahuan. Amazon Neptune adalah layanan database grafik yang dikelola sepenuhnya. Neptune mendukung Grafik Properti dan Kerangka Deskripsi Sumber Daya (RDF), menyediakan dua API grafik untuk dipilih: TinkerPop dan RDF/SPARQL. Database grafik umum termasuk Neo4j dan Giraph.

DB dalam memori

Seringkali aplikasi game dan periklanan menggunakan papan peringkat, penyimpanan sesi, dan analitik waktu nyata. Kemampuan seperti itu membutuhkan respons dalam beberapa mikrodetik, sementara peningkatan lalu lintas yang tajam dapat terjadi kapan saja.

Amazon MemoryDB for Redis adalah layanan database dalam memori yang kompatibel dengan Redis dan andal yang mengurangi latensi baca hingga milidetik dan memberikan ketahanan di beberapa zona ketersediaan. MemoryDB dibuat khusus untuk kinerja dan keandalan yang sangat tinggi, sehingga dapat digunakan sebagai database utama untuk aplikasi berbasis layanan mikro modern.

Amazon ElastiCache adalah layanan caching dalam memori kompatibel Redis dan Memcached yang dikelola sepenuhnya untuk melayani latensi rendah, beban kerja throughput tinggi. Klien seperti Tinder yang membutuhkan aplikasi mereka untuk merespons secara waktu nyata menggunakan sistem penyimpanan dalam memori daripada sistem penyimpanan disk. Contoh lain gudang data yang dibuat khusus adalah Amazon DynamoDB Accelerator (DAX). DAX memungkinkan DynamoDB membaca data beberapa kali lebih cepat.

Cari database

Banyak aplikasi menghasilkan log untuk memudahkan pengembang memecahkan masalah dan memperbaiki masalah. Amazon OpenSearch adalah layanan yang dibuat khusus untuk visualisasi dan analitik hampir waktu nyata dari aliran data yang dihasilkan secara otomatis dengan mengindeks, menggabungkan, dan mencari log dan metrik semi-terstruktur.

Selain itu, Amazon OpenSearch adalah layanan pencarian teks lengkap yang kuat dan berkinerja tinggi. Expedia memanfaatkan lebih dari 150 domain layanan Amazon OpenSearch, 30 TB data, dan 30 miliar dokumen untuk berbagai kasus penggunaan penting, mulai dari pemantauan operasional dan pemecahan masalah hingga pelacakan tumpukan aplikasi terdistribusi dan pengoptimalan biaya.

1.4 Perbandingan database SQL (relasional) dan NoSQL (non-relasional).

NoSQL memiliki banyak keunggulan, jadi setidaknya secara teori Anda harus tahu bahwa alat yang Anda butuhkan sudah ada sebelum menulisnya sendiri. Di bawah ini saya akan memberikan perbandingan database NoSQL dan SQL:

Beban kerja yang sesuai

Database relasional dirancang untuk aplikasi pemrosesan transaksi real-time (OLTP) transaksional dan sangat konsisten dan sangat cocok untuk pemrosesan analitik real-time (OLAP).

Database NoSQL dirancang untuk bekerja dengan berbagai pola akses data, termasuk aplikasi latensi rendah. Database pencarian NoSQL dirancang untuk analitik data semi-terstruktur.

Model data

Model relasional menormalkan data dan mengubahnya menjadi tabel yang terdiri dari baris dan kolom. Skema secara kaku mendefinisikan tabel, baris, kolom, indeks, hubungan antar tabel, dan elemen database lainnya. Database semacam itu memastikan integritas data referensi dalam hubungan antar tabel.

Database NoSQL menyediakan berbagai model data seperti key-value pair, dokumen, dan grafik yang dioptimalkan untuk performa dan skalabilitas tinggi.

Properti ASAM

Basis data relasional menyediakan seperangkat properti ACID: atomisitas, konsistensi, isolasi, keandalan.

  • Atomicity mengharuskan transaksi dieksekusi secara keseluruhan atau tidak sama sekali.
  • Konsistensi berarti bahwa segera setelah transaksi selesai, data harus sesuai dengan skema database.
  • Isolasi mengharuskan transaksi paralel berjalan terpisah satu sama lain.
  • Keandalan mengacu pada kemampuan untuk memulihkan ke keadaan terakhir yang disimpan setelah kegagalan sistem yang tidak terduga atau pemadaman listrik.

Basis data NoSQL sering menawarkan kompromi, melonggarkan persyaratan kaku properti ACID demi model data yang lebih fleksibel yang memungkinkan penskalaan horizontal. Hal ini menjadikan NoSQL pilihan tepat untuk kasus penggunaan bandwidth tinggi dan latensi rendah yang memerlukan penskalaan horizontal di luar satu instans.

Pertunjukan

Kinerja terutama tergantung pada subsistem disk. Optimalisasi kueri, indeks, dan struktur tabel seringkali diperlukan untuk performa maksimal.

Performa biasanya bergantung pada ukuran klaster perangkat keras yang mendasarinya, latensi jaringan, dan aplikasi panggilan.

Penskalaan

Basis data relasional biasanya diskalakan dengan meningkatkan daya komputasi perangkat keras atau dengan menambahkan salinan terpisah untuk beban kerja baca.

Database NoSQL biasanya mendukung keterpisahan yang tinggi melalui pola akses yang dapat diskalakan berdasarkan arsitektur terdistribusi. Ini meningkatkan throughput dan memberikan kinerja yang konsisten pada skala yang hampir tidak terbatas.

API

Permintaan untuk menulis dan mengambil data ditulis dalam SQL. Kueri ini diuraikan dan dieksekusi oleh database relasional.

API berorientasi objek memungkinkan pengembang aplikasi untuk dengan mudah menulis dan mengambil struktur data. Menggunakan kunci partisi, aplikasi dapat mencari pasangan kunci-nilai, kumpulan kolom, atau dokumen semi-terstruktur yang berisi objek serial dan atribut aplikasi.