【云原生数据库:原理与实践】1- 数据库发展历程

1-数据库发展历程

1.1 数据库发展概述

从1960年:Integrated Database System(IDS),该系统是一个网状模型(Network Model)到 IMS(Information Management System),使用了层次模型(Hierarchical Model)支持事务处理。

再到IBM的E.F.Codd提出:A Relational Model of Data for Large Shared Data Banks 中 提 出 了 关 系 模 型(Relational Model),Michael Stonebraker 开 发 出PG的前身INGRES(Interactive Graphics and Retrieval System),后续便是DB2 Oracle...

1.1.4 云原生与分布式时代

随着业务处理规模增加,一种方法是垂直扩展(Scale up),提升数据库各个组件的容量,使用更好的硬件,比如小型机、高端存储,如著名的"IOE"解决方案,数据库系统架构使用多个计算节点共享一份存储,称为Shared-Storage架构

另一种方法是水平扩展(Scale out),还是保持原来单个数据库实例的容量不变,用更多的数据库节点组合为一个无共享(Shared-Nothing)分布式系统来解决问题,每个节点根据分布规则(Sharding Rule)存储一部分数据(Shard),处理一部分请求。

然后就是Google三驾马车,GFS、BigTable、MapReduce。

在处理频繁变化的业务和一些专用的特殊结构时殊为不便。一些使用更灵活的数据模型定义(Schemaless)或特殊的数据模型的数据库出现了,统称为NoSQL系统。NoSQL数据库主要包括键值(KeyValue,KV)数据库、文(Document)数据库、图(Graph)数据库三大类。键值数据库的代表为Redis、HBase和Canssandra;文档数据库的代表为MongoDB;图数据库的代表为Neo4j等。

1.2 数据库技术发展趋势

1.2.1 云原生与分布式

对于云数据库而言,基于资源解耦的高可用性是其基本特征。

面对高并发与大数据处理需求,云数据库应该具备水平扩展与分布式处理能力,包括但不限于负载均衡、分布式事务处理、分布式锁、多租户下的资源隔离与调

度、CPU混合负载和大规模并行处理等。

1.2.2 大数据与数据库一体化

要使云数据库具备大数据处理能力,一方面需要借助云基础设施的快速弹性、分布式并行处理特性,打造强劲的内核引擎,实现计算与存储资源效能的最大化,以可接受的性价比对外输出海量数据分析处理能力。另一方面,需要有与大数据分析处理相配套的生态工具,主要是数据流转迁移工具、数据集成开发工具以及数据资产管理能力。

1.2.3 软硬件一体化

利用异构计算设备GPU加速这些计算操作、还有FPGA、NVM。

网络上 RDMA、InfiniBand等。

1.2.4 多模

图(Graph)、键值(Key-Value)、文档(Document)、时序(Time Series)和时空(Spatial)等,以及图片、流媒体等非结构化数据

1.2.5 智能化运维

1.2.6 安全可信

1.3 关系数据库主要技术原理

  1. 接入管理

主要是ODBC JDBC

  1. 查询引擎

SQL引擎子系统负责将用户发送过来的SQL请求进行解析、语义检查、生成逻辑计划(Logical Plan),经过一系列重写(Rewrite)与优化(Optimize),生成物理计划(Physical Plan),交由计划执行器(Plan Executor)执行

  1. 事务处理

并发控制,根据异常不同等级定义了多个隔离级别(Isolation Level)选项,以严格程度依次增加分为:读未提交(ReadUncommitted)、读已提交(Read Committed)、可重复读(RepeatableRead)和可串行化(Serializable)。

主要的并发控制技术有以下几种:2PL、MVCC、OCC

日志与恢复系统:日志系统是数据库存储引擎中的核心部分,主要功能是保证已提交事务中的持久性(D),使得数据库在崩溃后仍然能将之前已提交的事务恢复过来,并且确保回滚中止执行的事务的原子性(A)。目前主要是根据ARIES论文的日志机制进行设计。

  1. 存储引擎

数据组织和索引管理:行列存储以及混合存储

缓冲区管理等。

相关推荐
小丁爱养花3 分钟前
Redis 内部编码/单线程模型/string
数据库·redis·缓存·1024程序员节
l1t23 分钟前
利用DuckDB SQL求解集合数学题
数据库·sql·算法·集合·duckdb
筵陌33 分钟前
MYSQL表的操作
数据库·mysql·1024程序员节
一 乐40 分钟前
汽车销售|汽车推荐|基于SprinBoot+vue的新能源汽车个性化推荐系统(源码+数据库+文档)
java·数据库·vue.js·汽车·毕设·汽车个性化推荐
虾说羊1 小时前
最细Maven教程以及Maven私服搭建
java·数据库·maven
RestCloud1 小时前
Kingbase与ETL:如何实现金融级数据库的安全数据同步
数据库
ajassi20002 小时前
开源 Linux 服务器与中间件(八)数据库--MariaDB
服务器·数据库·开源
华仔啊2 小时前
这20条SQL优化方案,让你的数据库查询速度提升10倍
数据库·后端·mysql
赵庆明老师2 小时前
C# 结合Redis Cache 访问MySQL数据库
数据库·redis·c#
Dobby_052 小时前
【Linux】安装 Rocky Linux 9 并配置 Kubernetes 集群基础环境 | VMware | Win11
linux·云原生·kubernetes