更新時(shí)間:2020-09-18 來(lái)源:黑馬程序員 瀏覽量:
根據(jù)存儲(chǔ)數(shù)據(jù)時(shí)所用數(shù)據(jù)模型的不同,當(dāng)今互聯(lián)網(wǎng)中的的數(shù)據(jù)庫(kù)主要分為兩種:關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)。
關(guān)系型數(shù)據(jù)庫(kù)是指采用關(guān)系模型(即二維表格形式)組織數(shù)據(jù)的數(shù)據(jù)庫(kù)系統(tǒng),它由數(shù)據(jù)表和數(shù)據(jù)表之間的關(guān)系組成,主要包含以下核心元素:
數(shù)據(jù)行:一條記錄,相當(dāng)于Python對(duì)象;
數(shù)據(jù)列:字段,相當(dāng)于Python對(duì)象的屬性;
數(shù)據(jù)表:數(shù)據(jù)行的集合;
數(shù)據(jù)庫(kù):數(shù)據(jù)表的集合。
下面看一個(gè)數(shù)據(jù)表的示例,如圖1所示。
關(guān)系型數(shù)據(jù)庫(kù)經(jīng)歷了幾十年的發(fā)展,技術(shù)比較成熟,因其具有容易理解、操作簡(jiǎn)單、便于維護(hù)的特點(diǎn),而被廣泛應(yīng)用到各個(gè)行業(yè)的數(shù)據(jù)管理中。目前,主流的關(guān)系型數(shù)據(jù)庫(kù)有Oracle、MySQL、IBM Db2、PostgreSQL、Microsoft SQL Server、Microsoft Access等,其中使用較多的有Oracle和MySQL數(shù)據(jù)庫(kù)。
非關(guān)系型數(shù)據(jù)庫(kù)也被稱為NoSQL(Not Only SQL)數(shù)據(jù)庫(kù),是指非關(guān)系型的、分布式的數(shù)據(jù)存儲(chǔ)系統(tǒng)。與關(guān)系型數(shù)據(jù)庫(kù)相比,非關(guān)系型數(shù)據(jù)庫(kù)無(wú)需事先為要存儲(chǔ)的數(shù)據(jù)建立字段,它沒有固定的結(jié)構(gòu),既可以擁有不同的字段,也可以存儲(chǔ)各種格式的數(shù)據(jù)。
非關(guān)系型數(shù)據(jù)庫(kù)的種類繁多。按照不同的數(shù)據(jù)模型,非關(guān)系型數(shù)據(jù)庫(kù)主要可以分為列存儲(chǔ)數(shù)據(jù)庫(kù)、鍵值存儲(chǔ)數(shù)據(jù)庫(kù)、文檔型數(shù)據(jù)庫(kù),下面分別介紹這些數(shù)據(jù)庫(kù)各自的特征及適用范圍。
(1) 鍵值(Key-Value)存儲(chǔ)數(shù)據(jù)庫(kù)
鍵值存儲(chǔ)數(shù)據(jù)庫(kù)采用鍵值結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),每個(gè)鍵分別對(duì)應(yīng)一個(gè)特定的值。這類數(shù)據(jù)庫(kù)具有易部署、查詢速度快、存儲(chǔ)量大、高并發(fā)操作等特點(diǎn),適用于處理大量數(shù)據(jù)的高訪問(wèn)負(fù)載和一些日志系統(tǒng)等。
鍵值存儲(chǔ)數(shù)據(jù)庫(kù)的典型代表有Redis、Flare、MemcacheDB等。
(2) 列式(Column-Oriented)存儲(chǔ)數(shù)據(jù)庫(kù)
列式存儲(chǔ)數(shù)據(jù)庫(kù)采用列式結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),將同一列數(shù)據(jù)存儲(chǔ)到一起。這類數(shù)據(jù)庫(kù)具有查詢速度快、可擴(kuò)展性強(qiáng)等特點(diǎn),更容易進(jìn)行分布式擴(kuò)展,適用于分布式的文件系統(tǒng)。
列式存儲(chǔ)數(shù)據(jù)庫(kù)的典型代表有Hbase、Cassandra等。
(3) 文檔型(Document-Oriented)存儲(chǔ)數(shù)據(jù)庫(kù)
文檔型存儲(chǔ)數(shù)據(jù)庫(kù)的結(jié)構(gòu)與鍵值存儲(chǔ)數(shù)據(jù)庫(kù)類似,采用文檔(如JSON或XML等格式)結(jié)構(gòu)存儲(chǔ)數(shù)據(jù),每個(gè)文檔中包含多個(gè)鍵值對(duì)。這類數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu)要求并不嚴(yán)格,具有表結(jié)構(gòu)可變、查詢速度更快的特點(diǎn),適用于Web應(yīng)用的場(chǎng)景。
文檔型數(shù)據(jù)庫(kù)的典型代表有MongoDB、CouchDB等。
為了讓讀者更好地理解文檔型數(shù)據(jù)庫(kù)的數(shù)據(jù)結(jié)構(gòu),這里以MongoDB為例進(jìn)行介紹。MongoDB數(shù)據(jù)庫(kù)主要包含3個(gè)核心元素,分別為文檔、集合和數(shù)據(jù)庫(kù),各個(gè)元素的介紹如下。
·文檔:由JSON或XML數(shù)據(jù)構(gòu)成的對(duì)象,對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)中的行;
·集合:文檔的物理容器,對(duì)應(yīng)關(guān)系數(shù)據(jù)庫(kù)中的表;
·數(shù)據(jù)庫(kù):集合的物理容器,一個(gè)數(shù)據(jù)庫(kù)中可以包含多個(gè)文檔;
在眾多數(shù)據(jù)庫(kù)中,MySQL、MongoDB和Redis都是比較突出的,應(yīng)用也比較廣泛。針對(duì)這些主流的數(shù)據(jù)庫(kù),Python提供了包或模塊實(shí)現(xiàn)程序與數(shù)據(jù)庫(kù)交互。例如,使用pymysql庫(kù)操作MySQL數(shù)據(jù)庫(kù),使用pymongo模塊操作MongoDB數(shù)據(jù)庫(kù),使用redis模塊操作Redis數(shù)據(jù)庫(kù)。
猜你喜歡:
數(shù)據(jù)庫(kù)是什么?數(shù)據(jù)庫(kù)由哪幾部分組成?
什么是關(guān)系型數(shù)據(jù)庫(kù)和非關(guān)系型數(shù)據(jù)庫(kù)?