【云原生数据库:原理与实践】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. 存储引擎

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

缓冲区管理等。

相关推荐
Random Glow10 分钟前
聚簇索引:为什么主键顺序决定插入性能
数据库·mysql·性能优化·innodb·索引
软件技术NINI11 分钟前
基于PHP和MySQL的快递代收点管理系统的设计与实现
开发语言·javascript·数据库·mysql·毕业设计·php·毕设
L02082416 分钟前
Kubernetes Service 与 kube‑proxy 深度详解
运维·算法·云原生·容器·贪心算法·kubernetes
SatanII31 分钟前
kubernetes service && proxy
云原生·容器·kubernetes
吹什么轩35 分钟前
MySQL 增删改查(CRUD)完全指南:从 INSERT 到 GROUP BY
数据库·mysql
艾伦_耶格宇1 小时前
【kubernetes - 1.28版本】-1 kubernetes基础
云原生·容器·kubernetes
为思念酝酿的痛1 小时前
MySQL表的约束
数据库·mysql
时间售卖铺1 小时前
MySQL存储过程流程控制全解析
运维·数据库·mysql·云原生
拾起零碎1 小时前
U8/触发器,把自定义项写入批次档案
数据库
Initialize-le1 小时前
PVC 一直 Pending?五步排查存储绑定
云原生·容器·kubernetes