Apa itu NoSQL?

Database nonrelasional berkinerja tinggi dengan model data yang fleksibel

Apa itu database NoSQL?

Database NoSQL dibuat dengan tujuan khusus untuk model data spesifik dan memiliki skema fleksibel untuk membuat aplikasi modern. Database NoSQL dikenal secara luas karena kemudahan pengembangan, fungsionalitas, dan kinerja dalam berbagai skala. Halaman ini menyertakan sumber daya untuk membantu Anda memahami lebih baik database NoSQL dan mulai menggunakannya.

Database di AWS: Alat yang Tepat untuk Pekerjaan yang Benar

Bagaimana Cara kerja Database (nonrelasional) NoSQL?

Database NoSQL menggunakan beragam model data untuk mengakses dan mengelola data. Jenis database ini dioptimalkan secara khusus untuk aplikasi yang memerlukan volume data besar, latensi rendah, dan model data fleksibel, yang dicapai dengan mengurangi pembatasan konsistensi data dari database lainnya.

Pertimbangkan contoh pemodelan skema untuk database buku sederhana:

  • Dalam database relasional, catatan buku sering diselubungkan (atau "dinormalkan") dan disimpan dalam tabel terpisah, dan hubungan ditetapkan dengan pembatasan kunci primary dan foreign. Dalam contoh ini, tabel Buku memiliki kolom untuk ISBN, Judul Buku, dan Nomor Edisi, tabel Penulis memiliki kolom untuk IDPenulis dan Nama Penulis, dan tabel Penulis-ISBN memiliki kolom IDPenulis dan ISBN. Model relasional didesain untuk mengaktifkan database untuk menegakkan integritas referensial antara tabel di dalam database, dinormalkan untuk mengurangi redundansi, dan umumnya dioptimalkan untuk penyimpanan.
  • Dalam database NoSQL, catatan buku biasanya disimpan sebagai dokumen JSON. Untuk setiap buku, item, ISBN, Judul Buku, Nomor Edisi, Nama Penulis, dan IDPenulis disimpan sebagai atribut dalam dokumen tunggal. Dalam model ini, data dioptimalkan untuk pengembangan intuitif dan skalabilitas horizontal.

Kenapa Anda harus menggunakan database NoSQL?

Database NoSQL sangat cocok untuk digunakan dengan berbagai aplikasi modern seperti aplikasi seluler, web, dan gaming yang memerlukan database yang fleksibel, dapat diskalakan, berkinerja tinggi, dan memiliki fungsionalitas tinggi untuk memberikan pengalaman pengguna yang baik.

  • Fleksibilitas: Database NoSQL umumnya menyediakan skema fleksibel yang memungkinkan pengembangan yang lebih cepat dan lebih berulang. Model data fleksibel membuat database NoSQL ideal untuk data yang semi terstruktur dan tidak terstruktur.
  • Skalabilitas: Database NoSQL umumnya didesain untuk meningkatkan skala dengan menggunakan klaster perangkat keras yang terdistribusi alih-alih meningkatkan skala dengan menambah server yang mahal dan robust. Beberapa penyedia layanan cloud menangani aktivitas di balik operasi ini sebagai layanan yang dikelola sepenuhnya.
  • Kinerja tinggi: Database NoSQL dioptimalkan untuk model data spesifik dan pola akses yang memberikan kinerja yang lebih tinggi dibandingkan jika Anda mencoba mendapatkan fungsionalitas yang mirip dengan database relasional.
  • Fungsionalitas tinggi: Database NoSQL menyediakan API dan jenis data fungsional yang dibuat secara khusus untuk setiap model data yang sesuai.

Jenis Database NoSQL

Nilai-kunci: Database nilai kunci dapat dipartisi dan memungkinkan pengembangan horizontal pada skala yang tidak dapat dicapai oleh jenis database lain. Kasus penggunaan seperti gaming, teknologi iklan, dan IoT cukup baik dalam menggunakan model data nilai-kunci. Amazon DynamoDB didesain untuk menyediakan latensi satu-digit milidetik untuk setiap skala beban kerja. Kinerja yang konsisten ini merupakan alasan besar fitur Snapchat Stories, yang mencakup beban kerja penulisan ke penyimpanan terbesar dari Snapchat, dipindahkan ke DynamoDB.

Dokumen: Dalam kode aplikasi, data sering diwakilkan sebagai sebuah objek atau dokumen seperti JSON karena ini merupakan model data yang efisien dan intuitif untuk pengembang. Database dokumen memudahkan pengembang untuk menyimpan dan membuat kueri data dalam database dengan menggunakan format model dokumen yang sama yang mereka gunakan dalam kode aplikasi. Sifat dokumen dan database dokumen yang fleksibel, semiterstruktur, dan hierarkis memungkinkan dokumen dan database dokumen berevolusi sesuai kebutuhan aplikasi. Model dokumen berfungsi baik dengan katalog, profil pengguna, dan sistem manajemen konten di mana setiap dokumen bersifat unik dan berevolusi seiring waktu. Amazon DocumentDB (dengan kompatibilitas MongoDB) dan MongoDB merupakan database dokumen populer yang menyediakan API yang mumpuni dan intuitif untuk pengembangan yang fleksibel dan berulang.

Grafik: Database grafik bertujuan agar membuat dan menjalankan aplikasi yang berjalan dengan dataset yang selalu terhubung menjadi lebih mudah. Kasus penggunaan umum untuk database grafik antara lain jaringan media sosial, mesin rekomendasi, pendeteksian penipuan, dan grafik pengetahuan. Amazon Neptune merupakan layanan database grafik yang dikelola sepenuhnya. Neptune mendukung model Property Graph dan Resource Description Framework (RDF), memberi pilihan dua API grafik: TinkerPop dan RDF/SPARQL. Database grafik populer termasuk Neo4j dan Giraph.

Dalam memori: Aplikasi gaming dan teknologi iklan memiliki kasus penggunaan seperti leaderboard, penyimpanan sesi, dan analisis real-time yang memerlukan waktu respons milidetik dan dapat setiap saat memiliki puncak lalu lintas yang besar. Amazon MemoryDB for Redis adalah layanan basis data dalam memori yang kompatibel dengan Redis, tahan lama, yang memberikan latensi baca mikrodetik, latensi tulis milidetik satu digit, dan ketahanan Multi-AZ. MemoryDB dibuat khusus untuk memberikan performa dan daya tahan yang sangat cepat sehingga Anda dapat menggunakannya sebagai basis data primer untuk aplikasi layanan mikro modern. Amazon ElastiCache adalah layanan penyimpanan cache dalam memori terkelola penuh yang kompatibel dengan Redis dan Memcached, untuk melayani beban kerja latensi rendah dan throughput tinggi. Pelanggan seperti Tinder, yang memerlukan respons waktu-nyata dari aplikasi mereka, mengandalkan penyimpanan data dalam memori daripada penyimpanan data berbasis disk. Amazon DynamoDB Accelerator (DAX) merupakan contoh lain dari penyimpanan data yang dibuat secara khusus. DAX membuat DynamoDB membaca urutan besarnya dengan lebih cepat.

Pencarian: Beberapa output aplikasi dicatat untuk membantu pengembang untuk memecahkan masalah. Amazon OpenSearch Service dibuat secara khusus untuk memberi visualisasi hampir dalam waktu nyata dan analitik data yang dihasilkan mesin dengan membuat indeks, mengumpulkan, dan mencari log serta metrik yang semi-terstruktur. Amazon OpenSearch Service juga merupakan mesin pencari yang kuat dan mempunyai performa tinggi untuk kasus penggunaan pencarian teks lengkap. Expedia menggunakan lebih dari 150 domain Amazon OpenSearch Service, 30 TB data, dan 30 miliar dokumen untuk berbagai kasus penggunaan yang penting untuk misi, mulai dari pemantauan dan pemecahan masalah operasional hingga pelacakan tumpukan aplikasi terdistribusi dan pengoptimalan harga.

Databese SQL (relasional) vs. Database NoSQL (nonrelasional)

Selama berpuluh tahun, model data utama yang digunakan untuk pengembangan aplikasi adalah model data relasional yang digunakan oleh database relasional seperti Oracle, DB2, SQL Server, MySQL, dan PostgreSQL. Hingga pada pertengahan hingga akhir tahun 2000 model data lain mulai mendapatkan adopsi dan penggunaan yang signifikan. Untuk membedakan dan mengategorikan kelas database dan model data baru ini, istilah “NoSQL” diciptakan. Sering kali istilah “NoSQL” digunakan secara bergantian dengan “nonrelasional.”

Meskipun terdapat banyak jenis database NoSQL dengan fitur yang bervariasi, tabel berikut menunjukkan beberapa perbedaan antara database SQL dan NoSQL.

Mulai menggunakan NoSQL
  Database Relasional Database NoSQL

Beban kerja yang optimal

Database relasional didesain untuk aplikasi transaksional dan aplikasi pemrosesan transaksi online (online transaction processing, OLTP) yang sangat konsisten dan cocok digunakan untuk pemrosesan analisis online (online analytical processing, OLAP). Database NoSQL dirancang untuk sejumlah pola akses data yang menyertakan aplikasi latensi rendah. Database pencarian NoSQL dirancang untuk analitik data yang semi terstruktur. 
Model data

Model relasional menormalkan data menjadi tabel yang terdiri dari baris dan kolom. Skema secara ketat mendefinisikan tabel, baris, kolom, indeks, hubungan antara tabel, dan elemen database lain. Database ini menegakkan integritas referensial dalam hubungan antara tabel. 

Database NoSQL memberikan beragam model data, seperti nilai kunci, dokumen, grafik, yang dioptimalkan untuk kinerja dan skala. 
Properti ACID

Database relasional menyediakan properti atomicity, consistency, isolation, and durability (ACID):

  • Atomicity mengharuskan transaksi dilaksanakan seluruhnya atau tidak sama sekali.
  • Consistency mengharuskan data sesuai dengan skema database jika suatu transaksi dikomitmenkan.
  • Isolation mengharuskan transaksi konkuren dilaksanakan secara terpisah dari transaksi lainnya.
  • Durability mengharuskan adanya kemampuan untuk memulihkan dari kegagalan sistem yang tidak terduga atau pemadaman listrik ke keadaan terakhir yang diketahui.
Database NoSQL sering kali melakukan pertukaran dengan mengurangi beberapa properti ACID database relasional untuk model data yang lebih fleksibel yang dapat dikembangkan secara horizontal. Hal ini membuat database NoSQL menjadi pilihan yang luar biasa untuk kasus penggunaan dengan throughput tinggi dan latensi rendah yang memerlukan pengembangan skala secara horizontal melebihi batasan instans tunggal.
Performa Kinerja umumnya tergantung pada subsistem disk. Pengoptimalan kueri, indeks, dan struktur tabel sering kali diperlukan untuk mencapai kinerja puncak. Kinerja umumnya merupakan fungsi dari ukuran klaster perangkat keras, latensi jaringan, dan aplikasi panggilan.
Skala Database relasional umumnya dapat dikembangkan skalanya dengan meningkatkan kemampuan komputasi perangkat keras atau mengembangkan skala dengan menambahkan replika untuk beban kerja hanya-baca. Database NoSQL umumnya dapat dipartisi karena pola akses dapat dikembangkan skalanya dengan menggunakan arsitektur terdistribusi untuk meningkatkan throughput yang menyediakan kinerja yang konsisten pada skala yang tidak terbatas.
API Permintaan untuk menyimpan dan mengambil data dikomunikasikan menggunakan kueri yang sesuai dengan bahasa kueri terstruktur (SQL). Kueri ini diuraikan dan dijalankan oleh database relasional. API berbasis objek memungkinkan pengembang aplikasi menyimpan dan mengambil struktur data dengan mudah. Kunci partisi memungkinkan aplikasi mencari pasangan nilai-kunci, set kolom, atau dokumen semi terstruktur yang berisi objek dan atribut aplikasi berseri.

Terminologi SQL vs. NoSQL

Tabel berikut membandingkan terminologi yang digunakan oleh database NoSQL tertentu dengan terminologi yang digunakan oleh database SQL.

SQL MongoDB DynamoDB Cassandra  Couchbase
Tabel Pengumpulan Tabel Tabel Bucket data
Baris Dokumen Item Baris Dokumen
Kolom Bidang Atribut Kolom Bidang
Kunci Primer IdObjek Kunci Primer
Kunci Primer ID Dokumen
Indeks Indeks Indeks Sekunder Indeks Indeks
Tampilan Tampilan Indeks sekunder global Tampilan yang dimaterialkan Tampilan
Tabel atau objek nested Dokumen tertanam Peta Peta Peta
Array Array Daftar Daftar Daftar
Daftar
Daftar
Kunci Primer

Mulai menggunakan DynamoDB

Mulai menggunakan DynamoDB itu mudah. Lihat halaman web Memulai DynamoDB untuk membuat tabel pertama Anda dengan beberapa klik. Anda juga dapat mengunduh whitepaper AWS, untuk mempelajari praktik terbaik guna memigrasi beban kerja dari sistem pengelolaan database relasional (relational database management system, RDBMS) ke DynamoDB.

Apa itu Amazon DynamoDB?