Apa itu "database"?

14

Ada banyak diskusi dalam pertanyaan ini: Teknologi basis data apa yang digunakan mesin pencari besar?

Begitu banyak diskusi yang membuat saya bingung. Jadi ... apa itu database? Apakah hanya basis data relasional "basis data"? Apakah database berorientasi objek "database"? Apakah ada sistem yang memungkinkan saya untuk menyimpan dan mengambil informasi (seperti peta, daftar, dll) database?

Atau apakah database harus menyimpan / mengambil informasi dan juga memiliki beberapa fitur administrasi seperti Pengguna dan Hak Istimewa? Apakah dBase III ditambah database, karena itu tidak benar-benar berhubungan?

woliveirajr
sumber
@ypercube: "Kemampuannya untuk secara bersamaan membuka dan memanipulasi banyak file yang berisi data terkait mengarahkan Ashton-Tate untuk memberi label pada dBase" basis data relasional "meskipun tidak memenuhi kriteria yang ditentukan oleh model relasional Dr. Edgar F. Codd; itu bisa lebih akurat disebut bahasa pengembangan aplikasi dan sistem manajemen basis data navigasi terintegrasi yang dipengaruhi oleh konsep relasional. " dari wikipedia
woliveirajr
3
Saya tidak percaya database perlu "dikelola" untuk menjadi database.
Aaron Bertrand

Jawaban:

9

Ini adalah pertanyaan hebat dan serangkaian jawaban hebat. Saya pikir satu hal yang hilang dari diskusi adalah jawaban yang menggali perbedaan antara database dan sistem manajemen basis data (DBMS). Saya suka definisi database yang disediakan oleh Shark dari dictionary.com. Saya pikir itu benar-benar menunjukkan perlunya perbedaan antara database dan DBMS. Basis data adalah "kumpulan komprehensif dari data terkait yang diorganisasikan untuk akses yang nyaman." Bagian kedua dari definisi itu, yang mengatakan "umumnya di komputer" adalah di mana perbedaannya. Jika disimpan di komputer, itu mungkin atau mungkin tidak disimpan dalam DBMS. Ini dapat disimpan dalam sistem file OS. Mungkin disimpan dalam sistem file berpemilik. Jadi saya setuju dengan FrustratedWithFormsDesigner bahwa katalog kartu adalah "basis data" (Yah, mungkin - apakah itu komprehensif dan terkait? Lebih lanjut tentang itu nanti). Kebetulan disimpan di lemari arsip. Di dunia sekarang ini, sebagian besar "koleksi komprehensif data terkait diselenggarakan untuk memudahkan aksesyang disimpan di komputer, jadi saya tidak setuju dengan Shark bahwa itu disayangkan Dictionary.com menambahkan bagian itu. Saya pikir itu benar - sebagai definisi "database".

Jadi bagaimana kita mendefinisikan DBMS? Saya kembali ke dictionary.com dan menemukan ini :

"Serangkaian program yang biasanya mengelola set data persisten berstruktur besar, menawarkan fasilitas permintaan ad hoc kepada banyak pengguna. Mereka banyak digunakan dalam aplikasi bisnis."

Definisi ini berlanjut dan cukup panjang. Ini menjelaskan fitur-fitur umum yang disediakan oleh DBMS, seperti keamanan, integritas data, manajemen transaksi, kontrol konkurensi, dan yang paling penting - independensi data. DBMS memberikan tampilan eksternal dari data yang diabstraksi dari bagaimana data itu disimpan secara fisik.

Menggunakan definisi ini, saya pikir jelas bahwa DBMS harus menyediakan model data , yaitu bagaimana data disusun untuk presentasi kepada pengguna. Tiga model umum adalah hierarkis (IMS), jaringan (IDMS), dan relasional (DB2, Oracle, SQL-Server, dll). Ada juga model OO (OODBMS). Hanya model relasional saat ini yang memiliki penerapan luas. Model-model lain masih digunakan tetapi hanya dalam situasi khusus. DBMS juga harus menyediakan fitur-fitur lain yang disebutkan. Saya akan merujuk ini secara kolektif sebagai fitur atau kemampuan manajemen data.

Oleh karena itu, produk perangkat lunak yang menyediakan fitur manajemen data adalah DBMS ', sedangkan produk yang tidak menyediakan ini bukan DBMS'. Produk NoSQL bukan DBMS. Itu tidak berarti mereka tidak berguna, dan tidakuntuk mengatakan mereka tidak menyimpan "database". Saya suka berpikir bahwa DBMS ', seperti yang dikatakan definisi, memecahkan kelas masalah yang terkait dengan aplikasi bisnis seperti akuntansi, penggajian, penagihan, manajemen hubungan pelanggan, penjualan, dll. Produk NoSQL, walaupun bukan DBMS', sangat baik untuk menyelesaikan suatu kelas masalah yang tidak terkait dengan aplikasi bisnis tradisional tetapi sekarang ada karena besarnya jumlah penyimpanan dan teknologi komputasi bandwidth mampu hari ini. Ini adalah aplikasi seperti pencarian internet, seperti lelang online, seperti twitter dan seperti facebook. DBMS tidak cocok untuk menyelesaikan masalah ini karena DBMS berisi fitur manajemen data yang, sementara kebutuhan mutlak untuk aplikasi bisnis, tidak ada gunanya untuk menyelesaikan penyimpanan dan pengambilan Craig. daftar iklan atau feed twitter (well biasanya sih - itu diskusi lain untuk waktu lain :-)). Masalah-masalah itu membutuhkan skala besar dan respon yang sangat cepat dan DBMS, dengan fitur mengasapi, tidak cocok.

Seorang profesional data perlu memahami semua alat ini untuk menyimpan data dan kelas masalah apa yang cocok untuk mereka selesaikan untuk memilih alat yang tepat untuk pekerjaan itu, seperti halnya kontraktor umum harus tahu mana alat konstruksinya. alat yang tepat untuk pekerjaan itu. Tidak ada alat yang baik atau buruk dalam dirinya sendiri. Baik jika cocok untuk memecahkan masalah penting.

Saya akan menyimpulkan dengan mencatat dua perbedaan utama lainnya dalam definisi database dan DBMS yang mungkin terlewatkan dalam diskusi sejauh ini. Definisi basis data mencakup " pengumpulan komprehensif data terkait ." Definisi DBMS meliputi "kelola terstruktur besard lebih baik menggunakan MS Access atau DBMS relasional lainnya. Jadi mungkin katalog kartu bukan merupakan basis data yang komprehensif (memiliki catatan semua buku di perpustakaan) tetapi tidak terkait karena hanya memiliki informasi tentang buku, bukan informasi terkait yang lengkap tentang penulis, penerbit, dll.

Kedua, DBMS unggul dalam menyimpan data "terstruktur". Ini sepenuhnya didasarkan pada skema yang ditetapkan dari elemen data diskrit dengan tipe terstruktur. Produk NoSQL, katakanlah penyimpanan nilai kunci yang tanpa skema, unggul dalam menyimpan data yang tidak terstruktur. Karena itu produk NoSQL tidak memenuhi definisi DBMS. Tetapi jika masalah yang Anda coba selesaikan adalah penyimpanan data yang tidak terstruktur (sesuatu yang bahkan tidak kami coba lakukan ketika DBMS pertama kali dikembangkan), dan Anda tidak perlu fitur manajemen data terlepas dari aplikasi yang akan Anda tulis. proses yang data tidak terstruktur, produk NoSQL adalah alat yang sempurna.

Saya harap jawaban ini menambah nilai untuk jawaban hebat lainnya yang diposting di sini. Saya menantikan komentar dan poin diskusi siapa pun yang mungkin memiliki yang akan membantu kita semua memperluas pemahaman kita tentang basis data dan kelas teknologi yang memecahkan masalah terkait data.

Todd Everett
sumber
1
Pos yang bagus. Pada daftar hal Craig, saya pikir ada lebih banyak lapisan yang harus Anda pertimbangkan. Penyimpanan dan pengambilan tidak harus terjadi tepat di atas DBMS. Anda tentu saja dapat memperkecil data yang disimpan di, katakanlah, SQL Server tanpa membuat SQL Server secara langsung bertanggung jawab untuk menanggapi permintaan pengguna. Ada semua jenis solusi tingkat menengah dan caching data yang dapat membantu DBMS tanpa perlu mengganti DBMS. Dalam pekerjaan saya sebelumnya yang segera saya gunakan puluhan contoh Express di server web untuk mengurangi beban pada SQL Server utama - sering mendorong daripada menarik bekerja.
Aaron Bertrand
Terima kasih Aaron. Kurangnya pengalaman saya dengan aplikasi di luar menunjukkan aplikasi bisnis tradisional. Saya telah melihat beberapa posting, Brent Ozar misalnya, tentang solusi caching data tetapi belum pernah melihatnya. Terima kasih atas contoh Anda tentang pengalaman Anda sebelumnya. Saya pasti akan menambahkan konsep layering di atas DBMS untuk mengaktifkan skala tanpa kehilangan manfaat DBMS ke kotak peralatan!
Todd Everett
Jadi IMS DB adalah DBMS tetapi Cassandra tidak. Maaf, tapi dengan hormat tidak setuju.
Michael Green
9

Saya akan mengutip Dictionary.com , karena saya menganggap ini sebagai makna basis data:

koleksi komprehensif dari data terkait yang diorganisasikan untuk akses mudah, umumnya di komputer.

Di bawah definisi ini, Anda dapat mempertimbangkan basis data apa saja mulai dari RDBMS lengkap (SQL Server, Oracle, dll.) Hingga file flat dasar. Jika menyimpan data, secara teknis dapat dianggap sebagai basis data.

Sekarang, seperti kebanyakan hal di dunia modern kita, ada makna nama yang diterima. Dan dalam hal basis data , itu akan bervariasi dari orang ke orang. Banyak orang menganggap database hanya sebagai entitas yang dikelola oleh sistem data.

Perlu dicatat komentar @ FrustratedWithFormsDesigner:

katalog kartu juga akan dihitung jika Anda menghapus "... umumnya di komputer".

Saya setuju dengan pernyataan itu, dan saya tidak perlu berpikir bahwa database perlu hidup dalam "komputer" atau perangkat elektronik apa pun. Katalog kartu adalah contoh sempurna dari basis data yang tidak terkomputerisasi.

Thomas Stringer
sumber
8

Bagi saya, basis data adalah hal yang ada untuk menyimpan dan mengambil data. Kami memanggil Access database, meskipun itu sebenarnya hanya ujung depan yang cantik untuk kumpulan file. Outlook (setidaknya di Mac) menyebut pesannya menyimpan database. Beberapa orang bahkan menyebut Excel sebagai basis data (tapi itu membuat saya mendengus - jadi ada garis di suatu tempat).

Saya pikir definisi tersebut telah berkembang dari waktu ke waktu, dan membandingkan dictionary.com, ke wiki, dengan makalah dari berbagai profesional basis data selama 30 tahun terakhir, akan menghasilkan berbagai definisi. Dan definisi tersebut akan terus berkembang juga.

Jika Anda berbicara tentang beberapa jenis sumber data yang Anda atau aplikasi Anda gunakan untuk menyimpan atau mengambil data, apakah itu relasional atau tidak, saya tidak punya masalah dengan Anda menyebutnya basis data. Jika ini file teks, Anda mungkin akan terangkat, tapi saya tidak yakin saya mengerti perlunya menentukan definisi dengan cara yang terbatas sehingga orang-orang marah karenanya.

Beberapa orang menjadi cukup sombong, tampaknya, jika Anda bahkan datang untuk menyarankan bahwa BigTable (atau NoSQL atau hadoop) adalah "database," dan mengklaim bahwa menyebutnya seperti itu akan memberikan - terutama untuk pemula - janji besar kinerja tanpa batas, keabadian dan Unicorn. Padahal biasanya Anda hanya bermaksud bahwa itu adalah tempat di mana data disimpan dan diambil, tanpa jaminan apa pun implementasi sebenarnya, apakah itu relasional atau tidak, atau apakah Anda bisa menghasilkan hal seperti itu sendiri ketika bosan pada hari Minggu sore.

Saya akan mengakui bahwa saya merasa ngeri ketika orang berbicara tentang database relasional dan memanggil baris "catatan" atau kolom "bidang." Tetapi sementara itu sedikit mengganggu saya, saya tidak marah atau keluar dari jalan saya untuk memperbaikinya - apa gunanya? Saya mengerti apa yang mereka maksudkan, bahkan jika itu tidak 100% akurat.

Aaron Bertrand
sumber
5

Ini bisa sangat umum, hanya kumpulan data dan struktur. Sistem untuk mengelola database dapat sesederhana sistem file atau serumit sistem gabungan seperti DNS.

Secara umum dalam penggunaan modern, ketika seseorang mengatakan basis data, ia menyiratkan penyimpanan data dan struktur serta sistem manajemen basis data yang menyertainya, dan karena begitu banyak pekerjaan teoretis yang telah dilakukan pada dasar-dasar basis data relasional, ini masih merupakan yang paling populer sehingga bahwa sering ketika seseorang mengatakan database, ia sering menyiratkan database relasional.

Dengan munculnya NoSQL / database non-relasional, istilah database telah kembali menjadi lebih umum, dan berpotensi lebih ambigu, karena model bersama untuk memahami data tidak dapat diasumsikan.

Sebelum landasan teori relasional, pemodelan data dalam sistem lain bervariasi dari satu sistem ke sistem lainnya dan tidak memiliki prinsip-prinsip panduan yang sama seperti yang dimiliki model relasional - jenis-jenis basis data lain seperti basis data hierarkis dan basis data jaringan digunakan.

Cade Roux
sumber
2

Saya bekerja untuk Ashton-Tate selama pengembangan dBASE Direct / 36 dan dBASE IV, menggunakan pengetahuan dBASE III Plus saya untuk membuat kode program kecil untuk membantu dalam pengujian dBASE Direct / 36 (antarmuka ke Sistem IBM / 36 Komputer Mini). Kami harus membuat pernyataan pemuatan biner dan pemanggilan ke tabel SQL System / 36, yang mengharuskan pengetikan ulang pernyataan 'pemuatan' dan 'pemanggilan' yang sama sambil mengubah nama tabel dan nama bidang pada saat pengiriman untuk mendapatkan data dari setiap rekaman atau sekelompok beberapa catatan tergantung pada cakupan kueri. dBASE III Plus, bahasa pemrograman basis data, memungkinkan saya untuk membuat, 'dbldot.prg' yang mengubah prompt titik tunggal menjadi titik ganda saat saya dirancang untuk menjadi indikator bahwa sistem berada dalam mode pengambilan SQL, serta teks di bawah baris perintah yang mengatakan, "

Kembali pada waktu itu dBASE adalah bahasa pemrograman basis data, atau lebih tepatnya, bahasa program yang memungkinkan manipulasi catatan data. Catatan adalah sekelompok bidang yang berisi data untuk satu item individual, seperti orang LAST_NAME, FIRST_NAME, ALAMAT, CITY, ST, ZIP, PLUS_FOUR, SSN, dll. Struktur ini kemudian direpresentasikan dalam tabel dan disusun dalam baris dan kolom, baris menjadi catatan individual, dan kolom menjadi data dalam serangkaian catatan untuk setiap nama bidang. Dengan cara ini, pengguna dapat dengan mudah mengurutkan berdasarkan nama bidang untuk mengurutkan dan mengelompokkan catatan berdasarkan bidang umum tertentu, seperti CITY, ST, ZIP, dll.

Bahasa dBASE memungkinkan pengguna atau programmer untuk memanipulasi data, melakukan pengurutan, menampilkan tabel, merekam, dan melakukan perhitungan (Y2K jauh tetapi tanggal harus dikonversi ke YYYYMMDD untuk mengurutkan data MM-DD-YYYY yang dimasukkan, yang dapat dilakukan dengan DtoC dan CtoD (Date to Character, Character to Date)). Tanpa bahasa dBASE, file data hanya akan menjadi serangkaian catatan (baris) dengan bidang umum (kolom).

Database relasional - itu adalah istilah yang digunakan untuk referensi silang lebih dari satu database (tabel) dengan yang lain yang berisi informasi yang berbeda tetapi berisi satu atau lebih bidang umum. Misalnya, database berjudul, "Alamat," berisi "LNAME," "FNAME," "ALAMAT," "CITY," "ST," "ZIP," "SSN." Basis data lain berjudul, "MEMERIKSA," berisi "ACCOUNT_NO," "ROUTING_NO," "CUSTLAST," "CUSTFIRST," "DOB," "SSNO," "CUST_NO." Meskipun nama-nama bidang berbeda, beberapa di antaranya berisi informasi yang sama yang dapat dihubungkan satu sama lain untuk mengikat data dari satu basis data dengan yang lainnya, misalnya, mengirimkan laporan kepada pelanggan bank, menggunakan bidang nama depan dan belakang dan nomor SS untuk menghubungkan data, menarik alamat pelanggan dari satu basis data dan informasi akun untuk dimasukkan ke dalam pernyataan dari yang lain. Kemudian pada skala yang lebih besar fungsi gabungan surat dapat dilakukan untuk melakukan tindakan ini pada setiap pelanggan individu dalam database ADDRESS, menarik informasi akun terkait masing-masing pelanggan, mempersonalisasi pernyataan, mencetak, dan menangani masing-masing sebelum pindah ke yang berikutnya catatan, atau pelanggan, dalam database.

Jadi, sesuatu seperti MS ACCESS bisa lebih dari DBMS, tetapi pada tingkat dasar dBASE adalah bahasa untuk membuat antarmuka pengguna front-end dan melakukan semua manipulasi data antara database untuk membuat hubungan di antara mereka dan mengembalikan data yang dihasilkan untuk kami hanya manusia untuk digunakan.

Banyak yang telah berubah sejak saat itu, tetapi fondasinya tetap sama. Data masih terkandung dalam catatan yang berisi serangkaian bidang dari berbagai jenis data dan harus direferensikan silang dan digabung dengan database lain dengan cara satu atau beberapa titik data umum, memungkinkan kita untuk menggunakan kartu kredit, mengatur akun di web menggunakan Google, Facebook, ID Twitter, melacak riwayat pembelian kami, dan sebagainya. Hidup kita hanyalah serangkaian banyak basis data relasional yang tumpang tindih, yang kita lintasi setiap hari tanpa memikirkan semua bit dan byte yang berinteraksi untuk memberi kita kesenangan dan evolusi berkelanjutan dari kemudahan dalam hidup kita hari ini.

Setidaknya itulah sebabnya saya selalu memahaminya selama bertahun-tahun pengujian perangkat lunak dan perangkat keras yang dimulai dengan dBASE II pada tahun 1984.

HoundCat
sumber
2

Makalah seminal Codd berjudul Model relasional data untuk bank data bersama besar . Apa yang disebutnya "bank data" kita sebut sebagai basis data.

Namun, saya suka citranya. Ini menyiratkan tempat di mana data dapat diletakkan, mengetahui itu akan disimpan dengan aman, diperhitungkan dengan benar dan hanya diberikan kembali kepada mereka yang dapat menunjukkan bahwa mereka memiliki wewenang untuk mengaksesnya. Jika cabang kami dirampok, kami memiliki jaminan bahwa perusahaan perbankan memiliki cadangan yang memadai untuk memastikan sumber daya berharga kami tidak hilang tanpa dapat dibatalkan.

Michael Green
sumber
1

Dari Dasar-Dasar Desain Basis Data 7th Ed. (hal 5),

Sebuah basis data adalah kumpulan data yang berhubungan.

Mereka kemudian mengatakan bahwa penggunaan umum lebih dibatasi,

Database memiliki properti implisit berikut:

  • Basis data mewakili beberapa aspek dari dunia nyata, kadang-kadang disebut miniworld atau universe of discourse (UoD). Perubahan ke miniworld tercermin dalam basis data.
  • Basis data adalah kumpulan data yang masuk akal secara logis dengan beberapa makna yang melekat. Berbagai macam data acak tidak dapat dengan benar disebut sebagai basis data.
  • Basis data dirancang, dibangun, dan diisi dengan data untuk tujuan tertentu. Basis data tersebut memiliki kelompok pengguna yang dituju dan beberapa aplikasi yang telah dibuat sebelumnya di mana pengguna ini tertarik.

Dalam definisi tidak ada database yang secara eksplisit "relasional" dalam arti apa pun, namun sering diasumsikan karena industri jenuh dengan satu jenis spesifik DBA dan bisa dibilang perangkat lunak DBMS yang paling canggih adalah semua relasional. Dari Kamus Database Relasional

Secara ketat, nilai basis data, qv; lebih umum digunakan, dalam kamus ini khususnya, untuk merujuk pada apa yang lebih akurat disebut sebagai variabel basis data, qv Kami mengasumsikan di seluruh kamus ini bahwa basis data selalu bersifat relasional, kecuali pernyataan eksplisit yang bertentangan. Catatan: Istilah basis data juga digunakan dalam konteks non-relasional untuk memaksudkan berbagai hal lain: misalnya, kumpulan data yang disimpan secara fisik. Itu juga digunakan, terlalu sering, berarti DBMS, tetapi penggunaan khusus ini sangat usang. (Jika kita menyebut DBMS sebagai basis data, apa yang kita sebut basis data?)

Poin terakhir itu agak penting, dan saya juga suka perbedaan antara DBMS / RDBMS dan database itu sendiri.

Evan Carroll
sumber