數據庫

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

本文主要講述: 
– 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
下一篇 2016-10-30

相關推薦

  • 模塊式LAMP和fpm式LAMP實現wordpress

           Linux+Apache+Mysql/MariaDB+Perl/PHP/Python這一組合常用來搭建動態網站或者服務器的開源軟件,隨著開源潮流的蓬勃發展,開源的LAMP已經與J2EE和.Net商業軟件形成三足鼎立之勢,并且該軟件平臺在軟件方面的投資成本較低,,LAMP平臺已經成為最強…

    Linux干貨 2016-04-22
  • 22期+第一周課堂練習

    一.計算機的組成及其功能 計算機的組成及其功能結構圖      各部件的關系圖          二.按系列羅列Linux的發行版,并描述不同版本之間的聯系與區別 1.各版本邏輯結構圖 2.各版本的介紹   Redhat,應該稱為Redhat系列,包括RHEL(Redh…

    Linux干貨 2016-08-15
  • CentOS 系統啟動流程

    CentOS 系統啟動流程 一、Linux系統的組成部分:內核+根文件系統 1.內核: 進程管理:進程之間的通信為:IPC(Inter Process Communication)機制,有消息隊列、semerphor、shm、socket(跨主機之間的通信) 內存管理; 網絡管理; 文件系統; 驅動程序; 安全功能; 2.運行中的系統環境可分為兩層:內核空間…

    Linux干貨 2016-09-13
  • N25-第三周作業

    1.列出當前系統所有已經登錄的用戶的用戶名,注意同一個用戶登錄多次,只顯示一次即可   who | cut -d" " -f1 |uniq 2.取出最后登錄到當前系統的用戶的相關信息    w | tail -1 3.取出當前系統上被用戶當做其默認shell最多的那個shell &nbsp…

    Linux干貨 2016-12-19
  • 文件系統磁盤管理上

    磁盤:主要作用用于存儲數據 早期一塊硬盤共有256個盤面,每個盤面有1024個磁道,每個磁道有63個扇區,每個扇區的大小是512byte 硬盤的命名: 早期IDE硬盤標記為hd scsi、usb、sas標記為sd 引用設備的方式 設備文件名 標卷 UUID 硬盤分區: 第0個磁道的第0個扇區存放的是磁盤的信息 MBR:Master Boot Record 主…

    Linux干貨 2016-08-30
  • 建立dns服務

    一 、環境 兩臺機器,一臺LINUX,機器名為LINUX,域名為tongqiang.cnIP地址為192.168.0.5,另一臺機器為WIN98,機器名為tongqiang,IP地址從LINUX上DHCP服務器上獲得。 二 、建立DNS服務器(假設你的DNS軟件包已經安裝好了,而且是在安裝LINUX是選擇安裝DNS服務器的) 建立DNS服務器只需要修改以下幾…

    2017-10-09
欧美性久久久久