怎麼簡單地理解資料庫的概念?

從字面上理解就是存放數據的地方,但是它同一般直接在硬碟上存儲有什麼區別?


打個比方,更容易解釋資料庫跟文件系統的主要差別:

資料庫是商場,文件系統是超市。

資料庫,你把你想要的告訴營業員,她自己已經記錄了所有的商品對應哪個貨架,然後就跑到對應的貨架上,把貨物拿給你。——你們之間的交互只有兩樣東西:你的一句話,她給你的貨物。

文件系統,你知道你想要什麼東西,然後去逛超市,(假定這個超市除了收銀員以外沒有任何營業員)把超市的每樣都逛了個遍,發現了你的東西在某個角落,然後把它拿出來了,最後到收銀台去付錢。。。——你們之間的交互是:整個超市裡所有貨物的分類,布局,所有商品的樣子。你一路遍歷所花的時間。

對於本地來說,這沒什麼問題,但是如果是遠程,那麼有營業員的前提下你的通訊可以只是一個電話,和一個郵遞包裹。若沒有營業員,你得親自去一趟去查看所有的布局,或者通過渠道獲取對方整個超市的所有貨物清單,然後親自查找。通訊量太大了,至少一個清單是在一通電話里說不清楚的。

所以說了,商店還是那個商店,文件系統還是那個文件系統,資料庫只是那個營業員而已。她記得每樣東西在哪,然後與你協定了一種交互的命令,你用這個協議去讓她提供服務。 ——這個營業員平時也不閑著,沒事的時候就去整理一下貨架,並且背誦一下各個貨物的位置(建索引),這樣她找東西往往會比你更快。


資料庫:是存放和管理數據的工具,資料庫也是從寫文件的級別發展過來的,當時無資料庫這一概念,發現:

1&>.文件的讀寫每個人都要寫一套程序或方法,也即介面不一樣;

2&>.文件系統的管理成為問題,尤其當文件多的時候;

3&>.文件系統中文件之間的關係無法體現出來;

4&>.文件系統中文件內數據之間的關係無法體現出來;

至少有以上4點,然後就慢慢提煉出一個資料庫的概念(比如開發介面ODBC等通用開發介面),先從非關係型資料庫開始的(也即現在的名稱:nosql)層-&>圖-&>關係型-&>關係面向對象混合型-&>面向對象資料庫.....理論和產品都是按這個路線發展的...


資料庫是信息的集合,獨立的信息是沒有價值的。信息之間的聯繫可以創造價值。資料庫就是更有效地處理信息之間的聯繫。資料庫將抽象的信息概念化,將信息物化的組織起來,抽去冗餘,加強各部分的聯繫。不僅僅將造紙廠的空白紙頁寫上信息,更重要的是讓每張紙都能有價值的存在,每張紙都是整個知識資料庫中不可缺少的一部分。


資料庫存儲的是數據的集合,這種集合不是雜亂無章的,而是按照數據結構來組織、存儲和管理的。要向資料庫中放入數據,必須在這之前進行建立某種數據模型,然後才能向其中存入數據,這些數據間是有聯繫的,同時也儘可能的保證了這些數據不是冗餘的或者是有害的。它實現了數據和應用程序間的相互獨立。但是資料庫中的數據存儲最終還是會落實到存儲介質上,比如硬碟,但是硬碟的容量不足以應對現在的海量數據,所以會產生獨立冗餘磁碟陣列等其他存儲技術來實現海量數據的存儲。


看了上面如此多專業答案,我來個打醬油的。

將你所知道的所有信息量化,你的大腦就是一個資料庫。

假如有一天,你要搬家了,你把你所有的東西要分類裝包,每個類目下面包含的物品要明細,物品按照價格、新舊、體積等屬性排放順序,類別之間存在關係的要放在一起等等,這時候你就成一個資料庫了哇~哈哈


文件系統是比較通用化的存儲系統,而資料庫是一種更優化的存儲系統。資料庫也有幾種分類,但現在最主要的就是關係型資料庫。其實,說穿了,它主要就是幫助我們對數據進行高效的增、刪、改、查。你如果學了就知道,資料庫一般還對應一種結構化查詢語言。通過這種語言來操作資料庫,我們能完成很多複雜的數據管理,這在一般的文件管理系統是沒有實現的。而且資料庫對存儲的數據也做了結構化的優化,方便你更加高效的管理數據,比如索引機制之類的。


簡單的說哈,便於檢索、更新、統計,好的資料庫設計,沒有插入異常,刪除異常,數據冗餘很少,對數據的利用效率高,方便管理,而這些工作不通過資料庫你直接做會非常可怕。可以查一下資料庫的產生來源


資料庫(Database)是按照數據結構來組織、存儲和管理數據的倉庫,它產生於距今五十年前,隨著信息技術和市場的發展,特別是二十世紀九十年代以後,數據管理不再僅僅是存儲和管理數據,而轉變成用戶所需要的各種數據管理的方式。資料庫有很多種類型,從最簡單的存儲有各種數據的表格到能夠進行海量數據存儲的大型資料庫系統都在各個方面得到了廣泛的應用。定義1  嚴格地說,資料庫是「按照數據結構來組織、存儲和管理數據的倉庫」。在經濟管理的日常工作中,常常需要把某些相關的數據放進這樣的「倉庫」,並根據管理的需要進行相應的處理。例如,企業或事業單位的人事部門常常要把本單位職工的基本情況(職工號、姓名、年齡、性別、籍貫、工資、簡歷等)存放在表中,這張表就可以看成是一個資料庫。有了這個"數據倉庫"我們就可以根據需要隨時查詢某職工的基本情況,也可以查詢工資在某個範圍內的職工人數等等。這些工作如果都能在計算機上自動進行,那我們的人事管理就可以達到極高的水平。此外,在財務管理、倉庫管理、生產管理中也需要建立眾多的這種"資料庫",使其可以利用計算機實現財務、倉庫、生產的自動化管理。

  J.Martin給資料庫下了一個比較完整的定義:資料庫是存儲在一起的相關數據的集合,這些數據是結構化的,無有害的或不必要的冗餘,並為多種應用服務;數據的存儲獨立於使用它的程序;對資料庫插入新數據,修改和檢索原有數據均能按一種公用的和可控制的方式進行。當某個系統中存在結構上完全分開的若干個資料庫時,則該系統包含一個「資料庫集合」。定義2  資料庫是依照某種數據模型組織起來並存放二級存儲器中的數據集合。這種數據集合具有如下特點:儘可能不重複,以最優方式為某個特定組織的多種應用服務,其數據結構獨立於使用它的應用程序,對數據的增、刪、改和檢索由統一軟體進行管理和控制。從發展的歷史看,資料庫是數據管理的高級階段,它是由文件管理系統發展起來的。定義3  (伯爾尼公約議定書專家委員會的觀點)

  所有的信息(數據事實等)的編纂物,不論其是以印刷形式,計算機存儲單元形式,還是其它形式存在,都應視為「資料庫」。

  數字化內容選擇的原因有很多,概括起來主要有:

  (1)存儲空間的原因。數字化的產品是通過網路被廣大用戶存取利用,而大家都知道數字化產品是存放在磁碟陣列上的,磁碟陣列由伺服器來管理,磁碟空間是有限的,伺服器的能力也是有限的,不可能無限量地存入數字資源,這就需要我們對文獻資源數字化內容進行選擇。

  (2)解決數字化生產高成本和圖書館經費有限性之間矛盾的需要。幾乎沒有圖書館有充足的資源來對整個館藏進行數字化,內容選擇不可避免。

  (3)數字資源管理的需要。技術的快速發展使數字化項目所生成的數字資源的生命周期越來越短,投入巨資進行數字遷移是延長數字資源生命的1個重要途徑,昂貴的維護成本就必須考慮數字化的內容選擇。

  資料庫發展史資料庫技術從誕生到現在,在不到半個世紀的時間裡,形成了堅實的理論基礎、成熟的商業產品和廣泛的應用領域,吸引越來越多的研究者加入。資料庫的誕生和發展給計算機信息管理帶來了一場巨大的革命。三十多年來,國內外已經開發建設了成千上萬個資料庫,它已成為企業、部門乃至個人日常工作、生產和生活的基礎設施。同時,隨著應用的擴展與深入,資料庫的數量和規模越來越大,資料庫的研究領域也已經大大地拓廣和深化了。30年間資料庫領域獲得了三次計算機圖靈獎(C.W. Bachman,E.F.Codd, J.Gray),更加充分地說明了資料庫是一個充滿活力和創新精神的領域。就讓我們沿著歷史的軌跡,追溯一下資料庫的發展歷程。

  傳統上,為了確保企業持續擴大的IT系統穩定運行,一般用戶信息中心往往不僅要不斷更新更大容量的IT運維軟硬體設備,極大浪費企業資源;更要長期維持一支由資料庫維護、伺服器維護、機房值班等各種維護人員組成的運維大軍,維護成本也隨之節節高升。為此,企業IT決策者開始思考:能不能像擰水龍頭一樣按需調節的使用IT運維服務?而不是不斷增加已經價格不菲的運維成本。定義4  資料庫(DataBase,DB)是一個長期存儲在計算機內的、有組織的、有共享的、統一管理的數據集合。它是一個按數據結構來存儲和管理數據的計算機軟體系統。資料庫的概念實際包括兩層意思:

  (1)資料庫是一個實體,它是能夠合理保管數據的「倉庫」,用戶在該「倉庫」中存放要管理的事務數據,「數據」和「庫」兩個概念結合成為資料庫。

  (2)資料庫是數據管理的新方法和技術,它能更合適的組織數據、更方便的維護數據、更嚴密的控制數據和更有效的利用數據。


ok,資料庫是用來幫你組織數據的工具。不是幫你存儲的。不管什麼資料庫,最終還是落到磁碟上存儲的一個個文件。而文件裡面的內容是什麼格式則是由資料庫來決定的。你只管通過資料庫提供的介面,比如sql,來存取你想要的數據,資料庫來用最高效的方法來在硬碟上讀寫。資料庫為你提供了數據存取的抽象層,與磁碟無關。


資料庫也是存在硬碟上的,分為sql和nosql不同的是哪個更方便crud以及在高並發,大量數據存取的能力,一般情況下sql有很大優勢,能滿足基本需要,但在高並發,大量數據存取,例如騰訊,微博之類的nosql有明顯的優勢,最近一直在研究mongodb,很不錯


推薦一門斯坦福的資料庫公開課Introduction to Databases:http://www.db-class.org


舉個資料庫的例子:

姓名 性別 年齡

張三 男 21歲

李四 男 20歲

王五 男 19歲

以上是一個資料庫的內容。

這些信息可以採用某種文件形式保存在計算機磁碟上,如保存為文本文件: d:
ames.txt。

可以認為是資料庫以文件的形式存儲在磁碟。之後可以通過命令進行檢索、修改、統計。

資料庫文件和最後的那些操作命令,就形成資料庫軟體系統。


簡單說,資料庫:結構化,高效率,海量


存放數據的倉庫


資料庫支持對數據的通用存儲和管理,提供數據的快速查詢,支持事務,滿足ACID


推薦閱讀:

有哪些好用的SwitchySharp在線規則列表?
15 歲開始學 C++,html,PHP 和 Linux 是太早了么?
退出中國市場後,Google 在北京和上海的辦公室現在在做什麼?
微軟擁有如此多優秀的產品,推廣卻十分不力,微軟的營銷到底是什麼水平?
入門設計模式,以下兩本書哪一本比較好?

TAG:資料庫 | 信息技術IT |