中国云计算技术(二)

news2025/1/9 17:15:22

目录

    • 三、国产大数据库技术
      • (一)阿里巴巴OceanBase
      • (二)云创存储数据立方(DataCube)


三、国产大数据库技术

(一)阿里巴巴OceanBase

  OceanBase主要是为了解决淘宝网的大规模数据而产生的,是一个支持海量数据的高性能分布式数据库系统,达到管理数千亿条记录的规模,支持在数百TB数据上跨行跨表事务并支持SQL操作。

在这里插入图片描述
1. 系统架构

在这里插入图片描述
  (1)客户端。基于MySQL数据库开发的应用程序、工具能够直接迁移到OceanBase。
  (2)RootServer。配置服务器,一般是单台服务器。记录commit log并通常采用双机热备。
  (3)UpdateServer。存储OceanBase系统的增量更新数据。
  (4)ChunkServer。保存基准数据的服务器,通常是多台,同一份基准数据通常保存3份并存储在不同的ChunkServer上。
  (5)MergeServer。接收并解析用户的SQL请求经过词法分析、语法分析、查询优化等一系列操作后转发给相应的ChunkServer或者UpdateServer。

2. 数据查询流程

在这里插入图片描述
  如图所示,用户可以通过兼容MySQL协议的客户端,JDBC/ODBC等方式将SQL请求发送给某台MergeServer,MergeServer的MySQL协议模块将解析出其中的SQL语句,并交给MS-SQL模块进行词法分析(采用GNU Flex实现)、语法分析(采用GNU Bison实现)、预处理,并生成逻辑执行计划和物理执行计划。
  如果是只读事务,MergeServer需要首先定位请求的数据所在的ChunkServer,接着往相应的ChunkServer发送SQL子请求,每个ChunkServer将调用CS-SQL模块计算SQL子请求的结果,并将计算结果返回给MergeServer。最后,MergeServer需要整合这些子请求的返回结果,执行结果合并、联表、子查询等操作,得到最终结果并返回给客户端。
  如果是读/写事务,MergeServer需要首先从ChunkServer中读取需要的基线数据, 接着将物理执行计划以及基线数据一起发送给UpdateServer,UpdateServer将调用PS-SQL模块完成最终的写事务。
  CS-SQL:实现针对单个table的SQL查询,包括表格扫描(table scan)、投影(projection)、过滤(filter)、排序(order by)、分组(group by)、分页(limit),支持表达式计算、聚集函数(count/sum/max/min等)。执行表格扫描时,需要从UPS读取修改增量,与本地的基准数据合并。
  UPS-SQL:实现写事务,支持的功能包括多版本并发控制、操作日志多线程并发回放等。
  MS-SQL:SQL语句解析,包括词法分析、语法分析、预处理、生成执行计划,按照tablet范围合并多个ChunkServer返回的部分结果,实现针对多个表格的物理操作符,包括联表(Join)、子查询(Subquery)等。

3. 系统特点及优势

特点

  • 主体数据在一段时间内保持相对稳定
  • 以内存保存增删改记录极大地提高了系统写事务的性能
  • 扩充UpdateServer内存即增加了内存中容纳的修改量
  • 动态数据服务器UpdateServer写commit log并采取双机(甚至多机)热备
  • OceanBase按主键的范围查询对应着连续的磁盘读

优势

  • UpdateServer。类似于DBMS中的DB角色,提供跨行跨表事务和很短的查询修改的响应时间以及良好的一致性。
  • ChunkServer。具有数据多副本、中等规模数据粒度、自动负载平衡、宕机恢复、机器plug and play等特点,系统容量及性能随时扩展。
  • MergeServer。结合ChunkServer和UpdateServer,获得最新数据,实现数据一致性。
  • RootServer。类似于云计算中的主控机(如GFS master),进行机器故障检测、负载平衡计算、负载迁移调度等。

4. 可靠性与可用性

  • OceanBase在ChunkServer中保存了基准数据的多个副本。
  • OceanBase在UpdateServer中保存了增量数据的多个副本。
  • ChunkServer的多个副本可以同时提供服务。
  • UpdateServer主备之间为热备,同一时刻只有一台机器为主UpdateServer提供写服务。
  • OceanBase存储多个副本并没有带来太多的成本。
  • 在OceanBase系统中,用户的读/写请求,即读/写事务,都发给MergeServer。

  在OceanBase系统中,用户的读/写请求,即读/写事务,都发给MergeServer。MergeServer解析这些读/写事务的内容,例如词法和语法分析、schema检查等。对于只读事务,由MergeServer发给相应的ChunkServer分别执行后再合并每个ChunkServer的执行结果;对于读/写事务,由MergeServer进行预处理后,发送给UpdateServer执行。只读事务执行流程如下。
  (1)MergeServer解析SQL语句,词法分析、语法分析、预处理,最后生成逻辑执行计划和物理执行计划。
  (2)MergeServer将请求拆分后同时发给多台ChunkServer并发执行,每台ChunkServer将读取的部分结果返回MergeServer。
  (3)如果SQL请求涉及多张表格,MergeServer还需要执行联表、嵌套查询等操作。
  (4)MergeServer将最终结果返回给客户端。

(二)云创存储数据立方(DataCube)

  针对目前各类大数据库无法实时处理极其海量数据(万亿条记录以上规模)的不足,云创大数据推出了全新的云计算数据库——数据立方。该系统采用分布式块存储、 动态B+树森林、并行执行架构以及读取本地磁盘的执行方式,使入库和处理达到了实时完成、简单易用、高度可靠的效能,使EB级的数据能够秒级处理,极大地提高了海量数据的处理效能,还可支持数据仓库存储、数据深度挖掘和商业智能分析等业务。目前平台已经在中国移动、国家地震局等得到非常成功的应用。在中国移动某省公司已经稳定生产运行3年,单库由40多个机架构成,且仍在不断扩展中,处理了高达1亿个同时在线终端形成的实时数据流15000Mbps,每天新增100亿条记录。

1. 数据立方体系架构

  数据立方(DataCube)的结构分为用户接口、索引、SQL解析器、作业生成器、元数据管理、并行计算架构、分布式文件系统等部分,如图所示。

在这里插入图片描述
  用户接口主要有两个:JDBC和Shell。JDBC主要执行数据的定义操作,即建立数据库、建表、建分区,对数据库、表和分区的删改等,同时可执行数据查询的SQL语句,暂不支持单条记录的增删改。数据立方提供友好的Shell交互界面,Shell支持数据库、表的增删改以及数据查询的SQL语句。
  数据在入库的同时与数据对应的索引也在同时建立,索引由若干颗B+树构成的B+树森林,数据插入内存的同时,索引B+树森林也在生成和融和,当达到内存数据块上限时,数据和索引会刷新到分布式文件系统上成为文件。数据立方的元数据存储在数据库中。其中包括数据库的名字和属性、数据库中的表、表的名字、表的列和分区及其属性、表的属性、表的数据所在目录等。
  SQL解析器接收从JDBC和SHELL传来的SQL查询语句,同时对SQL进行词法分析、语法分析、编译、优化。作业生成器根据SQL语法树生成查询作业,分析所要处理的数据表对应的索引文件所在的存储子节点位置,并将作业发送给并行计算架构。并行计算架构接收到作业生成器生成的作业,根据索引文件的位置切分查询作业形成子任务,然后将子任务发送给数据所在的存储子节点,每个节点执行这些子任务查询索引得到结果记录所在的数据文件名与偏移量,并以广播的方式发送查询子任务到数据文件所在的节点,在执行完毕后将结果返回。
  数据立方可以使用HDFS和cStor作为底层存储系统,cStor是一个主从结构的分布式文件系统,不仅具有HDFS的高吞吐率、高读/写性能等特性,还支持HDFS所不具备的对文件修改等功能,并且支持POXIS接口。

2. 分布式并行计算架构(DPCA)

  数据立方的分布式并行架构(DPCA)是典型的主从结构,主Master与从Master分别部署在HDFS的主从NameNode物理节点上,而Slave部署在DataNode物理节点上,主从Master使用Zookeeper同步,并共享系统日志,Master与Slave之间用心跳信息保持信息交换。如图所示。

在这里插入图片描述
  相对于MapReduce架构,DPCA具有实时性、计算的数据本地性以及数据平衡性。MapReduce架构的Job提交过程较为复杂,客户端将Job提交到JobTracker有较长的延迟,JobTracker将Job处理为MapReduce Task后,通过TaskTracker的心跳信息将Task任务返回给TaskTracker,此过程中也存在延迟。MapReduce架构虽然也遵循数据本地性,但仍会有很大比例的数据处理不是本地的。相对于MapReduce架构,DPCA的Job提交是实时性的,在提交Job之前所需程序Jar包已经分发到所有计算节点,在Job提交之后,Master在初始化处理之后即将Task直接分发到所有slave节点上,如图所示。在Job提交后,Master根据数据文件所在位置分配Task,这样在每个计算节点上要处理的HDFS上的数据块就在本地,这样避免了数据的移动,极大地减少了网络I/O负载,缩短了计算时间。每个计算节点会根据Task中SQL解析器生成的执行计划对Task执行的结果进行分发。分发的方式有3种:分发所有中间数据到所有计算节点,分发所有中间数据到部分节点,根据数据所在位置分发,如图所示。并行计算架构能够周期性地对HDFS上的数据表进行维护,保持数据表在所有的DataNode节点上所存储的数据量的平衡,减少因数据负载的不平衡而导致的计算负载的不平衡。
  举一个典型的小表与大表Join连接的实例,如图所示,Master解析Job中的执行计划,判断小表的位置后,将Task0发送给Slave0,指令Slave0发送小表到所有节点,而其他节点占接收到的子任务是等待接受小表的数据,接收到数据后将小表与大表连接并将数据返回给Master,当所有数据返回完成则这个Job完成。

在这里插入图片描述
3. 分布式索引

  MapReduce对每个查询都是直接从分布式文件系统中读入原始数据文件,I/O代价远高于数据库,相对于MapReduce架构以及在其之上的SQL解析器Hive,数据立方引入了一种高效的分布式索引机制,不同于并行数据库的Shared-nothing和Shared-disk架构,数据立方的数据文件与索引文件都存放在分布式文件系统之上。

在这里插入图片描述
在这里插入图片描述
  数据在入库的同时B+树索引在内存中同步生成,B+树中的叶子节点存储的是数据文件路径与记录在文件中的偏移量。在B+树中的叶子节点达到设置上限后,索引将被序列化到分布式文件系统之上,在根据条件进行单表查询的时,Job被提交到并行计算框架。Master节点首先分析该表的索引文件根据索引文件,所在的节点将Task发送到相应的节点,每个节点在查询本地的索引文件之后将符合条件的数据文件路径+偏移量打包成Task,根据数据文件位置进行再次分发,在数据文件中的记录查询出来之后将结果返回,如图所示。

在这里插入图片描述
4. 数据立方大数据一体机

  处理海量数据的高效分布式软/硬件集合的云处理平台。该平台可以从TB乃至PB级的数据中挖掘出有用的信息,并对这些海量信息进行快捷、高效的处理。平台支持100Gbps以上量级的数据流实时索引,秒级响应客户请求,秒级完成数据处理、查询和分析工作。平台可以对入口数据进行实时索引,对数据进行分析、清理、分割,并将其存储在云存储系统上,不仅在入库和检索时具有非常高的性能优势,还可以支持数据深度挖掘和商业智能分析等业务。如图所示。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1987696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

临床数据科学中如何用R来进行缺失值的处理(上)

在临床科研中,由于失访、无应答或记录不清等各种原因,经常会遇到数据缺失的问题。本文将深入探讨医学科研中数据缺失的成因、分类、影响以及应对方法,结合R语言的实际应用,为医学研究人员提供全面的解决方案。 一、认识缺失数据 …

Python酷库之旅-第三方库Pandas(070)

目录 一、用法精讲 281、pandas.Series.dt.daysinmonth属性 281-1、语法 281-2、参数 281-3、功能 281-4、返回值 281-5、说明 281-6、用法 281-6-1、数据准备 281-6-2、代码示例 281-6-3、结果输出 282、pandas.Series.dt.tz属性 282-1、语法 282-2、参数 282-…

AndroidStudio 两种Debug模式

第一种:直接运行Debug 第二种:运行 attach debugger to android process 优缺点: 第一种是需要把整个工程运行起来,耗时, 第二种是触发式调试,在出错的情况下,经过判断在出错的地方,…

Leetcode75-6 反转字符串中的单词

思路 1. 先把全部字符串反转 然后按空格分割字符串 最后输出即可 有一个问题就是 多个空格的情况 需要用正则表达式 参考文章【JAVA学习之字符串分割空格】_如何将字符串用不确定的空格分开-CSDN博客 分割多个空格时可以需要用到正则表达式。。 正则表达式\s表示匹配任何空白字…

乡村振兴旅游综合体建设方案

1. 乡村振兴旅游综合体概述 乡村振兴旅游综合体建设方案旨在通过现代信息技术的应用,如云计算、物联网、大数据等,实现旅游行业的智慧化升级。该方案涵盖了游客、旅游管理部门、商家等不同角色的需求,以期提升旅游体验,推动乡村振…

OpenCV专栏介绍

在当今人工智能和计算机视觉领域,OpenCV作为一个功能强大的开源库,已经成为实现各种视觉算法的基石。本“OpenCV”专栏致力于帮助读者深入理解并掌握OpenCV的使用,从而在计算机视觉项目中发挥关键作用。 专栏导读 随着技术的不断进步&#…

免费代理池是什么,如何使用代理IP进行网络爬虫?

互联网是一个庞大的数据集合体,网络信息资源丰富且繁杂,想要从中找到自己需要的信息要花费较多的时间。为了解决这个问题,网络爬虫技术应运而生,它的主要作用就是在海量的互联网信息中进行爬取,抓取有效信息并存储。然…

【原型模式】设计模式系列:高效克隆的艺术(深入解析)

文章目录 Java设计模式之原型模式详解1. 引言2. 原型模式概述2.1 定义与基本原理2.2 原型模式与其他模式的关系2.3 使用场景分析 3. Java中的Cloneable接口3.1 Cloneable接口简介3.2 Object类中的clone方法3.3 实现Cloneable接口的步骤3.4 克隆方法的重写示例 4. 深克隆与浅克隆…

Django-Oscar开发独立站/外贸商城教程与问题记录

​特别说明: 本博客为个人开发Django-Oscar时的经验总结,方便后期维护!(第一次这么认真的记录这种大型项目,打个广告吧:本人可接单算法程序开发,包含深度学习和图像相关……等相关)…

秒懂C++之stack、queue、堆

目录 前言 一.stack常用接口 二.stack模拟实现 三.例题 3.1 最小栈 题目解析: 算法解析: 代码: 3.2 栈的压入、弹出序列 题目解析: 算法解析: 代码: 3.3 逆波兰表达式求值 题目解析: 算法解析…

【Web】从TFCCTF-FUNNY浅析PHPCGI命令行注入漏洞利用

目录 背景 CVE-2012-1823 发散利用 法一:读文件 法二:数据外带 背景 CVE-2012-1823 PHP-CGI远程代码执行漏洞(CVE-2012-1823)分析 | 离别歌 省流: 命令行参数不光可以通过#!/usr/local/bin/php-cgi -d include…

目标检测 | yolov4 原理和介绍

1. 简介 YOLOv4是一种高效且准确的目标检测模型,它在YOLOv3的基础上引入了多项改进,这些改进主要集中在网络结构的优化和训练技巧的更新上。以下是YOLOv4中的一些关键技术或模块,它们对提高目标检测性能起到了重要作用: CSPDarkne…

MATLAB基础应用精讲-【数模应用】配对样本Wilcoxon检验(附MATLAB、R语言和python代码实现)

目录 知识储备 常用的统计假设检验的方法 算法原理 什么是Wilcoxon符号秩检验? 何时使用Wilcoxon符号秩检验 适用条件 SPSS-符号秩检验 一统计理论 二实例分析 三拓展知识 SAS --配对样本Wilcoxon符号秩检验 SPSSAU 配对样本Wilcoxon检验案例 1、背景 2、理论 …

【C++指南】函数重载:多态性的基石

💓 博客主页:倔强的石头的CSDN主页 📝Gitee主页:倔强的石头的gitee主页 ⏩ 文章专栏:《C指南》 期待您的关注 目录 引言 一、函数重载的概念 二、函数重载的原理 三、函数重载的应用场景 四、函数重载的规则 五…

springboot整合libreoffice(两种方式,使用本地和远程的libreoffice);docker中同时部署应用和libreoffice

一、 背景 因为项目中需要使用word转pdf功能,因为转换速度原因,最后选用了libreoffice,原因及部署请参考 linux ubuntu环境安装libreoffice,word转pdf 远程调用的话可选docker部署,请看2.3.1 二、springboot整合libr…

AT指令处理框架

<AT框架>做什么 <AT框架>介绍 ATFrame 流程 开启AT流程: ATCommandRegister(CSQ,EXEXCMD,NULL); 发送消息队列xQueueSend(ATcmdQueue,(void *) &RegcommandInfo,(TickType_t)100) AT主流程 ATCommandSendScheduler 等待开启xQueueReceive(ATcmdQueue, (voi…

详细分析python下载文件的两种方式(附Demo)

目录 前言1. 接口方式2. Nginx 前言 基本项目的构建推荐阅读&#xff1a;构建Flask前后端不分离项目&#xff08;附Python Demo&#xff09; 对于Java的基本知识&#xff0c;推荐阅读&#xff1a; java框架 零基础从入门到精通的学习路线 附开源项目面经等&#xff08;超全&…

Unknown input format pdf Pandoc can convert to PDF, but not from PDF.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

【Lua运行环境安装及配置】

首先在百度搜索“Lua菜鸟教程” 网址&#xff1a;Lua 教程 | 菜鸟教程 (runoob.com) 找到环境安装 点击Github下载地址&#xff0c;GitHub可以在正规上网下进入网址&#xff08;页面更新不出来多试几次&#xff09; 点击.exe安装 下载完成后进行安装 可自定义磁盘 项目文件很…

线程局部变量(ThreadLocal)

线程局部变量&#xff08;ThreadLocal&#xff09; 1、什么是ThreadLocal&#xff1f;2、基本用法3、注意事项 &#x1f496;The Begin&#x1f496;点点关注&#xff0c;收藏不迷路&#x1f496; 1、什么是ThreadLocal&#xff1f; ThreadLocal 是 Java 中用于实现线程局部变…