資料庫通常分為層次式資料庫、網絡式資料庫和關系式資料庫三種。而不同的資料庫是按不同的資料結構來聯系群組織的。
而在當今的網際網路中,最常見的資料庫模型主要是兩種,即關系型資料庫和非關系型資料庫。
資料庫分類
雖然網狀資料庫和層次資料庫已經很好的解決了資料的集中和共享問題,但是在資料庫獨立性和抽象級别上扔有很大欠缺。使用者在對這兩種資料庫進行存取時,仍然需要明确資料的存儲結構,指出存取路徑。而關系型資料庫就可以較好的解決這些問題。
關系型資料庫模型是把複雜的資料結構歸結為簡單的二進制關系(即二維表格形式)。在關系型資料庫中,對資料的操作幾乎全部建立在一個或多個關系表格上,通過對這些關聯的表格分類、合并、連接配接或選取等運算來實作資料庫的管理。
關系型資料庫誕生40多年了,從理論産生發展到現實産品,例如:Oracle和MySQL,Oracle在資料庫領域上升到霸主地位,形成每年高達數百億美元的龐大産業市場。
關系型資料庫舉例
NoSQL,泛指非關系型的資料庫。随着網際網路web2.0網站的興起,傳統的關系資料庫在應付web2.0網站,特别是超大規模和高并發的SNS類型的web2.0純動态網站已經顯得力不從心,暴露了很多難以克服的問題,而非關系型的資料庫則由于其本身的特點得到了非常迅速的發展。NoSql資料庫在特定的場景下可以發揮出難以想象的高效率和高性能,它是作為對傳統關系型資料庫的一個有效的補充。
NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項全新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關系型的資料存儲,相對于鋪天蓋地的關系型資料庫運用,這一概念無疑是一種全新的思維的注入。
(1)鍵值存儲資料庫(key-value)
鍵值資料庫就類似傳統語言中使用的哈希表。可以通過key來添加、查詢或者删除資料庫,因為使用key主鍵通路,是以會獲得很高的性能及擴充性。
鍵值資料庫主要使用一個哈希表,這個表中有一個特定的鍵和一個指針指向特定的資料。Key/value模型對于IT系統來說的優勢在于簡單、易部署、高并發。
典型産品:Memcached、Redis、MemcacheDB
(2)列存儲(Column-oriented)資料庫
列存儲資料庫将資料存儲在列族中,一個列族存儲經常被一起查詢的相關資料,比如人類,我們經常會查詢某個人的姓名和年齡,而不是薪資。這種情況下姓名和年齡會被放到一個列族中,薪資會被放到另一個列族中。
這種資料庫通常用來應對分布式存儲海量資料。
典型産品:Cassandra、HBase
(3)面向文檔(Document-Oriented)資料庫
文檔型資料庫的靈感是來自于Lotus Notes辦公軟體,而且它同第一種鍵值資料庫類似。該類型的資料模型是版本化的文檔,半結構化的文檔以特定的格式存儲,比如JSON。文檔型資料庫可以看作是鍵值資料庫的更新版,允許之間嵌套鍵值。而且文檔型資料庫比鍵值資料庫的查詢效率更高。
面向文檔資料庫會将資料以文檔形式存儲。每個文檔都是自包含的資料單元,是一系列資料項的集合。每個資料項都有一個名詞與對應值,值既可以是簡單的資料類型,如字元串、數字和日期等;也可以是複雜的類型,如有序清單和關聯對象。資料存儲的最小機關是文檔,同一個表中存儲的文檔屬性可以是不同的,資料可以使用XML、JSON或JSONB等多種形式存儲。
典型産品:MongoDB、CouchDB
(4)圖形資料庫
圖形資料庫允許我們将資料以圖的方式存儲。實體會被作為頂點,而實體之間的關系則會被作為邊。比如我們有三個實體,Steve Jobs、Apple和Next,則會有兩個“Founded by”的邊将Apple和Next連接配接到Steve Jobs。
典型産品:Neo4J、InforGrid