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