1. 程式人生 > >資料庫介紹與分類

資料庫介紹與分類

前言:在現今網際網路企業坐擁著爆炸式資料的資訊時代,當掌握大量資料之後,如何分析使用它顯得更加重要。當大量的資料集聚在一起後,有的人就在裡面看到了機遇、看到了創新、看到了、、、那麼,你又看到了什麼?由此個人覺得 瞭解 儲存資料的資料庫、資料管理系統DBMS,其實還是需要的。(儘管或許當我意識到的時候已晚了些,但是求學無期限)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

1.1     資料庫介紹

1.1.1什麼是資料庫

資料庫就是一個以某種有組織的方式儲存的資料集合。

簡單的說,資料庫(database)就是一個存放資料的倉庫,這個倉庫是按照一定的資料結構(資料結構是指資料的組織形式或資料之間的聯絡)來組織、儲存的,我們可以通過資料提供的多種方法來管理資料庫裡的資料。

當人們收集了大量的資料後,應該把它們儲存起來進入近一步的處理,進一步的抽取有用的資訊。當年人們把資料存放在檔案櫃中,可現在隨著社會的發展,資料量急劇增長,現在人們就藉助計算機和資料庫技術科學的儲存大量的資料,以便能更好的利用這些資料資源。

1.2資料庫的種類

    資料庫通常分為層次式資料庫、網路式資料庫和關係式資料庫三種。而不同的資料庫是按不同的

資料結構來聯絡和組織的。而在當今的網際網路中,最常見的資料庫模型主要是兩種,即關係型資料庫和非關係型資料庫。

1.2.1關係型資料庫介紹

(1)、關係型資料庫的由來

    雖然網狀資料庫和層次資料庫已經很好的解決了資料的集中和共享問題,但是在資料庫獨立性和抽象級別上扔有很大欠缺。使用者在對這兩種資料庫進行存取時,仍然需要明確資料的儲存結構,指出存取路徑。而關係型資料庫就可以較好的解決這些問題。

(2)、關係型資料庫介紹

  關係型資料庫模型是把複雜的資料結構歸結為簡單的二元關係(即二維表格形式)。在關係型資料庫中,對資料的操作幾乎全部建立在一個或多個關係表格上,通過對這些關聯的表格分類、合併、連線或選取等運算來實現資料庫的管理。

  關係型資料庫誕生40多年了,從理論產生髮展到現實產品,例如:Oracle和MySQL,Oracle在資料庫領域上升到霸主地位,形成每年高達數百億美元的龐大產業市場。

1.2資料庫的種類

    資料庫通常分為層次式資料庫、網路式資料庫和關係式資料庫三種。而不同的資料庫是按不同的資料結構來聯絡和組織的。而在當今的網際網路中,最常見的資料庫模型主要是兩種,即關係型資料庫和非關係型資料庫。

1.2.1關係型資料庫介紹

(1)、關係型資料庫的由來

    雖然網狀資料庫和層次資料庫已經很好的解決了資料的集中和共享問題,但是在資料庫獨立性和抽象級別上扔有很大欠缺。使用者在對這兩種資料庫進行存取時,仍然需要明確資料的儲存結構,指出存取路徑。而關係型資料庫就可以較好的解決這些問題。

(2)、關係型資料庫介紹

  關係型資料庫模型是把複雜的資料結構歸結為簡單的二元關係(即二維表格形式)。在關係型資料庫中,對資料的操作幾乎全部建立在一個或多個關係表格上,通過對這些關聯的表格分類、合併、連線或選取等運算來實現資料庫的管理。

  關係型資料庫誕生40多年了,從理論產生髮展到現實產品,例如:Oracle和MySQL,Oracle在資料庫領域上升到霸主地位,形成每年高達數百億美元的龐大產業市場。

(3)、關係型資料庫表格之間的關係舉例


學生表

學號

姓名

年齡

S001

張三

24

S002

李四

25

S003

王二麻子

26


課程表

課程號

課程名

學分

C001

Linux

25

C002

Python

25

C003

MySQL

25


選課表

學號

課程號

成績

S001

C001

90

S002

C001

97

S003

C001

94


1.2.2非關係型資料庫介紹

1.2.2.1 非關係型資料庫誕生背景

NoSQL,泛指非關係型的資料庫。隨著網際網路web2.0網站的興起,傳統的關係資料庫在應付web2.0網站,特別是超大規模和高併發的SNS型別的web2.0純動態網站已經顯得力不從心,暴露了很多難以克服的問題,而非關係型的資料庫則由於其本身的特點得到了非常迅速的發展。NoSql資料庫在特定的場景下可以發揮出難以想象的高效率和高效能,它是作為對傳統關係型資料庫的一個有效的補充。

   NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,是一項全新的資料庫革命性運動,早期就有人提出,發展至2009年趨勢越發高漲。NoSQL的擁護者們提倡運用非關係型的資料儲存,相對於鋪天蓋地的關係型資料庫運用,這一概念無疑是一種全新的思維的注入。

1.2.2.2 非關係型資料庫種類

(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

1.3 常用關係型資料庫產品介紹

1.3.1 Oracle資料庫

ORACLE資料庫系統是美國ORACLE公司(甲骨文)提供的以分散式資料庫為核心的一組軟體產品,是目前最流行的客戶/伺服器(CLIENT/SERVER)或B/S體系結構的資料庫之一。比如SilverStream就是基於資料庫的一種中介軟體。ORACLE資料庫是目前世界上使用最為廣泛的資料庫管理系統,作為一個通用的資料庫系統,它具有完整的資料管理功能;作為一個關係資料庫,它是一個完備關係的產品;作為分散式資料庫它實現了分散式處理功能。但它的所有知識,只要在一種機型上學習了ORACLE知識,便能在各種型別的機器上使用它。

Oracle資料庫最新版本為Oracle Database 12c。Oracle資料庫12c 引入了一個新的多承租方架構,使用該架構可輕鬆部署和管理資料庫雲。此外,一些創新特性可最大限度地提高資源使用率和靈活性,如Oracle Multitenant可快速整合多個數據庫,而Automatic Data Optimization和Heat Map能以更高的密度壓縮資料和對資料分層。這些獨一無二的技術進步再加上在可用性、安全性和大資料支援方面的主要增強,使得Oracle資料庫12c 成為私有云和公有云部署的理想平臺。

1.3.2 MySQL資料庫

MySQL(發音為"my ess cue el",不是"my sequel")是一種開放原始碼的關係型資料庫管理系統(RDBMS),MySQL資料庫系統使用最常用的資料庫管理語言--結構化查詢語言(SQL)進行資料庫管理。

由於MySQL是開放原始碼的,因此任何人都可以在General Public License的許可下下載並根據個性化的需要對其進行修改。MySQL因為其速度、可靠性和適應性而備受關注。大多數人都認為在不需要事務化處理的情況下,MySQL是管理內容最好的選擇。

MySQL這個名字,起源不是很明確。一個比較有影響的說法是,基本指南和大量的庫和工具帶有字首“my”已經有10年以上,而且不管怎樣,MySQL AB創始人之一的Monty Widenius的女兒也叫My。這兩個到底是哪一個給出了MySQL這個名字至今依然是個迷,包括開發者在內也不知道。

1.3.3 MariaDB資料庫

MariaDB資料庫管理系統是MySQL的一個分支,主要由開源社群在維護,採用GPL授權許可。開發這個分支的原因之一是:甲骨文公司收購了MySQL後,有將MySQL閉源的潛在風險,因此社群採用分支的方式來避開這個風險。 MariaDB的目的是完全相容MySQL,包括API和命令列,使之能輕鬆成為MySQL的代替品。在儲存引擎方面,使用XtraDB(英語:XtraDB)來代替MySQL的InnoDB。 MariaDB由MySQL的創始人Michael Widenius(英語:Michael Widenius)主導開發,他早前曾以10億美元的價格,將自己建立的公司MySQL AB賣給了SUN,此後,隨著SUN被甲骨文收購,MySQL的所有權也落入Oracle的手中。MariaDB名稱來自Michael Widenius的女兒Maria的名字。

1.3.4 SqlServer資料庫

SQL Server是由Microsoft開發和推廣的關係資料庫管理系統(DBMS),它最初是由Microsoft、Sybase和Ashton-Tate三家公司共同開發的,並於1988年推出了第一個OS/2版本。Microsoft SQL Server近年來不斷更新版本,1996年,Microsoft 推出了SQL Server 6.5版本;1998年,SQL Server 7.0版本和使用者見面;SQL Server 2000是Microsoft公司於2000年推出,目前最新版本是2012年3月份推出的SQL SERVER 2012。

1.3.5 Access資料庫

Microsoft Office Access是微軟把資料庫引擎的圖形使用者介面軟體開發工具結合在一起的一個資料庫管理系統。它是微軟OFFICE的一個成員, 在包括專業版和更高版本的office版本里面被單獨出售。2012年12月4日,最新的微軟Office Access 2013在微軟Office 2013裡釋出,微軟Office Access 2010 是前一個版本。

MS ACCESS以它自己的格式將資料儲存在基於Access Jet的資料庫引擎裡。它還可以直接匯入或者連結資料(這些資料儲存在其他應用程式和資料庫)。

軟體開發人員和資料架構師可以使用Microsoft Access開發應用軟體,“高階使用者”可以使用它來構建軟體用程式。和其他辦公應用程式一樣,ACCESS支援Visual Basic巨集語言,它是一個面向物件的程式語言,可以引用各種物件,包括DAO(資料訪問物件),ActiveX資料物件,以及許多其他的ActiveX元件。可視物件用於顯示錶和報表,他們的方法和屬性是在VBA程式設計環境下,VBA程式碼模組可以宣告和呼叫Windows作業系統函式。

1.3.6 其他不常用資料庫

    DB2,PostgreSQL,Informix,Syase等。

1.4 常用非關係型資料庫產品介紹

1.4.1 Memcached(key-value)

memcached是一套分散式的快取系統,當初是Danga Interactive為了LiveJournal所發展的,但被許多軟體(如MediaWiki)所使用。這是一套開放原始碼軟體,以BSD license授權協議釋出。[1] 

memcached缺乏認證以及安全管制,這代表應該將memcached伺服器放置在防火牆後。[1] 

memcached的API使用32位元的迴圈冗餘校驗(CRC-32)計算鍵值後,將資料分散在不同的機器上。當表格滿了以後,接下來新增的資料會以LRU機制替換掉。由於memcached通常只是當作快取系統使用,所以使用memcached的應用程式在寫回較慢的系統時(像是後端的資料庫)需要額外的程式碼更新memcached內的資料[1] 

memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 為首開發的一款軟體。已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務中提高Web應用擴充套件性的重要因素。許多Web應用都將資料儲存到RDBMS中,應用伺服器從中讀取資料並在瀏覽器中顯示。但隨著資料量的增大、訪問的集中,就會出現RDBMS的負擔加重、資料庫響應惡化、網站顯示延遲等重大影響。

這時就該memcached大顯身手了。memcached是高效能的分散式記憶體快取伺服器。一般的使用目的是,通過快取資料庫查詢結果,減少資料庫訪問次數,以提高動態Web應用的速度、提高可擴充套件性。

Memcached 的守護程序(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,並通過memcached協議與守護程序通訊。但是它並不提供冗餘(例如,複製其hashmap條目);當某個伺服器S停止執行或崩潰了,所有存放在S上的鍵/值對都將丟失。

Memcached由Danga Interactive開發,其最新版本釋出於2010年,作者為Anatoly Vorobey和Brad Fitzpatrick。用於提升LiveJournal . com訪問速度的。LJ每秒動態頁面訪問量幾千次,使用者700萬。Memcached將資料庫負載大幅度降低,更好的分配資源,更快速訪問。

1.4.2 Redis(key-value)

redis是一個key-value儲存系統。和Memcached類似,它支援儲存的value型別相對更多,包括string(字串)、list(連結串列)、set(集合)、zset(sorted set --有序集合)和hash(雜湊型別)。這些資料型別都支援push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支援各種不同方式的排序。與memcached一樣,為了保證效率,資料都是快取在記憶體中。區別的是redis會週期性的把更新的資料寫入磁碟或者把修改操作寫入追加的記錄檔案,並且在此基礎上實現了master-slave(主從)同步。

Redis 是一個高效能的key-value資料庫。 redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部 分場合可以對關係資料庫起到很好的補充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客戶端,使用很方便。[1] 

Redis支援主從同步。資料可以從主伺服器向任意數量的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。這使得Redis可執行單層樹複製。從盤可以有意無意的對資料進行寫操作。由於完全實現了釋出/訂閱機制,使得從資料庫在任何地方同步樹時,可訂閱一個頻道並接收主伺服器完整的訊息釋出記錄。同步對讀取操作的可擴充套件性和資料冗餘很有幫助。

1.4.3 MongoDB(Document-oriented)

MongoDB是一個基於分散式檔案儲存的資料庫。由C++語言編寫。旨在為WEB應用提供可擴充套件的高效能資料儲存解決方案。

MongoDB 是一個介於關係資料庫和非關係資料庫之間的產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。他支援的資料結構非常鬆散,是類似jsonbson格式,因此可以儲存比較複雜的資料型別。Mongo最大的特點是他支援的查詢語言非常強大,其語法有點類似於面向物件的查詢語言,幾乎可以實現類似關係資料庫單表查詢的絕大部分功能,而且還支援對資料建立索引

1.4.4 Cassandra(Column-oriented)

Cassandra是一個混合型的非關係的資料庫,類似於Google的BigTable。其主要功能比Dynamo (分散式的Key-Value儲存系統)更豐富,但支援度卻不如文件儲存MongoDB(介於關係資料庫和非關係資料庫之間的開源產品,是非關係資料庫當中功能最豐富,最像關係資料庫的。支援的資料結構非常鬆散,是類似json的bjson格式,因此可以儲存比較複雜的資料型別)。Cassandra最初由Facebook開發,後轉變成了開源專案。它是一個網路社交雲端計算方面理想的資料庫。以Amazon專有的完全分散式的Dynamo為基礎,結合了Google BigTable基於列族(Column Family)的資料模型。P2P去中心化的儲存。很多方面都可以稱之為Dynamo 2.0。[

1.4.5 其他不常用非關係型資料庫

    HBase、MemacheDB、BerkeleyDB、Tokyo Cabinet

轉載自:http://www.bubuko.com/infodetail-469185.html

相關推薦

資料庫介紹分類

前言:在現今網際網路企業坐擁著爆炸式資料的資訊時代,當掌握大量資料之後,如何分析使用它顯得更加重要。當大量的資料集聚在一起後,有的人就在裡面看到了機遇、看到了創新、看到了、、、那麼,你又看到了什麼?由此個人覺得 瞭解 儲存資料的資料庫、資料管理系統DBMS,其實還是需要的。

編程語言介紹分類

好的 同時 嵌入式系統開發 sun 有一個 移動互聯網 事情 移植 程序執行效率 什麽是編程?為什麽要編程? 編程 是個動詞,編程==寫代碼,寫代碼為了什麽? 為了讓計算機幹你想要幹的事情,比如,馬化騰想跟別人聊天,於是寫了個聊天軟件,這個軟件就是一堆代碼的集合,這些代碼是

不平衡資料分類演算法介紹比較

介紹 在資料探勘中,經常會存在不平衡資料的分類問題,比如在異常監控預測中,由於異常就大多數情況下都不會出現,因此想要達到良好的識別效果普通的分類演算法還遠遠不夠,這裡介紹幾種處理不平衡資料的常用方法及對比。 符號表示 記多數類的樣本集合為L,少數類的樣本集合為S。

嵌入式資料庫BDB的介紹使用案例

一、Berkeley DB簡介         Berkeley DB是一個開放原始碼的內嵌式資料庫管理系統,能夠為應用程式提供高效能的資料管理服務。應用它程式設計師只需要呼叫一些簡單的API就可以完成對資料的訪問和管理。

條形碼 - 技術優勢分類介紹

  條形碼是迄今為止最經濟、實用的自動識別技術,其廣泛應用源於如下幾個優點: 1.可靠準確。鍵盤輸入資料出錯率為三百分之一,利用光學字元識別技術出錯率為萬分之一,而採用條形碼技術誤位元速率低於百萬分之一。 2. 資料輸入速度快。條形碼輸入的速度是鍵盤輸入的5倍,並能實現“即

Nosql資料庫介紹關係型資料庫的比較

一、nosql資料庫介紹 NoSQL = Not only SQL,非關係型資料庫 nosql儲存的是非關係型資料,像文件啊,影象啊,很明顯這些大的資料單臺伺服器是不夠儲存的,所以它支援高可擴充套件性,分散式計算。常用於分散式系統。 NoSQL資料庫的型別:鍵值資料庫(redis

Spark 中運算元功能分類介紹

    最近看了一些SPARK資料,還沒有系統性的整理,這裡先歸納一下spark中運算元的總結。如有什麼錯誤或者不妥之處,希望大神們指出,相互交流共同進步!!哈哈哈     運算元的定義:RDD中定義的函式,可以對RDD中的資料進行轉換和操作。     下面根據運算元型別的

時間序列資料庫KDB Java結合使用介紹 -- 1 KDB Java程式碼解讀

KDB是Kx System開發的時間序列資料庫,通常用於處理交易行情相關資料。具體介紹可以參考:https://en.wikipedia.org/wiki/Kdb%2B。 在我們的計價系統中使用kdb來儲存計價資料,由於KDB是基於Q語言的,我們的計價系統是Java寫的,所

資料庫查詢父分類分類

首先建立資料表tmpCity,結構與資料如下(id標識,title名稱,parentID父級id,leaves幾級分類): oracle 根據id,查詢其上下級的所有組織: --查詢下級的所有區域 select * from tmpCity A where id<

Java秒殺系統實戰系列~整體業務流程介紹資料庫設計

摘要: 本篇博文是“Java秒殺系統實戰系列文章”的第三篇,本篇博文將主要介紹秒殺系統的整體業務流程,並根據相應的業務流程進行資料庫設計,最終採用Mybatis逆向工程生成相應的實體類Entity、操作Sql的介面Mapper以及寫動態Sql的配置檔案Mapper.xml。內容:

算法和數據結構~各位排序算法的介紹實現(C#)

index per 歸並 一次 集中 div lag 合並 如何 排序是指將元素集合按照規定的順序排列。通常有兩種排序方法,升序排列和降序排列。例如,對整數集{5,2,7,1}進行升序排列,結果為{1,2,5,7},對其進行降序排列結果為{7,5,2,1}。總的來說,排

文件上傳到tomcat服務器 commons-fileupload的詳細介紹使用

部分 中文字符 form 引用 編碼 path -type dex item 三個類:DiskFileUpload、FileItem和FileUploadException。這三個類全部位於org.apache.commons.fileupload包中。 首先需要說明一下f

Linux bash介紹使用

ash 倒數 想要 之間 箭頭 單詞 一般來說 周期 use Linux————bash的簡單使用 對於一個操作系統來說,shell相當於內核kernel外的一層外殼,作為用戶接口。一般來說,操作系統的接口分為兩類:GLI:command line interface命令行

分頁功能 分類查詢功能合並

nat hidden 後臺 item ble fas turn items where 功能的合並 首要的就是要找出兩個功能的共同點。這裏主要是用Response展示數據,通過tsql語句查詢的集合作為數據源,所以這裏將兩個tsql合並,來實現功能的合並。 面板界面代碼:

機器學習入門 - 1. 介紹決策樹(decision tree)

recursion machine learning programmming 機器學習(Machine Learning) 介紹與決策樹(Decision Tree)機器學習入門系列 是 個人學習過程中的一些記錄與心得。其主要以要點形式呈現,簡潔明了。1.什麽是機器學習?一個比較概括的理解是:

Nginx學習筆記01Nginx簡要介紹目錄說明

server 簡單 adt 服務器 網站目錄 interface simple 內核 優化 1.1. Nginx簡要介紹 (1)Nginx是Web服務器。 Apache、IIS:經典的通用Web服務器。 Lighttpd、Nginx:輕量級Web服務器。 Tomcat、

關於RestFul API 介紹實踐

clas 分享 ice div 之前 api 設計 article alt 之前演示的PPT,直接看圖。。。 ?參考鏈接: ?RESTful API 設計最佳實踐 ?RESTful API 設計指南 ?SOAP webserivce和 RESTfulwebse

mybatis介紹環境搭建

mybatis一、不用純jdbc的原因,即缺點。1、數據庫理解,使用時創建,不用時釋放,會對數據庫進行頻繁的鏈接開啟和關閉,造成數據庫的資源浪費,影響數據庫的性能。設想:使用數據庫的連接池。2、將sql語句硬編碼到java代碼中,不利於系統維護。設想:將sql放到配置文件中。3、向preparedstatem

C#操作Word Aspose.Words組件介紹及使用—基本介紹DOM概述

控制 包含 枚舉類 讀取 標記 服務器端 方法 python level 1.基本介紹 Aspose.Words是一個商業.NET類庫,可以使得應用程序處理大量的文件任務。Aspose.Words支持Doc,Docx,RTF,HTML,OpenDocument,PDF,XP

內核調試神器SystemTap — 簡單介紹使用(一)

kprobe utils its preview response art sym about output a linux trace/probe tool. 官網:https://sourceware.org/systemtap/ 簡單介紹 S