DB-Engines 列出了 400 多个数据库管理系统的流行度排名,它们可以按照数据模型分为不同的类型,例如关系型数据、文档数据库等。
本文简单介绍一下不同数据库的分类以及常见的数据库管理系统。
✍️如今很多数据库提供了多模型存储支持,例如 PostgreSQL 不仅支持关系模型,还提供了文档存储、图数据库以及空间数据库功能。
关系型数据库
关系型数据库管理系统(RDBMS)是最主流的数据库类型,它们使用关系(表)模型存储数据。表的模式由表名和固定数量的字段组成,一个记录(实体)对应表中的一行,由多个属性值组成。关系实际上就是一组结构统一的记录。
关系型数据库的表结构设计通常使用规范化技术,关系支持的基本操作包括:
- 集合操作(并集、交集、差集);
- 选择操作(基于指定条件选择表中记录的子集);
- 投影操作(选择属性/字段的子集);
- 连接操作(基于多个表的笛卡尔积以及选择和投影操作)。
关系型数据库使用 SQL 执行操作,包括表的管理、事务控制以及用户管理等。
经过多年的发展,许多 RDBMS 不仅仅支持关系模型,同时也提供了用户自定义类型、非原子属性(XML、JSON、数组等)、继承等扩展功能。
常见的关系型数据库包括:
- Oracle
- MySQL
- Microsoft SQL Server
- PostgreSQL
- IBM Db2
- Microsoft Access
- SQLite
- Snowflake
键值数据库
键值(Key-value)存储可能是最简单的数据模型,它们只能存储键值对,并且通过键查找值。
键值数据库非常简单,通常不能实现复杂的应用程序。但是它的简单却在某些情况下非常有效,例如嵌入式系统或者高性能的内存数据库。
另外,扩展形式的键值存储可以基于键进行排序,因此可以执行范围查询和有序处理。
常见的键值数据库包括:
- Redis
- Amazon DynamoDB
- Microsoft Azure Cosmos DB
- Memcached
- etcd
- Hazelcast
文档数据库
文档存储(Document stores),也称为面向文档的数据库系统,主要特点在于无模式(schema-free)的数据结构。无模式意味着:
- 集合(表)中的记录(行)不需要定义统一的结构,每个记录可以包含不同的属性(字段);
- 每个记录中的各个字段的数据类型可以不同;
- 一个字段可以包含多个值(数组);
- 记录可以包含嵌套结构。
文档存储通常使用内部注解,可以在应用程序中直接进行处理。最常见的存储方式是 JSON。
常见的文档数据库包括:
- MongoDB
- Amazon DynamoDB
- Databricks
- Microsoft Azure Cosmos DB
- Couchbase
时序数据库
时序数据库(Time Series DBMS)是专门为了存储时间序列数据而进行优化的数据库管理系统。时序数据的每一条记录都包含了一个时间戳信息,来源包括物联网中的传感器、智能电表、RFID 等设备,以及股票交易系统中的交易数据。
常见的时序数据库包括:
- InfluxDB
- Kdb
- Prometheus
- Graphite
- TimescaleDB
图数据库
图数据库(Graph DBMS),也称为面向图的数据库,以图(节点和边)结构表示数据。它们支持图数据的处理,以及图中具体属性的计算,例如从一个节点到另一个节点的路径。
图数据库通常不会提供所有节点的索引,因此无法直接基于属性访问节点。
常见的图数据库包括:
- Neo4j
- Microsoft Azure Cosmos DB
- Virtuoso
- OrientDB
- ArangoDB
- Amazon Neptune
搜索引擎
搜索引擎是专门用于搜索文本内容的一类 NoSQL 数据库。除了针对搜索应用的通用优化之外,这类系统还提供了一些功能:
- 支持复杂搜索条件
- 全文搜索
- 词干提取
- 搜索结果排名和分组
- 支持高扩展性的分布式搜索
常见的搜索引擎包括:
- Elasticsearch
- Splunk
- Solr
- OpenSearch
- Sphinx
对象数据库
对象数据库(Object oriented DBMS),也称为面向对象的数据库,设计目标是在数据库中以面向对象编程语言相同的方式存储对象,从而避免关系型数据库中的转换和分解。另外,对象之间的关系(例如继承)也是在数据库内部进行维护。
对象数据库通常使用类似 SQL 的查询语言操作对象。
由于近年来许多关系型数据库引入了面向对象的功能,例如自定义数据类型和属性;同时开发工具和框架(Hibernate、JPA 等)支持对象和关系之间的转换,对象数据库的应用并不常见。
常见的对象数据库包括:
- InterSystems IRIS
- InterSystems Caché
- Db4o
- ObjectStore
- Actian NoSQL Database
RDF存储
RDF(资源描述框架)是一种描述信息的方法论,最初用于描述 IT 资源的元数据,如今应用更加广泛,通常与语义网相结合。
RDF 模型以主-谓-宾的形式将信息表示为三元组,能够存储和处理这种三元组的数据库管理系统被称为 RDF 存储或者三元存储。RDF 存储可以看着图数据库的一个子类,谓词可以解释为主语和宾语之间的联系。但是 RDF 存储提供了一些额外的访问方法,例如类似 SQL 的查询语言 SPARQL。
常见的 RDF 存储数据库包括:
- MarkLogic
- Apache Jena - TDB
- Virtuoso
- Amazon Neptune
- GraphDB
宽列存储
宽列存储(Wide column stores),也称为可扩展记录存储,以记录的方式存储数据,支持超大数量的动态字段功能。由于字段名和记录的键不固定、而且记录可以包含数十亿个字段,宽列存储可以被看作二维键值存储。
宽列存储也具有文档数据库的无模式特性,但是它们的实现方式完全不同。
不要将宽列存储和关系型数据库中的面向列的存储混淆,后者是关系型数据库或者数据仓库中为了改进分析性能而实现的存储方式,它们将不同记录的相同列存储在一起,而不是将同一个记录的不同字段存储在一起。
常见的宽列存储数据库包括:
- Cassandra
- Microsoft Azure Cosmos DB
- HBase
- Google Cloud Bigtable
多值数据库
多值数据库(Multivalue DBMS)与关系型数据库类似,也是以表的形式存储数据。但是,多值数据库可以为记录的一个属性(字段)指定多个值。这种存储类型违反了第一范式,因此它们也被称为非第一范式(NF2)系统。
某些关系型数据库扩展了多值属性(例如数组)功能,例如 PostgreSQL。
常见的多值数据库包括:
- Adabas
- UniData,UniVerse
- jBASE
向量数据库
向量数据库(Vector DBMS)是专门用于高效存储、索引以及查询高维向量数据的软件系统。它们使用特殊的算法和数据结构,支持相似性搜索,通常用于 AI 机器学习、数据挖掘等领域。
常见的向量数据库包括:
- Kdb
- Chroma
- Pinecone
- Milvus
原生XML数据库
原生 XML 数据库(NXD)用于存储 XML 文档。
与支持 XML 数据类型的数据库相比,原生 XML 数据库提供了完整的 XML 功能。它们可以表示层级数据,可以理解 XML 元素中嵌入的 PCDATA 声明,并且支持 XML 查询语言,例如 XPath、XQuery 以及 XSLT。
原生 XML 数据库内部不一定使用 XML 文档格式存储数据,它们可以使用其他更加高效的存储格式。
常见的原生 XML 数据库包括:
- MarkLogic
- Virtuoso
- Oracle Berkeley DB
- BaseX
空间数据库
空间数据库管理系统(Spatial DBMS)是一种用于高效存储、操作和查询空间数据的数据库管理系统。空间数据代表了几何空间中的对象,例如点、线和多边形。
空间数据库管理系统通常为空间数据提供了专用的数据类型,同时为了优化空间数据集的访问提供了空间索引。例如,空间索引可以高效地检索距离某一对象一定距离之内的数据点。另外,空间数据库管理系统还提供了操作空间对象或者执行基于空间对象的操作功能。例如,计算对象之间的距离、对象合并或交叉以及计算对象的属性(例如多边形的面积)。
地理空间数据(Geospatial data)是空间数据的一个重要子集,用于处理描述地球表面位置的数据。地理信息系统(Geographic information systems、GIS)可以处理地理空间数据。
时空数据(Spatio-temporal data)是另一种常见的相关数据类型,它们将空间数据与时间戳相结合,从而为数据存储和操作提供了另一个额外的维度。
常见的空间数据库包括:
- PostGIS
- Aerospike
- SpatiaLite
事件存储
事件存储(Event Stores)实现了事件溯源功能,它们存储了对象的所有状态变更事件以及相应的时间戳,也就为单个对象创建了一个时间序列。对象的当前状态可以通过对象的零点时间到当前时间的全部事件回放进行推断。
例如,对于一个购物车对象,每次添加产品(包括产品名称、数量、价格)都会持久化为一个事件。
常见的事件存储包括:
- EventStoreDB
- NEventStore
- IBM Db2 Event Store
内容存储库
内容存储(Content stores)系统,也称为内容存储库,专门用于管理数字内容,例如文本、图片、视频以及它们的元数据。
除了使用 SQL 或者 XPath 存储查询内容之外,这类数据库通常还支持全文搜索、版本控制、内存结构分层以及访问控制等。
Content Repository API for Java(JCR)是基于 Java 的内容存储实现的标准 API。
常见的内容存储库包括:
- Jackrabbit
- ModeShape
导航数据库
导航数据库(Navigational DBMS)只能通过记录之间的链接访问数据。这类系统出现在 1960 年代,是最早用于管理大量数据的系统,目前使用较少。基于链接的灵活性,它们又可以分为层次数据库和网状数据库。文章来源:https://www.toymoban.com/news/detail-530106.html
常见的导航数据库包括:文章来源地址https://www.toymoban.com/news/detail-530106.html
- IMS
- IDMS
到了这里,关于数据库分类知多少?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!