关系型与非关系型
关系数据库
MySQL、MariaDB(MySQL的代替品)、
Percona Server(MySQL的代替品·)、PostgreSQL、
Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、Oracle、SQL Server、INFORMIX、Sybase、dBASE、Clipper、FoxPro、foshub。
几乎所有的数据库管理系统都配备了一个开放式数据库连接(ODBC)驱动程序,令各个数据库之间得以互相集成。
关系型数据库最典型的数据结构是表,由二维表及其之间的联系所组成的一个数据组织
优点:
- 易于维护:都是使用表结构,格式一致;
- 使用方便:SQL语言通用,可用于复杂查询;
- 复杂操作:支持SQL,可用于一个表以及多个表之间非常复杂的查询。
缺点:
- 读写性能比较差,尤其是海量数据的高效率读写;
- 固定的表结构,灵活度稍欠;
- 高并发读写需求,传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
OLTP、OLAP、HTAP
OLTP(联机事务处理)
OLTP=Online Transaction Processing=联机事务处理
传统的关系型数据库
OLTP 是事件驱动、面向应用的,也称为面向交易的处理过程。其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作的快速响应。例如银行类、电子商务类的交易系统就是典型的 OLTP 系统。
OLTP 具备以下特点:
- 直接面向应用,数据在系统中产生;
- 基于交易的处理系统;
- 每次交易牵涉的数据量很小,对响应时间要求非常高;
- 用户数量非常庞大,其用户是操作人员,并发度很高;
- 数据库的各种操作主要基于索引进行;
- 以 SQL 作为交互载体;
- 总体数据量相对较小。
OLAP(联机事实分析)
OLAP=Online Analytical Processing=联机实时分析
OLAP 是面向数据分析的,也称为面向信息分析处理过程。它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。其特征是应对海量数据,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果,例如数据仓库是其典型的 OLAP 系统。
OLAP 具备以下特点:
- 本身不产生数据,其基础数据来源于生产系统中的操作数据;
- 基于查询的分析系统;
- 复杂查询经常使用多表联结、全表扫描等,牵涉的数量往往十分庞大;
- 每次查询设计的数据量很大,响应时间与具体查询有很大关系;
- 用户数量相对较小,其用户主要是业务人员与管理人员;
- 由于业务问题不固定,数据库的各种操作不能完全基于索引进行;
- 以 SQL 为主要载体,也支持语言类交互;
总体数据量相对较大。
HTAP(混合事务和分析处理)
HTAP=Hybrid Transaction & Analytical Processing=混合事务和分析处理
HTAP打破 了OLTP 和 OLAP 之间的隔阂,既可以应用于事务型数据库场景,亦可以应用于分析型数据库场景,实现实时业务决策。HTAP 数据库基于分布式架构,支持弹性扩容,可按需扩展吞吐或存储,轻松应对高并发、海量数据场景
技术要点:
- 底层数据要么只有一份,要么可快速复制,并且同时满足高并发的实时更新;
- 要满足海量数据的容量问题,在存储、计算都具有很好的线性扩展能力;
- 具有很好的优化器,可满足事务类、分析类的语句需求;
- 具备标准的 SQL,并支持诸如二级索引、分区、列式存储、向量化计算等技术
非关系型
非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。
- 文档型
- key-value型
- 列式数据库
- 图形数据库
优点: - 格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛,而关系型数据库则只支持基础类型。
- 速度快:nosql可以使用硬盘或者随机存储器作为载体,而关系型数据库只能使用硬盘;
- 高扩展性;
- 成本低:nosql数据库部署简单,基本都是开源软件
缺点 - 不提供sql支持,学习和使用成本较高;
- 无事务处理;
- 数据结构相对复杂,复杂查询方面稍欠。