「数据库」修訂間的差異檢視原始碼討論檢視歷史
(创建页面,内容为“数据库”) |
|||
行 1: | 行 1: | ||
− | 数据库 | + | |
+ | 数据库 又称为数据管理系统,简而言之可视为[[电子化]]的[[档案柜]]——储存电子[[档案]]的处所,使用者可以对[[档案]]中的资料执行新增、撷取、更新、删除等操作<ref>陈春旭、余明兴、李建全 译:《数据库系统概论》第四版,儒林图书有限公司,1986年7月,第3页</ref>。 | ||
+ | |||
+ | 所谓「数据库」系以一定方式储存在一起、能予多个用户[[共享]]、具有尽可能小的[[数据冗余|冗余度]]、与应用程序彼此独立的数据[[集合]]。一个数据库由多个表空间([[Tablespace]])构成。 | ||
+ | |||
+ | == 技术初衷 == | ||
+ | 在[[操作系统]]出现之后,随着[[计算机]]应用范围的扩大、需要处理的[[数据]]迅速膨胀。最初,数据与[[程序]]一样,以简单的文件作为主要存储形式。以这种方式组织的数据在逻辑上更简单,但[[可扩展性]]差,访问这种数据的程序需要了解数据的具体组织格式。当系统数据量大或者用户访问量大时,应用程序还需要解决数据的完整性、一致性以及安全性等一系列的问题。因此,必须开发出一种[[系统软件]],它应该能够像操作系统屏蔽了硬件访问复杂性那样,[[屏蔽]]数据访问的复杂性。由此产生了数据管理系统,即数据库。 | ||
+ | == 数据库管理系统 == | ||
+ | |||
+ | [[数据库管理系统]]({{lang-en|Database Management System}},简称[[DBMS]])是为管理[[数据库]]而设计的电脑[[软件]]系统,一般具有储存、撷取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的[[数据库模型]]来作分类,例如[[关联模型|关系型]]、[[XML]];或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如[[SQL]]、[[XQuery]];或依据性能冲量重点来作分类,例如最大规模、最高执行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。 | ||
+ | |||
+ | == 数据库的分类 == | ||
+ | 随着数据库技术与其他分支学科技术的结合,出现了多种新型数据库,例如:与分布处理技术结合产生的[[分布式数据库]]、与并行处理技术结合产生的[[并行数据库]]、与人工智能结合产生的[[演绎数据库]]、与多媒体技术结合产生的[[多媒体数据库]]。另外,数据库技术应用于特定的领域,出现了[[工程数据库]]、 [[地理数据库]]、[[统计数据库]]、[[空间数据库]]等特定领域数据库。<ref name=":0" /> | ||
+ | |||
+ | === 关系数据库 === | ||
+ | * [[MySQL]] | ||
+ | ** [[MariaDB]] | ||
+ | ** [[Percona Server]] | ||
+ | * [[PostgreSQL]] | ||
+ | * [[Microsoft Access]] | ||
+ | * [[Microsoft SQL Server]] | ||
+ | * {{le|Google Fusion Tables|Google Fusion Tables}} | ||
+ | * [[FileMaker]] | ||
+ | * [[Oracle数据库]] | ||
+ | * [[Sybase]] | ||
+ | * [[dBASE]] | ||
+ | * [[Clipper]] | ||
+ | * [[FoxPro]] | ||
+ | * [[foshub]] | ||
+ | |||
+ | 几乎所有的数据库管理系统都配备了一个[[开放式数据库连接]](ODBC)驱动程序,令各个数据库之间得以互相整合。 | ||
+ | |||
+ | === 非关系型数据库([[NoSQL]])=== | ||
+ | |||
+ | * [[BigTable]](Google) | ||
+ | * [[Cassandra]] | ||
+ | * [[MongoDB]] | ||
+ | * [[CouchDB]] | ||
+ | * [[Redis]] | ||
+ | |||
+ | ==== [[键值数据库]] ==== | ||
+ | * [[Apache Cassandra]](:高度可扩展 | ||
+ | * [[Dynamo]] | ||
+ | * [[LevelDB]](Google) | ||
+ | |||
+ | == 数据库技术的发展 == | ||
+ | 随着[[互联网]]的普及,数据库使用环境也随之发生变化,这种变化主要体现为[[XML]]和[[Java]]技术的大量使用、要求支持各种互联网环境下的[[应用服务器]]、极容易出现大量用户同时访问数据库、要求支持7x24小时不间断运行和高安全性等。<ref name=":0" /> | ||
+ | |||
+ | 为解决由于这些变化所带来的新问题,数据库管理系统也逐渐产生变化,包括: | ||
+ | |||
+ | (一)网络化的大型通用数据库管理系统的出现 | ||
+ | |||
+ | 由于[[互联网应用]]的用户数量无法预测,这就要求数据库相比以前拥有能处理更大量的数据以及为更多的用户提供服务的能力,即更好的可伸缩性及高可用性,因此,能够支持Internet的数据库应用已经成为数据库系统的重要方面,学术界及各主流[[数据库公司]]都将大型通用数据管理系统作为主要发展方向。例如[[Oracle|Oracle公司]]从 8 版起全面支持互联网应用,微软公司更是将 SQL Server 作为 其整个 .NET计划中的一个重要的成分。 | ||
+ | (二)数据库安全系统及技术的提升 | ||
+ | |||
+ | 由于数据库系统在现代计算机系统中的地位越来越趋于核心的地位,数据库系统的安全问题自然受到越来越多的关注。在目前各国所引用或制定的 一系列[[安全标准]]中,最重要的两个是由美国国防部制定的《[[可信计算机系统的评估标准]]》(简称[[TCSEC]])和《[[可信计算机系统的评估标准关于可信数据库系统的解释]]》(简称 [[TDI]])。目前,所有数据库的开发必须遵从相应的安全标准。 | ||
+ | (三)XML及Web数据管理技术的普及 | ||
+ | |||
+ | 随着越来越多的[[Web应用]],如[[电子商务]]、[[数字图书馆]]、[[信息服务]]等采用XML作为数据表现形式、越来越多网站采用XML作为信息发布的语言,以XML格式数据为主的[[半结构化数据]]逐步成为网上[[数据交换]]和[[数据表示]]的标准。而XML具有如下的一些特征:面向显示、半结构化和无结构、不同形式的数据源,动态变化以及数据海量等。因此,支持这种结构松散、形式多样、动态变化的海量数据的存储、共享、管理、检索,成了数据库技术的大势所趋。 | ||
+ | [[Web数据管理]]是一个很松散的概念,大体上它是指在Web环境下对各种复杂信息的有效组织与[[集成]],进行方便而准确的信息查询和发布。当前Web数据管理的研究开发方向主要包括:[[半结构化数据管理]]、[[Web数据查询]]、[[Web信息集成]]、[[XML数据管理]]等。到目前为止,XML 与 Web 数据管理的研究工作中主要集中在如下的一些方面。 | ||
+ | 1. 半结构化数据 | ||
+ | |||
+ | 2.Web 数据查询 | ||
+ | |||
+ | 3.XML 相关标准 | ||
+ | |||
+ | 4.XML 数据管理 | ||
+ | |||
+ | (四)嵌入式移动数据库技术 | ||
+ | |||
+ | 随着[[移动通信技术]]的迅速发展和投入使用,加上移动智能电话、移动计算机的大量普及,国内外许多研究机构都展开了对[[移动数据库]]的研究,并取得了许多有价值的成果。移动数据库技术涉及数据库技术、分布式计算技术以及移动通信技术等多个学科领域,具有较高的学术起点。 | ||
+ | |||
+ | == 数据库模型 == | ||
+ | |||
+ | * [[对象模型]] | ||
+ | * 层次模型(轻量级数据访问协议) | ||
+ | * 网状模型(大型数据储存) | ||
+ | * 关系模型 | ||
+ | * 面向对象模型 | ||
+ | * 半结构化模型 | ||
+ | * [[平面模型]](表格模型,一般在形式上是一个二维[[数组|数组]]。如表格模型数据[[Excel]]) | ||
+ | |||
+ | === 架构 === | ||
+ | |||
+ | 数据库的架构可以大致区分为三个概括层次:内层、概念层和外层。 | ||
+ | * 内层:最接近实际存储器,亦即有关数据的实际储存方式。 | ||
+ | * 外层:最接近用户,即有关个别用户观看数据的方式。 | ||
+ | * 概念层:介于两者之间的间接层。 | ||
+ | |||
+ | === 数据库索引 === | ||
+ | |||
+ | 数据索引的观念由来已久,像是一本书前面几页都有目录,目录也算是索引的一种,只是它的分类较广,例如车牌、身份证字号、条形码等,都是一个索引的号码,当我们看到号码时,可以从号码中看出其中的端倪,若是要找的人、车或物品,也只要提供相关的号码,即可迅速查到正确的人事物。 | ||
+ | |||
+ | 另外,索引跟字段有着相应的关系,索引即是由字段而来,其中字段有所谓的关键字段(Key Field),该字段具有唯一性,即其值不可重复,且不可为"[[空值]](null)"。例如:在合并数据时,索引便是扮演欲附加字段数据之指向性用途的角色。故此索引为不可重复性且不可为空。 | ||
+ | |||
+ | === 数据库事务 === | ||
+ | |||
+ | 事务(transaction)包含一组数据库操作的逻辑工作单元,在事务中包含的数据库操作是不可分割的整体,这些操作要么一起做,要么一起回滚(Roll Back)到执行前的状态。 | ||
+ | 事务的[[ACID]]特性: | ||
+ | * 基元性(atomicity) | ||
+ | * 一致性(consistency) | ||
+ | * 隔离性(isolation) | ||
+ | * 持续性(durability) | ||
+ | |||
+ | 事务的并发性是指多个事务的并行操作轮流交叉运行,事务的并发可能会存取和存储不正确的数据,破坏交易的隔离性和数据库的一致性。 | ||
+ | |||
+ | === 网状数据模型的数据结构 === | ||
+ | |||
+ | ==== 网状模型 ==== | ||
+ | |||
+ | 满足下面两个条件的基本层次联系的集合为网状模型。 | ||
+ | # 允许一个以上的结点无双亲; | ||
+ | # 一个结点可以有多于一个的双亲。 | ||
+ | |||
+ | == 参考文献 == |
於 2020年3月7日 (六) 08:18 的修訂
數據庫又稱為數據管理系統,簡而言之可視為電子化的檔案櫃——儲存電子檔案的處所,使用者可以對檔案中的資料執行新增、擷取、更新、刪除等操作[1]。
所謂「數據庫」系以一定方式儲存在一起、能予多個用戶共享、具有儘可能小的冗餘度、與應用程序彼此獨立的數據集合。一個數據庫由多個表空間(Tablespace)構成。
目錄
技術初衷
在操作系統出現之後,隨着計算機應用範圍的擴大、需要處理的數據迅速膨脹。最初,數據與程序一樣,以簡單的文件作為主要存儲形式。以這種方式組織的數據在邏輯上更簡單,但可擴展性差,訪問這種數據的程序需要了解數據的具體組織格式。當系統數據量大或者用戶訪問量大時,應用程序還需要解決數據的完整性、一致性以及安全性等一系列的問題。因此,必須開發出一種系統軟件,它應該能夠像操作系統屏蔽了硬件訪問複雜性那樣,屏蔽數據訪問的複雜性。由此產生了數據管理系統,即數據庫。
數據庫管理系統
數據庫管理系統(英語:Database Management System,簡稱DBMS)是為管理數據庫而設計的電腦軟件系統,一般具有儲存、擷取、安全保障、備份等基礎功能。數據庫管理系統可以依據它所支持的數據庫模型來作分類,例如關係型、XML;或依據所支持的計算機類型來作分類,例如服務器群集、移動電話;或依據所用查詢語言來作分類,例如SQL、XQuery;或依據性能衝量重點來作分類,例如最大規模、最高執行速度;亦或其他的分類方式。不論使用哪種分類方式,一些DBMS能夠跨類別,例如,同時支持多種查詢語言。
數據庫的分類
隨着數據庫技術與其他分支學科技術的結合,出現了多種新型數據庫,例如:與分布處理技術結合產生的分布式數據庫、與並行處理技術結合產生的並行數據庫、與人工智能結合產生的演繹數據庫、與多媒體技術結合產生的多媒體數據庫。另外,數據庫技術應用於特定的領域,出現了工程數據庫、 地理數據庫、統計數據庫、空間數據庫等特定領域數據庫。[2]
關係數據庫
** Percona Server
- PostgreSQL
- Microsoft Access
- Microsoft SQL Server
- Google Fusion Tables
- FileMaker
- Oracle數據庫
- Sybase
- dBASE
- Clipper
- FoxPro
- foshub
幾乎所有的數據庫管理系統都配備了一個開放式數據庫連接(ODBC)驅動程序,令各個數據庫之間得以互相整合。
非關係型數據庫(NoSQL)
鍵值數據庫
- Apache Cassandra(:高度可擴展
- Dynamo
- LevelDB(Google)
數據庫技術的發展
隨着互聯網的普及,數據庫使用環境也隨之發生變化,這種變化主要體現為XML和Java技術的大量使用、要求支持各種互聯網環境下的應用服務器、極容易出現大量用戶同時訪問數據庫、要求支持7x24小時不間斷運行和高安全性等。[2]
為解決由於這些變化所帶來的新問題,數據庫管理系統也逐漸產生變化,包括:
(一)網絡化的大型通用數據庫管理系統的出現
由於互聯網應用的用戶數量無法預測,這就要求數據庫相比以前擁有能處理更大量的數據以及為更多的用戶提供服務的能力,即更好的可伸縮性及高可用性,因此,能夠支持Internet的數據庫應用已經成為數據庫系統的重要方面,學術界及各主流數據庫公司都將大型通用數據管理系統作為主要發展方向。例如Oracle公司從 8 版起全面支持互聯網應用,微軟公司更是將 SQL Server 作為 其整個 .NET計劃中的一個重要的成分。 (二)數據庫安全系統及技術的提升
由於數據庫系統在現代計算機系統中的地位越來越趨於核心的地位,數據庫系統的安全問題自然受到越來越多的關注。在目前各國所引用或制定的 一系列安全標準中,最重要的兩個是由美國國防部制定的《可信計算機系統的評估標準》(簡稱TCSEC)和《可信計算機系統的評估標準關於可信數據庫系統的解釋》(簡稱 TDI)。目前,所有數據庫的開發必須遵從相應的安全標準。 (三)XML及Web數據管理技術的普及
隨着越來越多的Web應用,如電子商務、數字圖書館、信息服務等採用XML作為數據表現形式、越來越多網站採用XML作為信息發布的語言,以XML格式數據為主的半結構化數據逐步成為網上數據交換和數據表示的標準。而XML具有如下的一些特徵:面向顯示、半結構化和無結構、不同形式的數據源,動態變化以及數據海量等。因此,支持這種結構鬆散、形式多樣、動態變化的海量數據的存儲、共享、管理、檢索,成了數據庫技術的大勢所趨。 Web數據管理是一個很鬆散的概念,大體上它是指在Web環境下對各種複雜信息的有效組織與集成,進行方便而準確的信息查詢和發布。當前Web數據管理的研究開發方向主要包括:半結構化數據管理、Web數據查詢、Web信息集成、XML數據管理等。到目前為止,XML 與 Web 數據管理的研究工作中主要集中在如下的一些方面。 1. 半結構化數據
2.Web 數據查詢
3.XML 相關標準
4.XML 數據管理
(四)嵌入式移動數據庫技術
隨着移動通信技術的迅速發展和投入使用,加上移動智能電話、移動計算機的大量普及,國內外許多研究機構都展開了對移動數據庫的研究,並取得了許多有價值的成果。移動數據庫技術涉及數據庫技術、分布式計算技術以及移動通信技術等多個學科領域,具有較高的學術起點。
數據庫模型
架構
數據庫的架構可以大致區分為三個概括層次:內層、概念層和外層。
- 內層:最接近實際存儲器,亦即有關數據的實際儲存方式。
- 外層:最接近用戶,即有關個別用戶觀看數據的方式。
- 概念層:介於兩者之間的間接層。
數據庫索引
數據索引的觀念由來已久,像是一本書前面幾頁都有目錄,目錄也算是索引的一種,只是它的分類較廣,例如車牌、身份證字號、條形碼等,都是一個索引的號碼,當我們看到號碼時,可以從號碼中看出其中的端倪,若是要找的人、車或物品,也只要提供相關的號碼,即可迅速查到正確的人事物。
另外,索引跟字段有着相應的關係,索引即是由字段而來,其中字段有所謂的關鍵字段(Key Field),該字段具有唯一性,即其值不可重複,且不可為"空值(null)"。例如:在合併數據時,索引便是扮演欲附加字段數據之指向性用途的角色。故此索引為不可重複性且不可為空。
數據庫事務
事務(transaction)包含一組數據庫操作的邏輯工作單元,在事務中包含的數據庫操作是不可分割的整體,這些操作要麼一起做,要麼一起回滾(Roll Back)到執行前的狀態。 事務的ACID特性:
- 基元性(atomicity)
- 一致性(consistency)
- 隔離性(isolation)
- 持續性(durability)
事務的並發性是指多個事務的並行操作輪流交叉運行,事務的並發可能會存取和存儲不正確的數據,破壞交易的隔離性和數據庫的一致性。
網狀數據模型的數據結構
網狀模型
滿足下面兩個條件的基本層次聯繫的集合為網狀模型。
- 允許一個以上的結點無雙親;
- 一個結點可以有多於一個的雙親。