Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >云数据库的本质是什么?

云数据库的本质是什么?

作者头像
IT大咖说
发布于 2018-08-08 01:55:16
发布于 2018-08-08 01:55:16
2.4K0
举报
文章被收录于专栏:IT大咖说IT大咖说

内容来源:2017 年 11 月 18 日,北京偶数科技创始人兼CEO常雷在“第七届数据技术嘉年华”进行《云数据库的本质》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:4055 | 11分钟阅读

摘要

数据仓库的演进分为三代,第一代数据仓库采用共享存储架构(比如Oracle Exadata),可扩性差,使用专有硬件,价格高。第二代数据仓库采用MPP架构,采用无共享架构(比如Teradata),使用普通X86服务器,可扩展至几十节点,但很难满足大数据需求,架构不够灵活,比如难于实现秒级扩容。

Apache HAWQ属于第三代数据仓库,使用存储与计算分离架构,可扩展至数千节点,架构灵活。另外,HAWQ从著名第二代MPP数据仓库系统Greenplum Database演化而来,继承了Greenplum Database的SQL以及对第三方工具的兼容性,所以,在兼容性和性能方面大大优于其他第三代Hadoop SQL引擎。

获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。

数据库背景

数据生态系统

2016年全球数据仓库市场规模已达数百亿美金,主要由几大部分组成。最底层是云的部分,包括公有云私有云。往上为数据层,这部分中传统的关系数据库和NoSQL、NewSQL包含在OLTP中,流的处理和采集等归属于ETL,还有就是大家最关心也是占比最大的数据仓库领域,再上层则是BI和目前最火热的机器学习/AI。

以上每一部分的市场其实都不小,数据的增量也基本保存在10%-45%之间,即使是大家不太注意的ETL的市场也接近了100多亿美金。

而我们接下来将着重介绍的是数据库的部分,首先来回顾下数据库的历史。

数据库:55年

数据库这个词首次出现至今已过了55年,最早是由Inverted File Database System和System Development Corporation这两家公司在一个军方项目中提出的,虽然这不一定是世界上第一个数据库,但是DataBase这个单词却是首次被提出。

后续数据库经历了几个比较繁荣的发展阶段,第一阶段是在1960年代此时的数据还是网状/层次模型结构,第二阶段的1970-1990年代主要是关系性数据库,第三阶段从2000年开始逐渐出现了一些新型数据库。

数据库的核心

数据库中核心的研究领域主要分为几部分。第一部分为数据模型和查询语言,数据模型包含数据的表示以及理论支持,有模型之后当然就需要有查询语言来让程序访问数据,最初的查询语言类似于程序语言,相对比较复杂,后续才发展出了现在的SQL语句。第二部分为查询优化和执行,这也是数据库最核心的部分,面临复杂查询时优化和执行必不可少。第三部分为索引和存储,数据库的存储其实非常复杂,经历了很多的演练,从最早的行存慢慢演化出来了列存以及存储于演示分离的架构等。第四部分为事务处理,传统意义上的数据库存储包含索引、存储、事务这几个部分,这里之所以将事务处理分离开来,是因为相对来说这部分比较独立,在各个不同数据库中也都将它独立出来了。

数据库演化

这张图展示的是网状/层次模型的解析图,左下角是网状模型存储的数据,它们通过指针相互关联,可以看到整个模型中存在大量的指针,相对来说还是比较复杂。网状模型数据的存取使用的是一种过程性的语言,基本上类似于写程序语言,用起来很不方便。

1970年开始Edgar F. Codd提出了关系模型,用数学的理论形式来表示数据模型,简单易用是它最大的优先。后来虽然出现了NoSQl、HBse、NewSQL等各种数据库,但是到最后大家都会发现SQL语言还是最简单的,不管是通过key value的形式还是语言的形式访问数据库都没有被用户所熟悉,因为相对来说SQL语句更类似与自然语言能被很好的接受。

2000年之后出现了第三大类模型,这一类的模型数量相对要多一些,包括Graph、Tree、KV等模型,其中Tree类型的数据库之前有一段时间很火热,MongoDB就属于这一类。这些比较热门的数据库一般在10多年前研究界都会有所研究。

其他分类方法

数据库的分类不光可以通过模型来分,也还有其他各种方法。比如事务处理和分析处理,事务交易是目前大部分的数据库涉及的领域,分析处理则是从70-80年代开始出现,分析类的数据仓库也是大数据中涉及最多的一部分。第二种分类方式是并行和串行,串行的出现的时间相对并行要早一些,因此早期的数据大多都是串行。第三类是基于硬件的分类,硬件和软件向来都不可分离,早期的数据库都是基于CPU,而随着硬件的发展数据库也做出了相应的变化,不过由于硬件的局限性目前主流的还是CPU。第四类是云数据库和非云数据库,虽然从运维的层次来看云数据库相对传统数据库简化了很多,但它本质上是一种商业模式,真正在数据库核心上的改变并没有多少。

介绍完分类方法之后,我们重点来看下其中的分析处理和云数据库。

数据仓库的演进

分析处理主要涉及的就是数据仓库。Teradata是最早期做数据仓库商业化的公司,于1984年推出了第一个MPP数据仓库。需要注意的是最初的数据仓库应用技术并不是MPP而传统的共享存储方式。传统数仓可扩展性相对较差,最多只能到十几个节点,第一代MPP解决了部分可扩展性问题。2000年左右又出现了第二代MPP,使用常见的X86架构硬件实现了并行处理。MPP的缺陷在于不能应付太大的数据规模,基本上100个节点就到了瓶颈,主要是因为无法很好的管理节点。所有第三代数仓出现了,Hive, HAWQ, SparkSQL, Snowflake等就是属于这一类,它有一个明显的特点就是实现了存储和计算的完成分离,能够根据资源调度计算,可扩展性得到了很大提升。

数据仓库引擎比较

这里将这三代数据仓库放在几个象限内进行了比较,第一个维度是性能和兼容性,第二维度是可扩展性和开源、开放性。传统的共享存储数据仓库被放在左上角,中间部分是MPP,由于云数据库的本质架构并无太多变化,所以也位于中间。最后是第三类系统,他们性能往往不如老牌数据库优化的好,兼容性也较差。

NewDW的细分类别

根据存储的不同新一代数仓还能进行更细的划分。第一类是SQL on Hadop,SparkSQL、Hive以及早期的HAWQ都属于这一类。第二类是SQL on Object Store,随着云计算的发展很多创业公司都将数据存储在云端,阿里的对象存储就有很多中小型公司在使用。前两大类虽然在架构上还不错,但是都有着同样的局限性,想要取代第二代数仓还有很远的路要走。这也就是第三大类Hybrid(混合存储)出现的目的,这一类有着自己的原生存储,对外部存储可插拔,其中走的比较前面一点的数据库有Impaia和HAWQ。

云数据库

云数据库的创新并不多,大部分都是将现有的数据库搬到云上,大致有这样几个分类。第一类是数据库服务,主要是对数据库做了一些工程性工作,比如新增前端界面,然后做部署、收费和一些安全控制。第二类就更简单了,直接将虚拟机镜像放在云端。第三类容器镜像针对的是传统的TP,比如Mysql和Postgre就有一些可以直接使用的容器镜像,对于并行的数据库还没有很好的方案。

云数据库相对于传统数据库不同之处可能只有这几点,部署运维比较简单,收费模式不同,能做到简单的弹性伸缩

OuShu DataBase的前世今生

HAWQ主要发展历程

这就是HAWQ的发展历程,从刚开始提出创意到做出原型系统, 再到第一代产品完成然后到后来开源,最后成立创业公司,基本上是这样一个过程。2017年的时候我们又推出了新的执行器,性能上有了10倍的提升。

Greenplum版本演进

HAWQ的原型系统最初是基于Postgre和hadoop,后来在进入Greenplum之后我们有了Greenplum的源码,所以后来将Postgre替换成了Greenlpum。上图是Greenplum Database最初始的架构,非常经典的MPP模式,每个节点上有几个单节点的数据库,每个单节点都有一些mirror。比如上图的结构中有4个节点,每个节点中有2个主数据库,还有两个mirror,这时候的并行度就是8。

上图是HAWQ的Alpha版本的架构,这个版本还不能算是第三代的数据仓库,因为这时只是单纯添加了存储,计算和调度都没有改变,解决的问题有限,包括Recovery、动态扩容、调度、固定并行等问题都还存在。

1.0版本中我们将mirror 去除了,使得Recovery更加简单,解决了原先4个问题的其中之一。

2.0版本做了大量的架构变动,这一代开始才真正的达到了存储与计算的分离,实现了秒级扩容,可以根据数据进行灵活调度,以及根据查询规模决定并发大小等。在这之后也能和容器云平台进行很好的结合。

HAWQ3.0目前只在企业版本中才会发布,开源版本还未发布。数据库最核心的部分就是执行器和优化器,针对这点我们在3.0中完全重写了一个新的执行器,为此做了大量的工作,每个算法都进行了优化,因此在性能上有很大的提升。

这里展示的是4.0将要做的工作,HAWQ的存储完全换了一套,可以认为是一个NewSQL引擎,但相对于目前大多数只关注事务型处理的NewSQL,我们还会从分析型数据仓库的角度来做大规模的跨数据中心的复制。4.0的整个架构基本上是P2P,没有master,支持广域网的复制。

以上为今天的全部分享内容,谢谢大家!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-08-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT大咖说 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
centos中KVM虚拟化
1.确认 CPU 已经支持虚拟化,intel 的 CPU 虚拟化技术叫 vmx,AMD 的 CPU 叫 svm
@凌晨
2020/05/28
7680
CentOS 7.5 安装KVM虚拟机(Linux) 原
Kernel-based Virtual Machine的简称,是一个开源的系统虚拟化模块,自Linux 2.6.20之后集成在Linux的各个主要发行版本中。 它使用Linux自身的调度器进行管理,所以相对于Xen,其核心源码很少。KVM目前已成为学术界的主流VMM之一。 KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。 而Xen早期则是基于软件模拟的Para-Virtualization,新版本则是基于硬件支持的完全虚拟化。但Xen本身有自己的进程调度器,存储管理模块等,所以代码较为庞大。 广为流传的商业系统虚拟化软件VMware ESX系列是基于软件模拟的Full-Virtualization。
拓荒者
2019/05/25
7.2K0
Linux系统——KVM虚拟机安装与管理
kvm是linux内核的一种技术,有着很高的兼容性,性能也非常好,相对物理机而言它就是一个进程,日常管理维护与扩展非常方便,因此,今天来介绍下KVM虚拟机的安装与一些日常管理操作
民工哥
2020/09/16
5.6K0
Linux系统——KVM虚拟机安装与管理
CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统
笔记内容:CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统 笔记日期:2018-03-07
端碗吹水
2020/09/23
4K0
CentOS7上安装并配置KVM,以及通过KVM安装CentOS系统
KVM 简介
KVM(Kernel-based Virtual Machine) ,基于内核的虚拟机,配合QEMU(处理器虚拟软件),需要CPU支持虚拟化技术(并且在BIOS里打开虚拟化选项),效率可达到物理机的80%以上。此外,它对SMP的支持很好。
为为为什么
2022/08/06
1.8K0
kvm 安装 windows 虚拟机
将 /etc/sysconfig/selinux 中的 SELinux=enforcing 修改为 SELinux=disabled
用户8824291
2022/02/25
2.5K0
Cent os 7之KVM虚拟化基础管理
至此,命令行创建虚拟机就完成了,接下来使用手动更改配置文件的方式,克隆test1,生成新的虚拟机test2(在我博文前面的那个博文链接中有专用于克隆的命令工具的使用方法,这里只是为了来了解虚拟机的配置文件) 二、手动更改配置文件的方式,克隆web01,生成新的虚拟机web02
小手冰凉
2020/07/29
7570
Cent os 7之KVM虚拟化基础管理
KVM简介,安装及常见使用详解
查看状态操作结果,如Active: active (running),说明运行情况良好
用户8851537
2021/07/21
3.5K0
openstack镜像制作详解
注释:如果输出的信息中有vmx,说明intel处理器支持完全虚拟化。如果显示svm,说明是AMD的处理器支持虚拟化。
yaohong
2019/09/11
4.5K0
openstack镜像制作详解
kvm虚拟机日常操作命令梳理
KVM虚拟机的管理主要是通过virsh命令对虚拟机进行管理。废话不多说,下面列出kvm日常管理中的命令 1)查看KVM虚拟机配置文件及运行状态 KVM虚拟机默认配置文件位置: /etc/libvirt/qemu/ autostart目录是配置kvm虚拟机开机自启动目录。 virsh命令帮助 # virsh -help 或直接virsh命令和,再执行子命令。如下所示。 # virsh 欢迎使用 virsh,虚拟化的交互式终端。 输入:'help' 来获得命令的帮助信息 'quit' 退出 virsh #
洗尽了浮华
2018/01/22
10.4K0
KVM 虚拟化技术
1.1 前言 1.1.1 什么是虚拟化? 在计算机技术中,虚拟化(技术)或虚拟技术(英语:Virtualization)是一种资源管理技术,是将计算机的各种实体资源(CPU、内存、磁盘空间、网络适配器
惨绿少年
2018/03/30
6.1K0
centos7.3部署KVM虚拟化
如果什么都没有,说明没有加载,上面显示表明已加载KVM,如果没有加载则执行以下命令加载KVM
好派笔记
2021/09/15
5820
部署 KVM 虚拟化平台
KVM自Linux 2.6.20版本后就直接整合到Linux内核,它依托CPU虚拟化指令集实现高性能的虚拟化支持。它与Linux内核高度整合,因此在性能、安全性、兼容性、稳定性上都有很好的表现。 在KVM环境中运行的每个虚拟化操作系统都将表现为单个独立的系统进程。因此它可以很方便地与Linux系统中的安全模块进行整合(SELinux),可以灵活的实现硬件资源的管理和分配,KVM虚拟化的架构图如下:
小手冰凉
2019/09/10
1.4K0
部署 KVM 虚拟化平台
KVM_虚拟化技术
KVM 是指基于 Linux 内核的虚拟机(Kernel-based Virtual Machine)。 2006 年 10 月,由以色列的 Qumranet 组织开发的一种新的“虚拟机”实现方案。 2007 年 2 月发布的 Linux 2.6.20 内核第一次包含了 KVM 。增加 KVM 到 Linux 内核是 Linux 发展的一个重要里程碑,这也是第一个整合到 Linux 主线内核的虚拟化技术。
yaohong
2019/09/11
1.7K0
kvm部署过程记录
根据提示一步一步进行安装,其他的也类似,注意:! 表示必须要设置的 所有带有 ! 的都设置完毕后,就可以输入 b 继续安装了
dogfei
2020/07/31
5610
Centos7.4安装kvm虚拟机(使用virt-manager管理)
之前介绍了使用WebVirtMgr或Openstack来部署及管理kvm虚拟机,下面简单介绍centos7.4下使用virt-manager部署及管理kvm虚拟机的做法:
拓荒者
2019/05/25
2.6K0
裸金属服务器kvm虚拟化安装win10
和普通的 VPS 相比,裸金属服务器属于物理服务器,我的数据和其他用户数据做到了物理隔离,同时服务器本身是支持二次虚拟化的。
宋天伦
2020/07/16
7.4K0
KVM虚拟化部署
intel: 最新linux内核的Intel处理器(含VT虚拟化技术) vmx nx lm
星哥玩云
2022/09/15
1.7K0
KVM虚拟化部署
Centos6.3安装KVM
一、安装kvm 1 在安装CentOS6.3时可以选择安装好kvm 2 如果未安装好kvm,请按照下列方式安装 [创建本地yum源] 挂载iso文件 mount -o loop -t iso9660 CentOS-6.3-x86_64-bin-DVD1.iso /mnt 设置本地yum源 在/etc/yum.repos.d/创建   “任意文件名.repo"    文件   vi 刚才新建的文件名编辑 【localyum】任意名称 ,不能有空格。 name= local yum  任意名称 baseurl=file:////mnt/Packages      这个路径是自定的。Server为光盘中的Server目录 ,Packages与Server放在同一目录下。即/software目录下 enabled=1   代表   生效     0为不生效 gpgcheck=1   检查gpgkey  1 生效   0不生效 gpgkey=file:///software    安装光盘里有这个文件        不指定  安装时,可能提示没有注册 保存退出 执行命令 yum clean all (1) kvm需要有 CPU 的支持(Intel VT 或 AMD SVM) [root@moniter ~]#egrep '^flags.*(vmx|svm)' /proc/cpuinfo 如果有返回值说明cpu支持虚拟化 (2) 安装kvm libvirted yum install kvm kmod-kvm qemu kvm-qemu-img virt-viewer virt-manager libvirt libvirt-python python-virtinst (3) 启动libvirted service messagebus start service haldaemon start service libvirtd start chkconfig messagebus on chkconfig haldaemon on chkconfig libvirtd on (4)检查kvm是否安装成功 [root@jiayuan ~]# virsh -c qemu:///system list  Id    名称                         状态 ----------------------------------------------------  1     redhat6.3                      running (5)kvm模块 [root@myKVM ~]# lsmod | grep kvm kvm_intel              52570  0 kvm                  314739  1 kvm_intel 二、配置网桥 vi /etc/sysconfig/network-scripts/ifcfg-br0 DEVICE=br0 TYPE=Bridge BOOTPROTO=static BROADCAST=10.207.20.255 IPADDR=10.207.20.200 NETMASK=255.255.255.0 NETWORK=10.207.20.0 ONBOOT=yes b、 vi /etc/sysconfig/network-scripts/ifcfg-eth0 # Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet DEVICE=eth0 BOOTPROTO=none ONBOOT=yes BRIDGE=br0 c、 重起网络服务生效 service network restart d、 echo 1 > /proc/sys/net/ipv4/ip_forward  #虚拟机上网 e、 检查桥接网络 [root@moniter ~]# brctl show bridge name     bridge id               STP enabled     interfaces br0             8000.842b2b74e1b6       no              eth0 virbr0          8000.000000000000       yes br0是我们配置的桥接网卡,virbr0是系统脚本自动配置的NAT网卡 三、安装vnc 注意:CentOS6.3 VNC的命名rpm为tiggervnc-server (1) yum install tiggervnc-server (2) vi /etc/sysconfig/vncservers #加一行     VNCSERVERS="
DevinGeng
2019/04/09
1.2K0
CentOS 7.2下KVM安装及初步使用
KVM是Kernel-based Virtual Machine的简称,是一个开源的虚拟化模块,今天我将在CentOS7的操作系统上安装KVM,以下是我的安装步骤。
拓荒者
2019/05/25
1.7K0
相关推荐
centos中KVM虚拟化
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档