數據庫

數據庫系統理論概述(一)

本文主要講述: 
– 1.數據庫和數據庫管理系統 
– 2.使用傳統的文件系統對大量數據管理存在的問題 
– 3.常見的數據庫系統模型 
– 4.數據庫視圖 
– 5.數據庫語言 
– 6.數據存儲和查詢

1.什么是數據庫,什么是數據庫管理系統?

如今是一個大數據時代,數據充斥著我們生活的方方面面,那么究竟什么是數據庫呢?其實從字面上理解就是數據倉庫,就是數據的集合。那么問題來了,當數據的量達到一定程度之后,對數據的管理就會變得十分困難。而數據庫的出現就是為了解決這個問題。那什么是數據庫呢?數據庫就是由互相關聯的數據集合和一組用以訪問這些數據的程序組成的系統。

2.為什么不用文件系統管理數據呢?

我們都知道,計算機要對數據進行處理,要先把存儲在存儲設備上的文件數據載入內存,然后才能對其進行處理和加工,那如果我們要把其中某些符合條件的行或列抽取出來,那會是十分困難的事情,使用文件系統對數據進行管理有如下問題:

  • 數據的冗余和不一致:由于不同的文件擁有不同的結構,相同的信息可能在好幾個地方重復存儲,例如老師屬于兩個系,老師的信息可能重復記錄,導致存儲和訪問開銷增大,還可能導致數據的不一致。

  • 數據訪問困難:在一個文件中只需要找出某個符合條件的行或列時,就會顯得十分困難。例如,在存儲學生信息的文件中找出性別為男的所有學生的全部信息,只使用文件系統幾乎是不可能的。

  • 數據孤立:由于數據分散在不同的文件中,所以編寫程序來檢索信息就會變得十分困難。

  • 原子性問題:所謂原子性就是指操作要么不發生,要么全發生。最經典的就是轉賬,比如A賬戶里有500元,B賬戶里沒錢,A要轉100到B賬戶,但是當A轉出還沒來得及存入B賬戶時系統出現故障,就造成了嚴重的后果。而在傳統的文件處理系統中是很難保證原子性的。

  • 并發訪問控制異常:為了提高系統的總體性能,很多系統都允許多個用戶并發更新數據。例如對銀行賬戶的操作,銀行賬戶既允許網絡支付,也可以使用銀行卡支付,當兩個人同時對一個賬戶進行操作時,就會導致數據的不一致,。

  • 安全性問題:并非數據庫中的所有用戶都有權限來訪問數據。而使用文件系統對其管理的話,應用程序總是會加入到文件處理系統中來,這久帶來了安全隱患。

    所以,這些原因就使得人們不得不去開發專業的數據庫管理系統,這也正是數據庫管理系統出現的原因。

3.常見的數據庫系統模型

數據庫結構的基礎是數據模型。數據模型是描述數據,數據之間的關系,數據語義以及一致性約束的概念工具。常見的數據模型有:

  • 網狀模型

  • 層次數據模型

  • 關系模型

  • 實體-聯系模型之間的聯系構成。

  • 結構化模型

  • 半結構化模型

4.數據庫視圖

數據庫系統的的一個只要目的就是給用戶提供數據的抽象視圖,為了用戶與系統的交互,通過如下幾個層次的抽象來屏蔽復雜性: 
– 物理層:最低層次的抽象,描述數據在物理存儲設備上如何存儲。 
– 邏輯層:描述數據庫中存儲什么數據以及這些數據之間的聯系,邏輯層通過相對簡單的結構描述了整個數據庫。 
– 視圖層:最高層次的抽象,之描述整個數據庫的一部分內容,數據庫抽象的定義就是為了使用戶與數據庫系統的交互更簡單。

5.數據庫語言

數據庫系統提供了數據定義語言(DDL,data-definition language)以及數據操縱語言(DML,data-manipulation language)來完成對數據庫的管理。提供數據庫管理的典型的語言是SQL語言。

  1. 數據庫定義語言:定義數據庫模式的實現細節,數據庫系統所使用的存儲結構和訪問方式也是通過數據庫定義語言來實現,而數據庫定義語言中最重要的一個部分就是定義數據屬性的約束條件,DDL定義的內容具體包括:

    • 域約束: 每個屬性必須對應一個所有可能的取值構成的域,域約束是完整性約束的最基本形式。

    • 參照完整性:一個關系(表)中,給定屬性集上的取值也在另一類關系的某一個屬性的集的取值中出現。

    • 斷言: 一個斷言就是數據庫設計需要時刻滿足的某一條件,域約束和參照完整性是斷言的特殊形式,但是,還有好多約束不能僅用這幾個特殊的形式來表示。

    • 授權: 對于不同的用戶在數據庫中的不同數據值的訪問上允許不同的訪問類型,這些區別通過授權來表達,常見的有讀授權,插入授權,更新授權,刪除授權。

  2. 數據庫操縱語言:用戶同過數據庫操縱語言來訪問或操縱那些按照某種適當數據模型組織起來的數據。訪問類型有:

    • 對存儲在數據庫中的數據進行檢索。

    • 向數據庫中插入信息

    • 從數據庫中刪除信息

    • 修改數據庫中的信息

6.數據存儲和查詢

數據庫系統劃分為不同的模塊,每個模塊完成整個系統的一部分。數據庫系統的功能部件大致分為存儲管理器和查詢管理處理部件。

1存儲管理器

存儲管理器是數據庫中負責在數據庫存儲底層數據與應用程序以及向系統提交的查詢之間提供借口的部件,負責與文件管理器進行交互,存儲管理器將各種DML語句翻譯為底層文件系統命令,存儲管理器的部件包括:

2查詢處理器:

    • DDL解釋器:解釋DDL語句并將這些定義的語言記錄在數據字典中。

    • DML解釋器:將查詢語言中的DML語句翻譯為一個執行方案,包括一系列查詢執行引擎能理解的低級指令 。

    • 查詢執行引擎:執行由DML編譯產生的低級指令。

    • 權限及完整性管理器:檢測是否滿足完整性約束,并檢查試圖訪問數據的用戶的權限。

    • 事務管理器:保證即使發生了故障,數據庫也要保持一致的狀態。

    • 文件管理器:管理磁盤的存儲空間的分配

    • 緩沖區管理器:負責將數據從磁盤上加載至內存,并決定哪些文件應該存儲在緩沖區中,緩沖區管理器是系統中關鍵的部分,因為它可以使數據庫可以處理比內存更大的數據。

原創文章,作者:zhangbao,如若轉載,請注明出處:http://www.www58058.com/55537

(0)
zhangbaozhangbao
上一篇 2016-10-30 19:55
下一篇 2016-10-30 20:15

相關推薦

  • N21-北京-兔鍋-馬哥教育網絡班21期+第二周課程練習

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 A.wc命令: 功能:統計指定文件中的字節數、字數、行數,并將統計結果顯示輸出 語法:wc [選項]文件… 參數: -c:統計字節數。 -l:統計行數。 -m:統計字符數。這個標志不能與 -c 標志一起使用。 -w:統計字數。一個字被定義為…

    Linux干貨 2016-07-07
  • Linux如何進行分區和目錄管理

    第七周作業   1、創建一個10G分區,并格式為ext4文件系統: 1、要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包括acl; ~]# mke2fs -t ext4 -b 2048 -m 2 -L MYDATA /dev/sdb1 2、掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,縣不更新…

    2017-09-18
  • root用戶密碼破解

    方法一:進入單用戶模式破解root密碼 (1)編輯grub菜單(選定要編輯的title,而后使用e命令) (2)在選定的kernel后附加 1,s,S或single都可以 (3)在kernel所在行鍵入"b"命令即可進入單用戶模式 (4)運行passwd命令修改root用戶密碼 并重啟 (5)輸入密碼即可登錄 方法二:進入救援模…

    Linux干貨 2016-09-15
  • Linux 第二天: (07月22日) Linux入門

    Linux 第二天: (07月22日) Linux入門       root管理員帳戶,超級用戶,除非必要,不要用root登錄 /dev/console 物理終端/dev/tty 虛擬終端, CentOS 6默認6個虛擬終端/dev/pts 模擬終端tty 查看當前終端設備     GUI 圖形用戶界面 GN…

    Linux干貨 2016-08-08
  • shell三劍客之grep

    正則表達式是對字符串操作的一種邏輯公式,就是用事先定義好的一些特定字符、及這些特定字符的組合,組成一個“規則字符串”,這個“規則字符串”用來表達對字符串的一種過濾邏輯。 給定一個正則表達式和另一個字符串,我們可以達到如下的目的: 1. 給定的字符串是否符合正則表達式的過濾邏輯(稱作“匹配”); 2. 可以通過正則表達式,從字符串中獲取我們想要的特定部分。 正…

    Linux干貨 2016-08-08
  • bonding

    boding制作        問題:一個網卡一個IP沒有容錯性     bonding是LINUX中將多網卡綁定虛擬成一塊網卡,實現多網卡共同擁有一個IP,這項技術早在Sun和Cisco中被稱為Trunking和Etherchannel技術。   …

    2017-03-22
欧美性久久久久