Apa itu basis data NoSQL?
Basis data NoSQL dibuat khusus untuk model data tertentu dan menyimpan data dalam skema fleksibel yang mudah diskalakan untuk aplikasi modern. Basis data NoSQL dikenal secara luas karena kemudahan pengembangan, fungsionalitas, dan performa dalam berbagai skala. Halaman ini menyertakan sumber daya untuk membantu Anda memahami basis data NoSQL dengan lebih baik dan untuk memulainya.
Apa saja keuntungan dari basis data NoSQL
Aplikasi modern menghadapi beberapa tantangan yang dapat diselesaikan oleh basis data NoSQL. Misalnya, aplikasi memproses volume data yang besar dari sumber yang berbeda, seperti media sosial, sensor pintar, dan basis data pihak ketiga. Semua data yang berbeda ini tidak cocok dengan model relasional. Menerapkan struktur tabel dapat menyebabkan redundansi, duplikasi data, dan masalah performa dalam skala besar.
Basis data NoSQL dibuat khusus untuk model data nonrelasional dan memiliki skema fleksibel untuk membangun aplikasi modern. Basis data NoSQL dikenal secara luas karena kemudahan pengembangan, fungsionalitas, dan performa dalam skala besar. Manfaat basis data NoSQL tercantum di bawah ini.
Fleksibilitas
Basis data NoSQL umumnya menyediakan skema fleksibel yang memungkinkan pengembangan yang lebih cepat dan lebih berulang. Model data fleksibel membuat basis data NoSQL ideal untuk data yang semi terstruktur dan tidak terstruktur.
Skalabilitas
Basis data NoSQL umumnya didesain untuk menskalakan ke luar menggunakan klaster perangkat keras yang terdistribusi alih-alih menaikkan skala dengan menambah server yang mahal dan andal. Beberapa penyedia layanan cloud menangani aktivitas di balik operasi ini sebagai layanan terkelola penuh.
Performa tinggi
Basis data NoSQL dioptimalkan untuk model data tertentu dan pola akses. Hal ini memungkinkan performa yang lebih tinggi daripada jika Anda mencoba mencapai fungsionalitas serupa dengan basis data relasional.
Sangat fungsional
Basis data NoSQL menyediakan API dan tipe data fungsional yang dibuat secara khusus untuk setiap model datanya.
Apa saja kasus penggunaan basis data NoSQL
Anda dapat menggunakan basis data NoSQL untuk membangun berbagai aplikasi seluler, Internet untuk Segala (IoT), game, dan web beperforma tinggi yang memberikan pengalaman pengguna yang hebat dalam skala besar. Jangkauan basis data NoSQL dan kasus penggunaannya sangat luas. Meski sulit untuk menyajikan serangkaian kasus penggunaan yang representatif, di bawah ini kami memberikan beberapa contoh ilustrasi sebagai permulaan dan mendorong Anda untuk mempelajari selengkapnya mengenai setiap basis data NoSQL dan kasus penggunaannya.
Manajemen data waktu nyata
Anda dapat memberikan rekomendasi waktu nyata, personalisasi, dan pengalaman pengguna yang lebih baik dengan basis data NoSQL. Misalnya, Disney+ memberikan pustaka konten digital yang luas kepada lebih dari 150 juta pelanggan menggunakan teknologi basis data NoSQL. Basis data NoSQL dapat menskalakan dan menghadirkan fitur populer, seperti Lanjutkan Menonton, Daftar Tonton, dan Rekomendasi yang Dipersonalisasi dengan Amazon DynamoDB.
Keamanan cloud
Anda dapat menggunakan basis data grafik untuk menemukan hubungan kompleks dengan cepat dalam data Anda. Misalnya, Wiz menciptakan kembali keamanan cloud sebagai sebuah grafik menggunakan Amazon Neptune. Wiz membantu pelanggan mereka meningkatkan postur keamanan mereka dengan mengidentifikasi dan memperbaiki risiko yang paling kritis dengan cepat. Mereka menggunakan model grafik yang disimpan di Amazon Neptune untuk mengungkap kombinasi faktor risiko berbahaya yang mewakili risiko kritis. Mesin risiko Wiz melintasi grafik dan dalam hitungan detik, menggabungkan serangkaian faktor risiko yang saling berhubungan dalam grafik keamanan.
Aplikasi dengan ketersediaan tinggi
Basis data NoSQL terdistribusi sangat baik untuk membangun aplikasi dengan ketersediaan tinggi dan latensi rendah untuk perpesanan, media sosial, berbagi file, dan banyak lagi. Misalnya, Snapchat memiliki lebih dari 290 juta pengguna yang mengirim miliaran gambar dan pesan video setiap hari. Snapchat menggunakan sistem basis data NoSQL untuk mengurangi latensi median pengiriman pesan sebesar 20%.
Bagaimana cara kerja basis data NoSQL
Basis data NoSQL menggunakan beragam model data untuk mengakses dan mengelola data. Tipe basis data ini dioptimalkan secara khusus untuk aplikasi yang memerlukan model data fleksibel, volume data besar, dan latensi rendah, yang dicapai dengan melonggarkan pembatasan konsistensi data dari basis data relasional. Terdapat perbedaan dalam implementasi berdasarkan model data. Namun, banyak basis data NoSQL menggunakan Javascript Object Notation (JSON), sebuah format pertukaran data terbuka yang merepresentasikan data sebagai kumpulan pasangan nama-nilai.
Contoh basis data NoSQL
Pertimbangkan contoh pemodelan skema ini untuk basis data buku sederhana:
- Dalam basis data relasional, catatan buku sering diselubungkan (atau “dinormalkan”) dan disimpan dalam tabel terpisah, dan hubungan ditetapkan dengan pembatasan kunci primer dan asing. Dalam contoh ini, tabel Buku memiliki kolom untuk ISBN, Judul Buku, dan Nomor Edisi; tabel Penulis memiliki kolom untuk IDPenulis dan Nama Penulis; serta tabel ISBN-Penulis memiliki kolom IDPenulis dan ISBN. Model relasional didesain untuk memungkinkan basis data menegakkan integritas referensial antara tabel di dalam basis data, dinormalkan untuk mengurangi redundansi, dan umumnya dioptimalkan untuk penyimpanan.
- Dalam basis data NoSQL, catatan buku biasanya disimpan sebagai dokumen. 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.
Terminologi SQL vs. NoSQL
Tabel berikut membandingkan terminologi yang digunakan oleh basis data NoSQL tertentu dengan terminologi yang digunakan oleh basis data 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 |
Apa saja tipe-tipe basis data NoSQL
Ada beberapa sistem basis data NoSQL yang berbeda karena adanya perbedaan dalam pengelolaan dan penyimpanan data tanpa skema. Kami menjelaskan beberapa tipe yang umum di bawah ini.
Basis data nilai-kunci
Basis data nilai-kunci sangat mudah dipartisi dan memungkinkan penskalaan horizontal pada tingkat yang tidak dapat dicapai oleh tipe basis data NoSQL lainnya. Basis data nilai-kunci menyimpan data sebagai kumpulan pasangan nilai-kunci di mana kunci berfungsi sebagai pengidentifikasi unik. Kunci dan nilai dapat berupa objek apa pun, mulai dari objek sederhana hingga objek gabungan yang kompleks. Kasus penggunaan, seperti game, teknologi iklan, dan IoT sangat cocok untuk desain data penyimpanan nilai-kunci. Amazon DynamoDB didesain untuk menyediakan performa yang konsisten dengan latensi satu-digit milidetik untuk setiap skala beban kerja.
Basis data dokumen
Basis data dokumen memiliki format model dokumen yang sama dengan yang digunakan developer dalam kode aplikasi mereka. Basis data ini menyimpan data sebagai objek JSON yang bersifat fleksibel, semiterstruktur, dan hierarkis. Sifat dokumen dan basis data dokumen yang fleksibel, semiterstruktur, dan hierarkis memungkinkan dokumen dan basis data dokumen berkembang sesuai kebutuhan aplikasi. Model basis data dokumen berfungsi baik dengan katalog, profil pengguna, dan sistem manajemen konten di mana setiap dokumen bersifat unik serta berkembang dari waktu ke waktu. Amazon DocumentDB (dengan kompatibilitas MongoDB) dan MongoDB merupakan basis data dokumen populer yang menyediakan API yang mumpuni serta intuitif untuk pengembangan yang fleksibel serta berulang.
Basis data grafik
Basis data grafik dibuat khusus untuk memudahkan membuat dan menjalankan aplikasi yang bekerja dengan set data yang sangat terhubung. Basis data ini menggunakan simpul untuk menyimpan entitas data dan edge untuk menyimpan hubungan antarentitas. Sebuah edge selalu memiliki simpul awal, simpul akhir, tipe, dan arah. Edge dapat mendeskripsikan hubungan, tindakan, kepemilikan, dan sejenisnya. Tidak ada batasan jumlah dan tipe hubungan yang dapat dimiliki oleh sebuah simpul. Anda dapat menggunakan basis data grafik untuk membuat dan menjalankan aplikasi yang bekerja dengan set data yang sangat terhubung. Kasus penggunaan umum untuk basis data grafik mencakup jaringan media sosial, mesin rekomendasi, deteksi fraud, dan grafik pengetahuan. Amazon Neptune adalah layanan basis data grafik terkelola penuh yang mendukung model Grafik Properti dan Kerangka Kerja Deskripsi Sumber Daya (RDF) dengan pilihan dua API grafik (TinkerPop dan RDF/SPARQL).
Basis data dalam memori
Saat basis data nonrelasional lainnya menyimpan data pada disk atau SSD, penyimpanan data dalam memori didesain untuk menghilangkan kebutuhan mengakses disk. Penyimpanan data dalam memori ideal untuk aplikasi yang membutuhkan waktu respons mikrodetik atau memiliki lonjakan lalu lintas yang besar. Anda dapat menggunakannya dalam aplikasi game dan teknologi iklan untuk fitur, seperti papan peringkat, penyimpanan sesi, dan analitik waktu nyata. Amazon MemoryDB for Redis adalah layanan basis data dalam memori yang kompatibel dengan Redis dan tahan lama, yang memberikan latensi baca mikrodetik, latensi tulis satu digit milidetik, dan ketahanan Multi-AZ. 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. Amazon DynamoDB Accelerator (DAX) adalah contoh lain penyimpanan data yang dibuat khusus yang membuat DynamoDB membaca dengan jauh lebih cepat.
Basis data pencarian
Basis data mesin pencarian adalah tipe basis data nonrelasional yang dikhususkan untuk pencarian konten data, seperti log output aplikasi yang digunakan oleh developer untuk memecahkan masalah. Basis data ini menggunakan indeks untuk mengategorikan karakteristik serupa di antara data dan memfasilitasi kemampuan pencarian. Basis data mesin pencarian dioptimalkan untuk mengurutkan data tidak terstruktur, seperti gambar dan video. Amazon OpenSearch Service dibuat khusus untuk memberikan visualisasi hampir dalam waktu nyata dan analitik data yang dihasilkan mesin dengan mengindeks, menggabungkan, dan mencari log serta metrik yang semiterstruktur.
Apa perbedaan antara basis data NoSQL dan SQL
Selama beberapa dekade, model data yang dominan dalam pengembangan aplikasi adalah model data relasional yang menyimpan data dalam tabel yang terdiri dari baris dan kolom. Bahasa Kueri Terstruktur (SQL) digunakan untuk membuat dan mengedit tabel relasional ini. Basis data SQL memodelkan hubungan data sebagai tabel. Baris pada tabel merepresentasikan kumpulan nilai terkait dari satu objek atau entitas. Setiap kolom dalam tabel merepresentasikan atribut data, dan bidang (atau sel tabel) menyimpan nilai sebenarnya dari atribut. Anda dapat menggunakan sistem manajemen basis data relasional (RDBMS) untuk mengakses data dengan berbagai cara tanpa mengatur ulang tabel basis data itu sendiri.
Baru pada pertengahan hingga akhir tahun 2000-an, model data fleksibel lainnya mulai diadopsi dan digunakan secara signifikan. Untuk membedakan dan mengategorikan kelas-kelas basis data dan model data yang baru ini, istilah NoSQL diciptakan. NoSQL adalah singkatan dari not only SQL atau non-SQL. Istilah NoSQL sering kali digunakan secara bergantian dengan istilah nonrelasional. Perbedaan utama antara basis data relasional dan nonrelasional dijelaskan dalam tabel di bawah ini.
|
Basis data relasional |
Basis data NoSQL |
Beban kerja yang optimal
|
Basis data relasional didesain untuk aplikasi transaksional dan aplikasi pemrosesan transaksi online (OLTP) Basis data relasional juga bagus untuk pemrosesan analitik online (OLAP). |
Basis data NoSQL didesain untuk sejumlah pola akses data yang menyertakan aplikasi latensi rendah. Basis data pencarian NoSQL didesain untuk analitik data 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 basis data lain. Basis data ini menerapkan integritas referensial dalam hubungan antara tabel. |
Basis data NoSQL menyediakan berbagai model data, seperti nilai-kunci, dokumen, grafik, dan kolom, yang dioptimalkan untuk performa dan skala. |
Properti ACID |
Basis data relasional menyediakan properti atomicity, consistency, isolation, and durability (ACID):
|
Basis data NoSQL sering kali melakukan pertukaran dengan mengurangi beberapa properti ACID dari basis data relasional untuk model data yang lebih fleksibel yang dapat menskalakan secara horizontal. Hal ini membuat basis data 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 |
Performa umumnya tergantung pada subsistem disk. Pengoptimalan kueri, indeks, dan struktur tabel sering kali diperlukan untuk mencapai kinerja puncak. |
Performa umumnya merupakan fungsi dari ukuran klaster perangkat keras, latensi jaringan, dan aplikasi panggilan. |
Skala |
Basis data relasional biasanya dapat dinaikkan skalanya dengan meningkatkan kemampuan komputasi perangkat keras atau diskalakan ke luar dengan menambahkan replika untuk beban kerja hanya-baca. |
Basis data NoSQL biasanya dapat dipartisi. Hal ini karena pola akses dapat diskalakan ke luar menggunakan arsitektur terdistribusi untuk meningkatkan throughput yang memberikan performa yang konsisten pada skala yang nyaris tak 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 developer aplikasi menyimpan dan mengambil struktur data dengan mudah. Kunci partisi memungkinkan aplikasi mencari pasangan nilai-kunci, set kolom, atau dokumen semiterstruktur yang berisi objek dan atribut aplikasi berseri. |
Kapan Anda harus memilih basis data NoSQL alih-alih basis data SQL
Basis data NoSQL merupakan yang terbaik untuk menangani data yang tidak pasti, tidak terkait, atau berubah dengan cepat. Basis data ini mudah digunakan oleh para developer saat aplikasi menentukan skema basis data. Anda dapat menggunakannya untuk aplikasi yang:
- Memerlukan skema fleksibel yang memungkinkan pengembangan yang lebih cepat dan lebih berulang.
- Memprioritaskan performa daripada konsistensi data yang kuat dan menjaga hubungan antara tabel data (integritas referensial).
- Memerlukan penskalaan horizontal dengan serpihan di seluruh server.
- Mendukung data semiterstruktur dan tidak terstruktur.
Anda tidak selalu harus memilih antara skema basis data nonrelasional dan relasional. Anda dapat menggunakan kombinasi basis data SQL dan NoSQL dalam aplikasi Anda. Pendekatan hibrida ini cukup umum dan memastikan setiap beban kerja dipetakan ke basis data yang tepat untuk performa harga yang optimal.
Bagaimana AWS dapat mendukung kebutuhan basis data NoSQL Anda
AWS juga memiliki beberapa layanan basis data NoSQL untuk memenuhi semua kebutuhan NoSQL Anda. Misalnya:
- Amazon DynamoDB adalah layanan basis data nilai-kunci, nirserver, terkelola penuh, yang memberikan performa milidetik satu digit yang konsisten dengan skalabilitas tanpa batas.
- Amazon DocumentDB (dengan kompatibilitas MongoDB) adalah basis data dokumen JSON native terkelola penuh yang membuat operasi beban kerja dokumen penting menjadi lebih mudah dan hemat biaya hampir di setiap skala tanpa harus mengelola infrastruktur.
- Amazon Neptune adalah layanan basis data grafik nirserver terkelola penuh yang didesain untuk skalabilitas dan ketersediaan yang unggul dengan kemampuan untuk mengueri miliaran hubungan dalam hitungan detik.
- Amazon MemoryDB for Redis adalah layanan basis data dalam memori yang tahan lama yang memberikan waktu respons baca dan tulis mikrodetik untuk performa yang sangat cepat.
- Amazon ElastiCache adalah layanan penyimpanan data dan cache dalam memori terkelola penuh, kompatibel dengan Redis dan Memcached, serta memberikan performa yang dioptimalkan secara waktu nyata dan hemat biaya.
- Amazon Keyspaces (untuk Apache Cassandra) adalah basis data kolom lebar nirserver terkelola penuh yang didesain untuk ketersediaan hingga 99,999% dengan replikasi multiWilayah. Layanan basis data yang kompatibel dengan Apache Cassandra yang dapat diskalakan, sangat tersedia, dan terkelola.
- Amazon Timestream adalah basis data deret waktu nirserver terkelola penuh yang memudahkan untuk menyimpan dan menganalisis triliunan peristiwa per hari hingga 1.000 kali lebih cepat daripada basis data relasional.
- Amazon OpenSearch Service adalah rangkaian pencarian dan analitik terdistribusi terkelola penuh yang memungkinkan pencarian, pemantauan, dan analisis data bisnis dan operasional secara waktu nyata.
Mulai NoSQL di AWS dengan membuat akun gratis sekarang juga!