DB-Engines 列出了 400 多個(gè)數(shù)據(jù)庫(kù)管理系統(tǒng)的流行度排名,它們可以按照數(shù)據(jù)模型分為不同的類型,例如關(guān)系型數(shù)據(jù)、文檔數(shù)據(jù)庫(kù)等。
本文簡(jiǎn)單介紹一下不同數(shù)據(jù)庫(kù)的分類以及常見(jiàn)的數(shù)據(jù)庫(kù)管理系統(tǒng)。
??如今很多數(shù)據(jù)庫(kù)提供了多模型存儲(chǔ)支持,例如 PostgreSQL 不僅支持關(guān)系模型,還提供了文檔存儲(chǔ)、圖數(shù)據(jù)庫(kù)以及空間數(shù)據(jù)庫(kù)功能。
關(guān)系型數(shù)據(jù)庫(kù)
關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)是最主流的數(shù)據(jù)庫(kù)類型,它們使用關(guān)系(表)模型存儲(chǔ)數(shù)據(jù)。表的模式由表名和固定數(shù)量的字段組成,一個(gè)記錄(實(shí)體)對(duì)應(yīng)表中的一行,由多個(gè)屬性值組成。關(guān)系實(shí)際上就是一組結(jié)構(gòu)統(tǒng)一的記錄。
關(guān)系型數(shù)據(jù)庫(kù)的表結(jié)構(gòu)設(shè)計(jì)通常使用規(guī)范化技術(shù),關(guān)系支持的基本操作包括:
- 集合操作(并集、交集、差集);
- 選擇操作(基于指定條件選擇表中記錄的子集);
- 投影操作(選擇屬性/字段的子集);
- 連接操作(基于多個(gè)表的笛卡爾積以及選擇和投影操作)。
關(guān)系型數(shù)據(jù)庫(kù)使用 SQL 執(zhí)行操作,包括表的管理、事務(wù)控制以及用戶管理等。
經(jīng)過(guò)多年的發(fā)展,許多 RDBMS 不僅僅支持關(guān)系模型,同時(shí)也提供了用戶自定義類型、非原子屬性(XML、JSON、數(shù)組等)、繼承等擴(kuò)展功能。
常見(jiàn)的關(guān)系型數(shù)據(jù)庫(kù)包括:
- Oracle
- MySQL
- Microsoft SQL Server
- PostgreSQL
- IBM Db2
- Microsoft Access
- SQLite
- Snowflake
鍵值數(shù)據(jù)庫(kù)
鍵值(Key-value)存儲(chǔ)可能是最簡(jiǎn)單的數(shù)據(jù)模型,它們只能存儲(chǔ)鍵值對(duì),并且通過(guò)鍵查找值。
鍵值數(shù)據(jù)庫(kù)非常簡(jiǎn)單,通常不能實(shí)現(xiàn)復(fù)雜的應(yīng)用程序。但是它的簡(jiǎn)單卻在某些情況下非常有效,例如嵌入式系統(tǒng)或者高性能的內(nèi)存數(shù)據(jù)庫(kù)。
另外,擴(kuò)展形式的鍵值存儲(chǔ)可以基于鍵進(jìn)行排序,因此可以執(zhí)行范圍查詢和有序處理。
常見(jiàn)的鍵值數(shù)據(jù)庫(kù)包括:
- Redis
- Amazon DynamoDB
- Microsoft Azure Cosmos DB
- Memcached
- etcd
- Hazelcast
文檔數(shù)據(jù)庫(kù)
文檔存儲(chǔ)(Document stores),也稱為面向文檔的數(shù)據(jù)庫(kù)系統(tǒng),主要特點(diǎn)在于無(wú)模式(schema-free)的數(shù)據(jù)結(jié)構(gòu)。無(wú)模式意味著:
- 集合(表)中的記錄(行)不需要定義統(tǒng)一的結(jié)構(gòu),每個(gè)記錄可以包含不同的屬性(字段);
- 每個(gè)記錄中的各個(gè)字段的數(shù)據(jù)類型可以不同;
- 一個(gè)字段可以包含多個(gè)值(數(shù)組);
- 記錄可以包含嵌套結(jié)構(gòu)。
文檔存儲(chǔ)通常使用內(nèi)部注解,可以在應(yīng)用程序中直接進(jìn)行處理。最常見(jiàn)的存儲(chǔ)方式是 JSON。
常見(jiàn)的文檔數(shù)據(jù)庫(kù)包括:
- MongoDB
- Amazon DynamoDB
- Databricks
- Microsoft Azure Cosmos DB
- Couchbase
時(shí)序數(shù)據(jù)庫(kù)
時(shí)序數(shù)據(jù)庫(kù)(Time Series DBMS)是專門為了存儲(chǔ)時(shí)間序列數(shù)據(jù)而進(jìn)行優(yōu)化的數(shù)據(jù)庫(kù)管理系統(tǒng)。時(shí)序數(shù)據(jù)的每一條記錄都包含了一個(gè)時(shí)間戳信息,來(lái)源包括物聯(lián)網(wǎng)中的傳感器、智能電表、RFID 等設(shè)備,以及股票交易系統(tǒng)中的交易數(shù)據(jù)。
常見(jiàn)的時(shí)序數(shù)據(jù)庫(kù)包括:
- InfluxDB
- Kdb
- Prometheus
- Graphite
- TimescaleDB
圖數(shù)據(jù)庫(kù)
圖數(shù)據(jù)庫(kù)(Graph DBMS),也稱為面向圖的數(shù)據(jù)庫(kù),以圖(節(jié)點(diǎn)和邊)結(jié)構(gòu)表示數(shù)據(jù)。它們支持圖數(shù)據(jù)的處理,以及圖中具體屬性的計(jì)算,例如從一個(gè)節(jié)點(diǎn)到另一個(gè)節(jié)點(diǎn)的路徑。
圖數(shù)據(jù)庫(kù)通常不會(huì)提供所有節(jié)點(diǎn)的索引,因此無(wú)法直接基于屬性訪問(wèn)節(jié)點(diǎn)。
常見(jiàn)的圖數(shù)據(jù)庫(kù)包括:
- Neo4j
- Microsoft Azure Cosmos DB
- Virtuoso
- OrientDB
- ArangoDB
- Amazon Neptune
搜索引擎
搜索引擎是專門用于搜索文本內(nèi)容的一類 NoSQL 數(shù)據(jù)庫(kù)。除了針對(duì)搜索應(yīng)用的通用優(yōu)化之外,這類系統(tǒng)還提供了一些功能:
- 支持復(fù)雜搜索條件
- 全文搜索
- 詞干提取
- 搜索結(jié)果排名和分組
- 支持高擴(kuò)展性的分布式搜索
常見(jiàn)的搜索引擎包括:
- Elasticsearch
- Splunk
- Solr
- OpenSearch
- Sphinx
對(duì)象數(shù)據(jù)庫(kù)
對(duì)象數(shù)據(jù)庫(kù)(Object oriented DBMS),也稱為面向?qū)ο蟮臄?shù)據(jù)庫(kù),設(shè)計(jì)目標(biāo)是在數(shù)據(jù)庫(kù)中以面向?qū)ο缶幊陶Z(yǔ)言相同的方式存儲(chǔ)對(duì)象,從而避免關(guān)系型數(shù)據(jù)庫(kù)中的轉(zhuǎn)換和分解。另外,對(duì)象之間的關(guān)系(例如繼承)也是在數(shù)據(jù)庫(kù)內(nèi)部進(jìn)行維護(hù)。
對(duì)象數(shù)據(jù)庫(kù)通常使用類似 SQL 的查詢語(yǔ)言操作對(duì)象。
由于近年來(lái)許多關(guān)系型數(shù)據(jù)庫(kù)引入了面向?qū)ο蟮墓δ?,例如自定義數(shù)據(jù)類型和屬性;同時(shí)開(kāi)發(fā)工具和框架(Hibernate、JPA 等)支持對(duì)象和關(guān)系之間的轉(zhuǎn)換,對(duì)象數(shù)據(jù)庫(kù)的應(yīng)用并不常見(jiàn)。
常見(jiàn)的對(duì)象數(shù)據(jù)庫(kù)包括:
- InterSystems IRIS
- InterSystems Caché
- Db4o
- ObjectStore
- Actian NoSQL Database
RDF存儲(chǔ)
RDF(資源描述框架)是一種描述信息的方法論,最初用于描述 IT 資源的元數(shù)據(jù),如今應(yīng)用更加廣泛,通常與語(yǔ)義網(wǎng)相結(jié)合。
RDF 模型以主-謂-賓的形式將信息表示為三元組,能夠存儲(chǔ)和處理這種三元組的數(shù)據(jù)庫(kù)管理系統(tǒng)被稱為 RDF 存儲(chǔ)或者三元存儲(chǔ)。RDF 存儲(chǔ)可以看著圖數(shù)據(jù)庫(kù)的一個(gè)子類,謂詞可以解釋為主語(yǔ)和賓語(yǔ)之間的聯(lián)系。但是 RDF 存儲(chǔ)提供了一些額外的訪問(wèn)方法,例如類似 SQL 的查詢語(yǔ)言 SPARQL。
常見(jiàn)的 RDF 存儲(chǔ)數(shù)據(jù)庫(kù)包括:
- MarkLogic
- Apache Jena - TDB
- Virtuoso
- Amazon Neptune
- GraphDB
寬列存儲(chǔ)
寬列存儲(chǔ)(Wide column stores),也稱為可擴(kuò)展記錄存儲(chǔ),以記錄的方式存儲(chǔ)數(shù)據(jù),支持超大數(shù)量的動(dòng)態(tài)字段功能。由于字段名和記錄的鍵不固定、而且記錄可以包含數(shù)十億個(gè)字段,寬列存儲(chǔ)可以被看作二維鍵值存儲(chǔ)。
寬列存儲(chǔ)也具有文檔數(shù)據(jù)庫(kù)的無(wú)模式特性,但是它們的實(shí)現(xiàn)方式完全不同。
不要將寬列存儲(chǔ)和關(guān)系型數(shù)據(jù)庫(kù)中的面向列的存儲(chǔ)混淆,后者是關(guān)系型數(shù)據(jù)庫(kù)或者數(shù)據(jù)倉(cāng)庫(kù)中為了改進(jìn)分析性能而實(shí)現(xiàn)的存儲(chǔ)方式,它們將不同記錄的相同列存儲(chǔ)在一起,而不是將同一個(gè)記錄的不同字段存儲(chǔ)在一起。
常見(jiàn)的寬列存儲(chǔ)數(shù)據(jù)庫(kù)包括:
- Cassandra
- Microsoft Azure Cosmos DB
- HBase
- Google Cloud Bigtable
多值數(shù)據(jù)庫(kù)
多值數(shù)據(jù)庫(kù)(Multivalue DBMS)與關(guān)系型數(shù)據(jù)庫(kù)類似,也是以表的形式存儲(chǔ)數(shù)據(jù)。但是,多值數(shù)據(jù)庫(kù)可以為記錄的一個(gè)屬性(字段)指定多個(gè)值。這種存儲(chǔ)類型違反了第一范式,因此它們也被稱為非第一范式(NF2)系統(tǒng)。
某些關(guān)系型數(shù)據(jù)庫(kù)擴(kuò)展了多值屬性(例如數(shù)組)功能,例如 PostgreSQL。
常見(jiàn)的多值數(shù)據(jù)庫(kù)包括:
- Adabas
- UniData,UniVerse
- jBASE
向量數(shù)據(jù)庫(kù)
向量數(shù)據(jù)庫(kù)(Vector DBMS)是專門用于高效存儲(chǔ)、索引以及查詢高維向量數(shù)據(jù)的軟件系統(tǒng)。它們使用特殊的算法和數(shù)據(jù)結(jié)構(gòu),支持相似性搜索,通常用于 AI 機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘等領(lǐng)域。
常見(jiàn)的向量數(shù)據(jù)庫(kù)包括:
- Kdb
- Chroma
- Pinecone
- Milvus
原生XML數(shù)據(jù)庫(kù)
原生 XML 數(shù)據(jù)庫(kù)(NXD)用于存儲(chǔ) XML 文檔。
與支持 XML 數(shù)據(jù)類型的數(shù)據(jù)庫(kù)相比,原生 XML 數(shù)據(jù)庫(kù)提供了完整的 XML 功能。它們可以表示層級(jí)數(shù)據(jù),可以理解 XML 元素中嵌入的 PCDATA 聲明,并且支持 XML 查詢語(yǔ)言,例如 XPath、XQuery 以及 XSLT。
原生 XML 數(shù)據(jù)庫(kù)內(nèi)部不一定使用 XML 文檔格式存儲(chǔ)數(shù)據(jù),它們可以使用其他更加高效的存儲(chǔ)格式。
常見(jiàn)的原生 XML 數(shù)據(jù)庫(kù)包括:
- MarkLogic
- Virtuoso
- Oracle Berkeley DB
- BaseX
空間數(shù)據(jù)庫(kù)
空間數(shù)據(jù)庫(kù)管理系統(tǒng)(Spatial DBMS)是一種用于高效存儲(chǔ)、操作和查詢空間數(shù)據(jù)的數(shù)據(jù)庫(kù)管理系統(tǒng)??臻g數(shù)據(jù)代表了幾何空間中的對(duì)象,例如點(diǎn)、線和多邊形。
空間數(shù)據(jù)庫(kù)管理系統(tǒng)通常為空間數(shù)據(jù)提供了專用的數(shù)據(jù)類型,同時(shí)為了優(yōu)化空間數(shù)據(jù)集的訪問(wèn)提供了空間索引。例如,空間索引可以高效地檢索距離某一對(duì)象一定距離之內(nèi)的數(shù)據(jù)點(diǎn)。另外,空間數(shù)據(jù)庫(kù)管理系統(tǒng)還提供了操作空間對(duì)象或者執(zhí)行基于空間對(duì)象的操作功能。例如,計(jì)算對(duì)象之間的距離、對(duì)象合并或交叉以及計(jì)算對(duì)象的屬性(例如多邊形的面積)。
地理空間數(shù)據(jù)(Geospatial data)是空間數(shù)據(jù)的一個(gè)重要子集,用于處理描述地球表面位置的數(shù)據(jù)。地理信息系統(tǒng)(Geographic information systems、GIS)可以處理地理空間數(shù)據(jù)。
時(shí)空數(shù)據(jù)(Spatio-temporal data)是另一種常見(jiàn)的相關(guān)數(shù)據(jù)類型,它們將空間數(shù)據(jù)與時(shí)間戳相結(jié)合,從而為數(shù)據(jù)存儲(chǔ)和操作提供了另一個(gè)額外的維度。
常見(jiàn)的空間數(shù)據(jù)庫(kù)包括:
- PostGIS
- Aerospike
- SpatiaLite
事件存儲(chǔ)
事件存儲(chǔ)(Event Stores)實(shí)現(xiàn)了事件溯源功能,它們存儲(chǔ)了對(duì)象的所有狀態(tài)變更事件以及相應(yīng)的時(shí)間戳,也就為單個(gè)對(duì)象創(chuàng)建了一個(gè)時(shí)間序列。對(duì)象的當(dāng)前狀態(tài)可以通過(guò)對(duì)象的零點(diǎn)時(shí)間到當(dāng)前時(shí)間的全部事件回放進(jìn)行推斷。
例如,對(duì)于一個(gè)購(gòu)物車對(duì)象,每次添加產(chǎn)品(包括產(chǎn)品名稱、數(shù)量、價(jià)格)都會(huì)持久化為一個(gè)事件。
常見(jiàn)的事件存儲(chǔ)包括:
- EventStoreDB
- NEventStore
- IBM Db2 Event Store
內(nèi)容存儲(chǔ)庫(kù)
內(nèi)容存儲(chǔ)(Content stores)系統(tǒng),也稱為內(nèi)容存儲(chǔ)庫(kù),專門用于管理數(shù)字內(nèi)容,例如文本、圖片、視頻以及它們的元數(shù)據(jù)。
除了使用 SQL 或者 XPath 存儲(chǔ)查詢內(nèi)容之外,這類數(shù)據(jù)庫(kù)通常還支持全文搜索、版本控制、內(nèi)存結(jié)構(gòu)分層以及訪問(wèn)控制等。
Content Repository API for Java(JCR)是基于 Java 的內(nèi)容存儲(chǔ)實(shí)現(xiàn)的標(biāo)準(zhǔn) API。
常見(jiàn)的內(nèi)容存儲(chǔ)庫(kù)包括:
- Jackrabbit
- ModeShape
導(dǎo)航數(shù)據(jù)庫(kù)
導(dǎo)航數(shù)據(jù)庫(kù)(Navigational DBMS)只能通過(guò)記錄之間的鏈接訪問(wèn)數(shù)據(jù)。這類系統(tǒng)出現(xiàn)在 1960 年代,是最早用于管理大量數(shù)據(jù)的系統(tǒng),目前使用較少?;阪溄拥撵`活性,它們又可以分為層次數(shù)據(jù)庫(kù)和網(wǎng)狀數(shù)據(jù)庫(kù)。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-530106.html
常見(jiàn)的導(dǎo)航數(shù)據(jù)庫(kù)包括:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-530106.html
- IMS
- IDMS
到了這里,關(guān)于數(shù)據(jù)庫(kù)分類知多少?的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!