从Megastore看RDBMS和NOSQL系统结合

简介:

RDBMS的优势在于功能,包括事务,强一致性,同时支持随机读和顺序扫描,索引。NOSQL系统的优势在于扩展性和性能。Google的经验告诉我们,系统设计的关键点还是在于可扩展性,依赖于底层GFS+Bigtable提供的无与伦比的可扩展性,Megastore能够在上层不断完善功能,兼具RDBMS和NOSQL系统的优点。

1, 兼顾随机读和顺序扫描。Bigtable底层的存储引擎为MemTable + SSTable构成的Merge-Dump存储引擎,SSTable设计成8K ~ 64K的块,块之间有序,随机读取型应用可以选择较小的块尺寸。和传统关系型数据库的B+树存储引擎不同的是,Merge-Dump存储引擎中的SSTable是只读的,因此可以做得简单有效。之所以能够使用Merge-Dump存储引擎是因为Bigtable把大表分成一个一个100MB~200MB的子表,存储引擎只需要处理百MB级别数据,而关系型数据库的假设是整台机器维护一颗B+树,存储引擎处理的数据规模为百GB级别。

2, 索引层面。Megastore支持两种索引,一种是local index,另外一种是global index。其中local index是单个Entity Group内部的索引,用于OLTP型的随机读取应用。global index是分布式索引,解决类似全文索引,关联推荐这样的问题。由于大多数的访问局限于单个Entity Group内部,local index的效果与RDBMS的单机索引类似,而global index与NOSQL系统的索引方法类似,Megastore的索引同时具有RDBMS和NOSQL系统索引的优点。

3, 事务。Megastore要提供的功能就是在满足事务功能的前提下不牺牲可扩展性和性能。同样是通过划分Entity Group,使得大多数的事务操作局限在Entity Group内部,通过Bigtable的单行事务保证单个Entity Group内部写redo log的原子性,在保证可扩展性和性能的前提下支持事务功能;而跨Entity Group的事务操作很不频繁,通过Two-phase commit协议支持这个功能,即使牺牲一些性能也不至于有太大影响。因此,可以认为Entity Group是RDBMS和NOSQL系统结合的神器。

4, 存储引擎。关系型数据库的存储引擎一般都是基于行的存储引擎,而NOSQL系统往往支持OLAP应用,因此,也会用到列式存储引擎。Bigtable的Locality Group让用户可以通过schema配置数据的行列存储模式。

5, Compaction。Compaction会影响读取类操作的响应时间,因为可能需要读取多个SSTable。然而,Bigtable的Compaction操作基本能够做到自适应。如果Bigtable Tablet Server接收写入的速度太快,单个子表可能同时有多个SSTable,但这样的应用往往都是MapReduce计算型应用,对延时要求不会太高;在线的OLTP应用写入一般比较慢,很少出现一个子表同时有多个SSTable的情况,往往只需要读取一个SSTable,再合并内存表MemTable中的数据即可。

6, MapReduce支持。Megastore基本保留了GFS + Bigtable的全部优点,因此,对分布式计算,比如MapReduce,支持非常友好。

7, OLAP实时计算支持。OLAP单次访问可能需要复杂的计算,比如千万条记录的实时计算,访问延迟要求相对较低,比如3~5秒。OLAP应用的磁盘读取模式一般为顺序扫描,通过分布式方法将数据分散到多机,计算时才能充分发挥多机的集群效应。OLAP实时计算相当于一次在线的MapReduce,可以增加一些协调者节点,将实时计算任务发送到协调者,协调者将任务拆分成不同子表的子任务发送到对应的多台Bigtable Tablet Server。每台Bigtable Tablet Server完成计算后,协调者进行合并汇总,如排序,分组,运算,等等。

总之,通过划分Entity Group,Megastore在单个Entity Group内部的操作能够获取RDBMS的优势,同时又不会对Bigtable原有的性能,可扩展性,支持的操作有所影响。跨Entity Group的操作通过分布式系统中的方法支持,如Two-phase commit, global index,允许牺牲部分性能或者一致性。Google的这种思路除了比较复杂,总体看来还是挺完美的。

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
9月前
|
缓存 NoSQL Linux
在CentOS 7系统中彻底移除MongoDB数据库的步骤
以上步骤完成后,MongoDB应该会从您的CentOS 7系统中被彻底移除。在执行上述操作前,请确保已经备份好所有重要数据以防丢失。这些步骤操作需要一些基本的Linux系统管理知识,若您对某一步骤不是非常清楚,请先进行必要的学习或咨询专业人士。在执行系统级操作时,推荐在实施前创建系统快照或备份,以便在出现问题时能够恢复到原先的状态。
910 79
|
6月前
|
人工智能 运维 NoSQL
云栖大会|AI浪潮下的NoSQL演进:下一代数据库的破局之道
AI浪潮下的NoSQL演进:下一代数据库的破局之道
|
12月前
|
前端开发 数据库
会议室管理系统源码(含数据库脚本)
会议室管理系统源码(含数据库脚本)
209 0
|
10月前
|
存储 NoSQL 搜索推荐
NoSQL数据库分类概览
以上就是我们的NoSQL数据库奇幻之旅。每一种NoSQL数据库都有自己独特的魅力和专长,择选合适的数据库,就像在魔法世界中挑选最适合自己的魔杖,使你的数据管理变得更加高效和神奇。在当今数据驱动的时代,懂得这些数据库的秘密,就掌握了处理各种数据挑战的关键。
479 61
|
7月前
|
安全 关系型数据库 数据管理
阿里云数据库:构建高性能与安全的数据管理系统
阿里云数据库提供RDS、PolarDB、Tair等核心产品,具备高可用、弹性扩展、安全合规及智能运维等技术优势,广泛应用于电商、游戏、金融等行业,助力企业高效管理数据,提升业务连续性与竞争力。
|
9月前
|
SQL 监控 安全
数据库安全审计系统
Next-DBM数据库审计系统助力企业解决数据安全难题,提供统一身份管理、全方位监控、智能风险识别、完整审计追溯及精细化权限管控,有效防范数据泄露与内部威胁,保障企业核心资产安全,满足合规要求,提升运维效率。
|
12月前
|
Java 数据库
jsp CRM客户管理系统(含数据库脚本以及文档)
jsp CRM客户管理系统(含数据库脚本以及文档)
261 10
|
人工智能 JavaScript 关系型数据库
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
499 14
【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
|
前端开发 Java 关系型数据库
基于ssm的社区物业管理系统,附源码+数据库+论文+任务书
社区物业管理系统采用B/S架构,基于Java语言开发,使用MySQL数据库。系统涵盖个人中心、用户管理、楼盘管理、收费管理、停车登记、报修与投诉管理等功能模块,方便管理员及用户操作。前端采用Vue、HTML、JavaScript等技术,后端使用SSM框架。系统支持远程安装调试,确保顺利运行。提供演示视频和详细文档截图,帮助用户快速上手。
508 17
|
前端开发 Java 关系型数据库
基于ssm的超市会员(积分)管理系统,附源码+数据库+论文,包安装调试
本项目为简单内容浏览和信息处理系统,具备管理员和员工权限。管理员可管理会员、员工、商品及积分记录,员工则负责积分、商品信息和兑换管理。技术框架采用Java编程语言,B/S架构,前端使用Vue+JSP+JavaScript+Css+LayUI,后端为SSM框架,数据库为MySQL。运行环境为Windows,JDK8+Tomcat8.5,非前后端分离的Maven项目。提供演示视频和详细文档,购买后支持免费远程安装调试。
630 19
下一篇
开通oss服务