共找到2條詞條名為資料庫的結果 展開
- 電子化的文件櫃
- 漢語詞語
資料庫
電子化的文件櫃
資料庫,簡而言之可視為電子化的文件櫃——存儲電子文件的處所,用戶可以對文件中的數據運行新增、截取、更新、刪除等操作。
所謂“資料庫”是以一定方式儲存在一起、能與多個用戶共享、具有儘可能小的冗餘度、與應用程序彼此獨立的數據集合。
資料庫是存放數據的倉庫。它的存儲空間很大,可以存放百萬條、千萬條、上億條數據。但是資料庫並不是隨意地將數據進行存放,是有一定的規則的,否則查詢的效率會很低。當今世界是一個充滿著數據的網際網路世界,充斥著大量的數據。即這個網際網路世界就是數據世界。數據的來源有很多,比如出行記錄、消費記錄、瀏覽的網頁、發送的消息等等。除了文本類型的數據,圖像、音樂、聲音都是數據。
資料庫是一個按數據結構來存儲和管理數據的計算機軟體系統。資料庫的概念實際包括兩層意思:
(1)資料庫是一個實體,它是能夠合理保管數據的“倉庫”,用戶在該“倉庫”中存放要管理的事務數據,“數據”和“庫”兩個概念結合成為資料庫。
(2)資料庫是數據管理的新方法和技術,它能更合適的組織數據、更方便的維護數據、更嚴密的控制數據和更有效的利用數據。
在資料庫的發展歷史上,資料庫先後經歷了層次資料庫、網狀資料庫和關係資料庫等各個階段的發展,資料庫技術在各個方面的快速的發展。特別是關係型資料庫已經成為目前資料庫產品中最重要的一員,80年代以來,幾乎所有的資料庫廠商新出的資料庫產品都支持關係型資料庫,即使一些非關係資料庫產品也幾乎都有支持關係資料庫的介面。這主要是傳統的關係型資料庫可以比較好的解決管理和存儲關係型數據的問題。隨著雲計算的發展和大數據時代的到來,關係型資料庫越來越無法滿足需要,這主要是由於越來越多的半關係型和非關係型數據需要用資料庫進行存儲管理,以此同時,分散式技術等新技術的出現也對資料庫的技術提出了新的要求,於是越來越多的非關係型資料庫就開始出現,這類資料庫與傳統的關係型資料庫在設計和數據結構有了很大的不同,它們更強調資料庫數據的高併發讀寫和存儲大數據,這類資料庫一般被稱為NoSQL(Not only SQL)資料庫。而傳統的關係型資料庫在一些傳統領域依然保持了強大的生命力。
資料庫管理系統是為管理資料庫而設計的電腦軟體系統,一般具有存儲、截取、安全保障、備份等基礎功能。資料庫管理系統可以依據它所支持的資料庫模型來作分類,例如關係式、XML;或依據所支持的計算機類型來作分類,例如伺服器群集、行動電話;或依據所用查詢語言來作分類,例如SQL、XQuery;或依據性能衝量重點來作分類,例如最大規模、最高運行速度;亦或其他的分類方式。不論使用哪種分類方式,一些DBMS能夠跨類別,例如,同時支持多種查詢語言。
資料庫管理系統是資料庫系統的核心組成部分,主要完成對資料庫的操縱與管理功能,實現資料庫對象的創建、資料庫存儲數據的查詢、添加、修改與刪除操作和資料庫的用戶管理、許可權管理等。它的安全直接關係到整個資料庫系統的安全,其防護手段主要有:
(1)使用正版資料庫管理系統並及時安裝相關補丁。
(2)做好用戶賬戶管理,禁用默認超級管理員賬戶或者為超級管理員賬戶設置複雜密碼;為應用程序分別分配專用賬戶進行訪問;設置用戶登錄時間及登錄失敗次數限制,防止暴力破解用戶密碼。
(3)分配用戶訪問許可權時,堅持最小許可權分配原則,並限制用戶只能訪問特定資料庫,不能同時訪問其他資料庫。
(4)修改資料庫默認訪問埠,使用防火牆屏蔽掉對 外開放的其他埠,禁止一切外部的埠探測行為。
(5)對資料庫內存儲的重要數據、敏感數據進行加密存儲,防止資料庫備份或數據文件被盜而造成數據泄露。
(6)設置好資料庫的備份策略,保證資料庫被破壞后能迅速恢復。
(7)對資料庫內的系統存儲過程進行合理管理,禁用掉不必要的存儲過程,防止利用存儲過程進行資料庫探測與攻擊。
(8)啟用資料庫審核功能,對資料庫進行全面的事件跟蹤和日誌記錄。
● MySQLMariaDB(MySQL的代替品)Percona Server(MySQL的代替品·)
● PostgreSQL
● Microsoft Access
● Microsoft SQL Server
● Google Fusion Tables
● FileMaker
● Oracle資料庫
● Sybase
● dBASE
● Clipper
● FoxPro
● foshub
幾乎所有的資料庫管理系統都配備了一個開放式資料庫連接(ODBC)驅動程序,令各個資料庫之間得以互相集成。
主條目:NoSQL
● BigTable(Google)
● Cassandra
● MongoDB
● CouchDB
鍵值(key-value)資料庫
● Apache Cassandra(為Facebook所使用):高度可擴展
● Dynamo
● LevelDB(Google)
● 對象模型
● 層次模型(輕量級數據訪問協議)
● 網狀模型(大型數據儲存)
● 關係模型
● 面向對象模型
● 半結構化模型
● 平面模型(表格模型,一般在形式上是一個二維數組。如表格模型數據Excel)
資料庫的架構可以大致區分為三個概括層次:內層、概念層和外層。
● 內層:最接近實際存儲體,亦即有關數據的實際存儲方式。
● 外層:最接近用戶,即有關個別用戶觀看數據的方式。
● 概念層:介於兩者之間的間接層。
主條目:資料庫索引
數據索引的觀念由來已久,像是一本書前面幾頁都有目錄,目錄也算是索引的一種,只是它的分類較廣,例如車牌、身份證字型大小、條碼等,都是一個索引的號碼,當我們看到號碼時,可以從號碼中看出其中的端倪,若是要找的人、車或物品,也只要提供相關的號碼,即可迅速查到正確的人事物。
另外,索引跟欄位有著相應的關係,索引即是由欄位而來,其中欄位有所謂的關鍵欄位(Key Field),該欄位具有唯一性,即其值不可重複,且不可為"空值(null)"。例如:在合併數據時,索引便是扮演欲附加欄位數據之指向性用途的角色。故此索引為不可重複性且不可為空。
主條目:資料庫事務
事務(transaction)是用戶定義的一個資料庫操作序列,這些操作要麼全做,要麼全不做,是一個不可分割的工作單位。事務的ACID特性:
● 基元性(atomicity)
● 一致性(consistency)
● 隔離性(isolation)
● 持續性(durability)
事務的併發性是指多個事務的并行操作輪流交叉運行,事務的併發可能會訪問和存儲不正確的數據,破壞交易的隔離性和資料庫的一致性。
網狀數據模型的數據結構 網狀模型 滿足下面兩個條件的基本層次聯繫的集合為網狀模型。 1. 允許一個以上的結點無雙親; 2. 一個結點可以有多於一個的雙親。
傳統的關係型資料庫採用表格的儲存方式,數據以行和列的方式進行存儲,要讀取和查詢都十分方便。而非關係型數據不適合這樣的表格存儲方式,通常以數據集的方式,大量的數據集中存儲在一起,類似於鍵值對、圖結構或者文檔。
關係型資料庫按照結構化的方法存儲數據,每個數據表都必須對各個欄位定義好(也就是先定義好表的結構),再根據表的結構存入數據,這樣做的好處就是由於數據的形式和內容在存入數據之前就已經定義好了,所以整個數據表的可靠性和穩定性都比較高,但帶來的問題就是一旦存入數據后,如果需要修改數據表的結構就會十分困難。而NoSQL資料庫由於面對的是大量非結構化的數據的存儲,它採用的是動態結構,對於數據類型和結構的改變非常的適應,可以根據數據存儲的需要靈活的改變資料庫的結構。
關係型資料庫為了避免重複、規範化數據以及充分利用好存儲空間,把數據按照最小關係表的形式進行存儲,這樣數據管理的就可以變得很清晰、一目了然,當然這主要是一張數據表的情況。如果是多張表情況就不一樣了,由於數據涉及到多張數據表,數據表之間存在著複雜的關係,隨著數據表數量的增加,數據管理會越來越複雜。而NoSQL資料庫的數據存儲方式是用平面數據集的方式集中存放,雖然會存在數據被重複存儲,從而造成存儲空間被浪費的問題(從當前的計算機硬體的發展來看,這樣的存儲空間浪費的問題微不足道),但是由於基本上單個資料庫都是採用單獨存放的形式,很少採用分割存放的方式,所以這樣數據往往能存成一個整體,這對於數據的讀寫提供了極大的方便。
當前社會和科學飛速發展,要支持日益增長的資料庫存儲需求當然要求資料庫有良好的擴展性能,並且要求資料庫支持更多數據併發量,擴展方式是NoSQL資料庫與關係型資料庫差別最大的地方,由於關係型資料庫將數據存儲在數據表中,數據操作的瓶頸出現在多張數據表的操作中,而且數據表越多這個問題越嚴重,如果要緩解這個問題,只能提高處理能力,也就是選擇速度更快性能更高的計算機,這樣的方法雖然可以一定的拓展空間,但這樣的拓展空間一定有非常有限的,也就是關係型資料庫只具備縱向擴展能力。而NoSQL資料庫由於使用的是數據集的存儲方式,它的存儲方式一定是分散式的,它可以採用橫向的方式來開展資料庫,也就是可以添加更多資料庫伺服器到資源池,然後由這些增加的伺服器來負擔數據量增加的開銷。
關係型資料庫採用結構化查詢語言(即SQL)來對資料庫進行查詢,SQL早已獲得了各個資料庫廠商的支持,成為資料庫行業的標準,它能夠支持資料庫的CRUD(增加,查詢,更新,刪除)操作,具有非常強大的功能,SQL可以採用類似索引的方法來加快查詢操作。NoSQL資料庫使用的是非結構化查詢語言(UnQL),它以數據集(像文檔)為單位來管理和操作數據,由於它沒有一個統一的標準,所以每個資料庫廠商提供產品標準是不一樣的,NoSQL中的文檔Id與關係型表中主鍵的概念類似,NoSQL資料庫採用的數據訪問模式相對SQL更簡單而精確。
在資料庫的設計開發過程中開發人員通常會面對同時需要對一個或者多個數據實體(包括數組、列表和嵌套數據)進行操作,這樣在關係型資料庫中,一個數據實體一般首先要分割成多個部分,然後再對分割的部分進行規範化,規範化以後再分別存入到多張關係型數據表中,這是一個複雜的過程。好消息是隨著軟體技術的發展,相當多的軟體開發平台都提供一些簡單的解決方法,例如,可以利用ORM層(也就是對象關係映射)來將資料庫中對象模型映射到基於SQL的關係型資料庫中去以及進行不同類型系統的數據之間的轉換。對於NoSQL資料庫則沒有這方面的問題,它不需要規範化數據,它通常是在一個單獨的存儲單元中存入一個複雜的數據實體。
關係型資料庫強調ACID規則(原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持久性(Durability)),可以滿足對事務性要求較高或者需要進行複雜數據查詢的數據操作,而且可以充分滿足資料庫操作的高性能和操作穩定性的要求。並且關係型資料庫十分強調數據的強一致性,對於事務的操作有很好的支持。關係型資料庫可以控制事務原子性細粒度,並且一旦操作有誤或者有需要,可以馬上回滾事務。而NoSQL資料庫強調BASE原則(基本可用(Basically Available)、軟狀態(Soft-state)、最終一致性(Eventual Consistency)),它減少了對數據的強一致性支持,從而獲得了基本一致性和柔性可靠性,並且利用以上的特性達到了高可靠性和高性能,最終達到了數據的最終一致性。NoSQL資料庫雖然對於事務操作也可以使用,但由於它是一種基於節點的分散式資料庫,對於事務的操作不能很好的支持,也很難滿足其全部的需求,所以NoSQL資料庫的性能和優點更多的體現在大數據的處理和資料庫的擴展方面。
關係型資料庫十分強調數據的一致性,並為此降低讀寫性能付出了巨大的代價,雖然關係型資料庫存儲數據和處理數據的可靠性很不錯,但一旦面對海量數據的處理的時候效率就會變得很差,特別是遇到高併發讀寫的時候性能就會下降的非常厲害。而NoSQL資料庫相對關係型資料庫優勢最大的恰恰是應對大數據方面,也就是對於大量的每天都產生非結構化的數據能夠高性能的讀寫,這是因為NoSQL資料庫是按key-value類型進行存儲的,以數據集的方式存儲的,因此無論是擴展還是讀寫都非常容易,並且NoSQL資料庫不需要關係型資料庫繁瑣的解析,所以NoSQL資料庫大數據管理、檢索、讀寫、分析以及可視化方面具有關係型資料庫不可比擬的優勢。
關係型資料庫常見的有Oracle,SQLServer,DB2,Mysql,除了Mysql大多數的關係型資料庫如果要使用都需要支付一筆價格高昂的費用,即使是免費的Mysql性能也受到了諸多的限制。而對於NoSQL資料庫,比較主流的有redis,HBase,MongoDb,memcache等產品,通常都採用開源的方式,不需要像關係型資料庫那樣,需要一筆高昂的花費。
所謂的分散式資料庫技術,就是結合了資料庫技術與分散式技術的一種結合。具體指的是把那些在地理意義上分散開的各個資料庫節點,但在計算機系統邏輯上又是屬於同一個系統的數據結合起來的一種資料庫技術。既有著資料庫間的協調性也有著數據的分佈性。這個系統並不注重系統的集中控制,而是注重每個資料庫節點的自治性,此外為了讓程序員能夠在編寫程序時可以減輕工作量以及系統出錯的可能性,一般都是完全不考慮數據的分佈情況,這樣的結果就使得系統數據的分佈情況一直保持著透明性。
數據獨立性概念在分散式資料庫管理系統中同樣是十分重要的一環,但是不僅如此,分散式數據管理系統還增加了一個叫分散式透明性的新概念。這個新概念的作用是讓數據進行轉移時使程序正確性不受影響,就像數據並沒有在編寫程序時被分佈一樣。
在分散式資料庫里,數據冗雜是一種被需要的特性,這點和一般的集中式資料庫系統不一樣。第一點是為了提高局部的應用性而要在那些被需要的資料庫節點複製數據。第二點是因為如果某個資料庫節點出現系統錯誤,在修復好之前,可以通過操作其他的資料庫節點裡複製好的數據來讓系統能夠繼續使用,提高系統的有效性。
● 資料庫理論
● 信息技術審核
● LDAP(輕量級數據訪問協議)
● SQL(結構化查詢語言)
● 資料庫管理系統