常见的数据库分类和选型
SQL vs NoSQL
数据库一般可以分为关系型数据库(SQL)和非关系型数据库(NoSQL:non-relational sql/Not Only SQL)。
常见的关系型数据库有:SQL Server,Oracle,Mysql,PostgreSQL。关系型数据库支持ACID(原子性、一致性、隔离性、耐用性),需要预先指定数据格式。
关系型数据库 (RDB) 是一种在表、行和列中构建信息结构的方法。RDB 可以通过联接表来在信息之间建立关联或关系,从而使用户可以轻松理解和分析各种数据点之间的关系。
常见的非关系型数据库有:Redis(key-value数据库),HBase(列式数据库),Neo4j(图数据库),MongoDB(文档型数据库)等等。非关系型数据库一般不保证ACID(或者部分保证),非关系型数据库是相对于关系型数据库来说的。其特点自然是关系型数据库不足的地方。非关系型数据库一般都是灵活的、容易扩展的、高可用的,一般都支持分布式和高并发。
OLTP vs OLAP
On-Line Transaction Processing(联机事务处理) vs On-Line Analytical Processing(联机分析处理)
OLTP主要是面向用户的事务操作,强调的是事务(写)。常见的OLTP型数据库就是各种关系型数据库。
OLAP主要是面向用户的决策分析,强调的是分析(读)。常见的OLAP型数据库有基于Hadoop分布式文件系统的Hive等,以及MPP数据库ClickHouse、GreenPlum。(Massively Parallel Processing大规模并行处理)等
可以说OLAP依赖于OLTP产生的数据,OLAP的分析是基于OLTP所产生的数据。
列式数据库 vs 行式数据库
列式数据库是以列存储数据的数据库,主要适合批量数据处理和即时查询。相对应的就是常见的行式数据库,比如常见的MySQL、Oracle等。
行式数据库模式更适合OLTP,列式数据库模式更适合OLAP。
列式存储的优势:
- 自动索引:数据按列存储,天然就是索引。
- 利于数据压缩:同一列的数据都是相同类型的,相同类型的数据,数据压缩效率更高。
这篇论文,对比了行存储&列存储的查询对比: Column-Stores vs. Row-Stores: How Different Are They Really?
下面是常见的列式数据库的对比, 对比信息来源db-engines: Cassandra vs ClickHouse vs HBase
其他一些常见的数据库
- 搜索引擎型数据库:Elasticsearch 、 es相关历史内容
- 图数据库: nebula
- 时序数据库: InfluxDB 、 Prometheus 、 Apache Druid (InfluxDB vs Prometheus vs Apache Druid)