Isi kandungan:
Video: Building Apps for Mobile, Gaming, IoT, and more using AWS DynamoDB by Rick Houlihan 2024
Buku dan blog NoSQL menawarkan pendapat berbeza mengenai pangkalan data NoSQL. Empat ciri teras NoSQL, ditunjukkan dalam senarai berikut, digunakan untuk kebanyakan pangkalan data NoSQL. Senarai ini membandingkan NoSQL dengan DBMS hubungan tradisional:
-
Skema agnostik: Skema pangkalan data adalah perihalan semua data dan struktur data yang mungkin dalam pangkalan data hubungan. Dengan pangkalan data NoSQL, skema tidak diperlukan, memberikan anda kebebasan untuk menyimpan maklumat tanpa melakukan reka bentuk skema di muka.
-
Nonrelational: Perhubungan dalam pangkalan data mewujudkan sambungan antara jadual data. Sebagai contoh, senarai butiran transaksi boleh disambungkan ke senarai butiran penghantaran yang berasingan. Dengan pangkalan data NoSQL, maklumat ini disimpan sebagai agregat - rekod tunggal dengan segalanya mengenai transaksi, termasuk alamat penghantaran.
-
Perkakasan komoditi: Beberapa pangkalan data direka untuk beroperasi terbaik (atau hanya) dengan perkakasan penyimpanan dan pemprosesan khusus. Dengan pangkalan data NoSQL, pelayan murah boleh digunakan. Menambah lebih banyak pelayan murah membolehkan pangkalan data NoSQL untuk skala untuk mengendalikan lebih banyak data.
-
Sangat boleh diagihkan: Pangkalan data yang diagihkan boleh menyimpan dan memproses satu set maklumat pada lebih daripada satu peranti. Dengan pangkalan data NoSQL, sekumpulan pelayan boleh digunakan untuk menyimpan pangkalan data tunggal yang besar.
Schema agnostic
Pangkalan data NoSQL adalah skema agnostik. Anda tidak perlu melakukan banyak kerja reka bentuk di hadapan sebelum anda boleh menyimpan data dalam pangkalan data NoSQL. Anda boleh mula pengekodan dan menyimpan dan mengambil data tanpa mengetahui bagaimana pangkalan data menyimpan dan berfungsi secara dalaman. (Jika dan apabila anda memerlukan kefungsian canggih, maka anda secara manual dapat menambah indeks lanjut atau mengubah struktur penyimpanan data secara manual.) Agnostikisme skema mungkin perbezaan yang paling ketara antara NoSQL dan pangkalan data relasi.
Manfaat yang besar kepada pangkalan data agnostik skema ialah masa pembangunan dipendekkan. Manfaat ini bertambah apabila anda melalui beberapa keluaran pembangunan dan perlu mengubah struktur data dalaman dalam pangkalan data.
Sebagai contoh, dalam RDBMS tradisional, anda akan melalui proses reka bentuk semula skema. Skema mengarahkan pangkalan data mengenai data yang diharapkan. Tukar data yang disimpan, atau struktur, dan anda mesti menghidupkan semula pangkalan data menggunakan skema diubahsuai. Sekiranya anda membuat perubahan, anda perlu meluangkan banyak masa untuk menentukan cara menyusun semula data sedia ada. Dalam pangkalan data NoSQL, anda hanya menyimpan struktur data yang berbeza. Tidak perlu memberitahu pangkalan data terlebih dahulu.
Anda mungkin perlu mengubah suai pertanyaan anda dengan sewajarnya, mungkin menambahkan indeks tertentu sekali-sekala (seperti indeks julat integer untuk membolehkan kurang daripada dan lebih besar daripada pertanyaan khusus jenis data), tetapi keseluruhan prosesnya jauh lebih menyakitkan berbanding dengan RDBMS.
RDBMS dimatikan kerana fleksibilitinya dan kerana, dengan menggunakan SQL, ia melonjak mengubah pertanyaan. Pangkalan data NoSQL memberikan kelonggaran ini untuk mengubah kedua skema dan pertanyaan, yang merupakan salah satu sebab utama bahawa mereka akan semakin diterima pakai dari masa ke masa.
Walaupun pada pertanyaan, anda mungkin tidak perlu terlalu risau tentang mengetahui perubahan skema - pertimbangkan indeks di atas nombor akaun medan, di mana nombor akaun boleh diletakkan di mana saja di dalam dokumen yang disimpan dalam pangkalan data NoSQL. Anda boleh mengubah struktur dan memindahkan lokasi nombor akaun disimpan, dan jika elemen mempunyai nama yang sama di tempat lain dalam dokumen, ia masih tersedia untuk pertanyaan tanpa perubahan pada mekanisme pertanyaan anda.
Perhatikan bahawa tidak semua pangkalan data NoSQL adalah skema agnostik sepenuhnya. Ada, seperti HBase, meminta anda untuk menghentikan pangkalan data untuk mengubah definisi lajur. Mereka masih dianggap pangkalan data NoSQL kerana tidak semua bidang yang ditakrifkan (lajur dalam kes ini) dikehendaki diketahui terlebih dahulu untuk setiap rekod - hanya keluarga lajur.
RDBMS membenarkan bidang individu dalam rekod untuk dikenal pasti sebagai nilai null . Masalah dengan RDBMS adalah bahawa saiz data yang disimpan dan prestasi yang terjejas secara negatif apabila penyimpanan dicadangkan untuk nilai-nilai nol sekiranya rekod mungkin pada masa depan mempunyai nilai dalam lajur tersebut. Di Cassandra, anda tidak menyediakan data lajur itu, yang menyelesaikan masalah itu.
Nonrelational
Sistem pengurusan pangkalan data relasi telah menjadi cara yang dominan untuk menyimpan data aplikasi lebih daripada 20 tahun. Banyak kerja matematik telah dilakukan untuk membuktikan teori yang mendasari mereka.
Penyokong ini menerangkan bagaimana jadual berkaitan dengan satu sama lain. Satu baris Perintah mungkin berkaitan dengan banyak baris Alamat Penghantaran, tetapi setiap baris Alamat Pengiriman juga berkaitan dengan beberapa baris Pesanan. Ini adalah banyak - hingga - banyak hubungan .
Pangkalan data NoSQL tidak mempunyai konsep hubungan antara rekod mereka. Mereka bukannya menamakan semula data. Ini bermakna dalam pangkalan data NoSQL akan mempunyai struktur Pesanan dengan Alamat Penyampaian tertanam. Ini bermakna alamat penghantaran diduplikasi dalam setiap baris Perintah yang menggunakannya. Pendekatan ini mempunyai kelebihan tidak memerlukan masa pertanyaan kompleks yang bergabung di pelbagai struktur data (jadual) walaupun.
Pangkalan data NoSQL tidak menyimpan maklumat tentang bagaimana rekod individu berkaitan dengan rekod lain dalam pangkalan data, yang mungkin terdengar seperti batasan. Walau bagaimanapun, pangkalan data NoSQL lebih fleksibel dari segi struktur data yang boleh anda simpan.
Pertimbangkan pesanan daripada peruncit dalam talian. Pesanan itu boleh termasuk kod produk, kuantiti, harga item, dan butiran item, serta maklumat mengenai orang yang membuat pesanan, seperti alamat penghantaran dan maklumat pembayaran.
Daripada memasukkan sepuluh baris dalam pelbagai jadual dalam pangkalan data relasi, anda boleh menyimpan satu struktur untuk semua maklumat pesanan ini - katakan, sebagai dokumen JSON atau XML.
Dalam teori pangkalan data relasi, matlamatnya adalah untuk menormalkan data anda (iaitu mengatur bidang dan jadual untuk menghapus data pendua). Dalam pangkalan data NoSQL - terutamanya Dokumen atau pangkalan data Agregat - anda sengaja menamakan data, menyimpan beberapa data beberapa kali.
Anda boleh menyimpan, sebagai contoh, "Alamat Pengiriman Pelanggan" beberapa kali merentasi banyak pesanan pelanggan membuat dari masa ke masa, bukannya menyimpannya sekali dan merujuknya dalam beberapa pesanan. Melakukannya memerlukan ruang penyimpanan tambahan, dan sedikit pemikiran dalam mengelola aplikasi Anda. Jadi kenapa?
Terdapat dua kelebihan untuk menyimpan data berkali-kali:
-
Penyimpanan dan pengambilan mudah: Hanya simpan dan dapatkan rekod tunggal.
-
Kelajuan pertanyaan: Dalam pangkalan data hubungan, anda menyertai maklumat dan menambah kekangan merentas jadual pada masa pertanyaan. Ini mungkin memerlukan enjin pangkalan data untuk menilai banyak jadual. Lebih banyak kekangan pertanyaan yang anda ada di jadual yang berlainan, semakin banyak anda mengurangkan kelajuan pertanyaan anda. (Inilah sebabnya mengapa RDBMS mempunyai pandangan terdahulu.) Dalam pangkalan data NoSQL, semua maklumat yang anda perlukan untuk menilai permintaan anda adalah dalam satu dokumen sahaja. Oleh itu, anda boleh dengan cepat menentukan senarai dokumen yang sepadan.
Pandangan relasional dan pengumuman NoSQL adalah pendekatan yang berbeza untuk masalah data tersebar di seluruh rekod. Dalam NoSQL, anda mungkin perlu mengekalkan pelbagai pengumuman yang mewakili pandangan berbeza dari data yang sama. Pendekatan ini meningkatkan kos penyimpanan tetapi memberi anda masa pertanyaan yang lebih baik.
Memandangkan kos penyimpanan yang semakin berkurang dan peningkatan kelajuan pembangunan dan pertanyaan, data yang dinormalkan (aka pandangan ternama ) bukanlah sebab pembunuh untuk menolak penyelesaian NoSQL. Ia hanya cara yang berbeza untuk mendekati masalah yang sama, dengan kelebihan dan kelemahannya sendiri.
NoSQL sangat boleh diagihkan dan menggunakan perkakasan komoditi
Dalam banyak pangkalan data NoSQL, keputusan reka bentuk utama adalah menggunakan banyak komputer untuk menyimpan data untuk satu pangkalan data tunggal, dan bukannya mempunyai keseluruhan pangkalan data pada satu pelayan.
Menyimpan data merentasi pelbagai mesin dan membolehkannya dipertimbangkan adalah sukar. Anda mesti menghantar pertanyaan kepada semua pelayan dan tunggu balasan. Mudah-mudahan, anda menyediakan mesin supaya mereka cukup cepat untuk bercakap antara satu sama lain untuk mengendalikan pertanyaan yang diedarkan!
Kelebihan utama pendekatan ini adalah dalam kes dataset yang sangat besar, kerana untuk beberapa keperluan penyimpanan, bahkan pelayan tunggal yang tersedia tidak dapat menyimpan atau memproses semua data yang anda perlukan. Pertimbangkan semua mesej di Twitter dan Facebook. Anda memerlukan mekanisme yang diedarkan untuk menguruskan semua data dengan berkesan, walaupun kebanyakannya mengenai apa yang telah dimiliki orang untuk sarapan pagi dan video kucing comel.
Kelebihan mengedarkan pangkalan data anda ialah anda boleh menggunakan pelayan yang lebih murah, yang dipanggil pelayan komoditi .Malah untuk dataset yang lebih kecil, ia mungkin lebih murah untuk membeli tiga pelayan komoditi dan bukannya satu pelayan yang berkuasa tinggi.
Satu lagi kelebihan utama ialah menambahkan ketersediaan yang tinggi adalah lebih mudah; anda sudah di tengah sana dengan mengedarkan data anda. Sekiranya anda mengulangi data anda sekali atau dua kali pada pelayan lain dalam kelompok, data anda masih boleh diakses, walaupun salah satu daripada pelayan itu terhempas, terbakar, dan mati.
Tidak semua pangkalan data sumber terbuka menyokong ketersediaan yang tinggi melainkan anda membeli versi pangkalan data yang disokong dan berbayar dari syarikat yang mengembangkannya.
Pengecualian kepada peraturan yang boleh diagihkan adalah pangkalan grafik. Untuk menjawab pertanyaan graf tertentu dengan tepat pada masanya, data perlu disimpan pada pelayan tunggal. Belum ada yang menyelesaikan masalah ini.
Berhati-hati dengan mempertimbangkan sama ada anda memerlukan kedai tiga atau kedai graf. Kedai tiga belas secara umum boleh diagihkan, manakala kedai grafik tidak. Yang mana yang anda perlukan bergantung pada pertanyaan yang anda mesti menyokong.