从高斯看数据技术的沧海桑田发展变化【这次高斯不是数学家】
【摘要】 选择一款数据库产品考虑技术因素和非技术因素,技术因素例如产品架构和复杂性、容量和速度限制、事务处理、软件支持工具的可用性、性能评测、包括实时统计信息、可扩展性、软件、内存和存储需求、弹性,包括错误处理和错误报告。非技术因素包括组织对组织对技术风险的偏好、提供训练有素的技术专业人员、拥有成本、如软件许可费、维护费和计算资源成、供应商声誉、供应商支持策略和版本计划、相关客户案例 ,可以参考考虑高斯。
单机
业务应用的世界,最初它的基本需求,它只需要一个装置容器,里面存放业务相关的数据,当应用系统递增变化时,装置容器可以存储新的业务实体,当人们浏览查询应用系统的时候 ,装置容器快速进行筛选过滤,返加给相应的数据。装置容器有两个法宝,一个叫做索引,一个叫做分区, 通过索引和分区我们对具体数据落地标识,例如通过B树索引对插入数据进行有序分布,那么查询时可以二分查找节省大量的开销。分区和索引的区别, 分区相对索引数据粒度组织更粗,范围更广,如果数据量大而且具体数据具备离散数据的特征,例如时间、范围等等,可以采取分区组织数据。
举一个索引与分区的例子,1个月30天,每天都有数据,1个月1共10000条数据,按天数的字段给表建索引,那么是10000条索引,索引按从设定的结构算法有序排放。假设是把每天按分区摆放,每天的数据将会摆放在装置容器不同的物理位置上面。索引对具体数据组织是1对1的关系,而分区则是1对多的关系,一般情况我们会把分区和索引配合使用,先圈定大范围 ,再选择小范围,为了减少硬盘IO。
硬盘IO专指硬盘的写入和读出,它决定了装置容器的性能,常见的机械硬盘里面有盘片和磁头,读写数据时,盘片高速旋转,设置在盘片表面的磁头则在电路控制下径向移动到指定位置然后将数据存储或读取出来。装置容器争取顺序访问或随机的方式都能取到精确的尽量多的数据,但是它有一个极限,因为盘片转速不能无限快。装置容器的极限不可能大于硬盘的性能极限,何况装置容器还要实现ACID,这意味着装置容器要牺牲部分性能去满足ACID。
具备ACID的事务管理系统让服务器宕机或者程序意外中断甚至各种自然不可抗拒力发生的情况后,你们的资金业务系统依然反映着现实社会世界,满足交易、转帐、 支付、计费、清算、核算的社会业务场景。为了做到这一点,装置容器首先写数据到 redo日志,在数据写入过程中它会持续写数据到undo日志里面,这样意外发生或者程序中断,它都能找到数据的原点。
华为认为装置容器其中重要的一个目标是为事务服务的,牺性了一部分性能也值得,衡量一个单机装置容器是否及格,关键是看它能不能满足100%的事务,能不能做到安全可靠,只要满足当前的业务需求就行。如果你的业务刚上线起步,可以使用OpenGauss做基础。
分布式
当一个装置容器处理的事务越来越多,我们查看确认来自事务器的硬盘IO使用达到100%,我们很欣慰,业务发展不错,一般的电子商务平台没有几个能有这么大的交易量。 技术上对装置容器的处理,一种是数据分片,通过把数据打散在相同的装置容器,可以得到更大的IO处理能力,一种是数据中间件,把数据有目标存放在若干个独立自治的装置容器上面,同样可以获得更大的IO处理能力。
数据分片的技术,从用户角度来看,感知不到其中差异化,用户像平时操作一个装置容器一样操作一个装置容器集群,分散不同物理位置的装置容器集群仿佛是一个巨大的逻辑装置容器,带来技术高复杂化,它需要把装置容器的独立性磨平,基于所有分片上层做数据控制管理分发,考虑数据同步、分片数据迁移、分片分裂、分片合并等复杂情况,并且增加运维工作的复杂性。相对新进的分片技术,传统中间件处理较为保守,保留每个装置容置容器的基础上,通过中间件的介入,除了能够提高IO性能, 还能够实现简单的事务处理。但是中间件对业务逻辑侵入强,需要应用方面做较多点适配,而分片侵入较少, 在业务方面几乎不更改。
分片也好,中间件也好,只要适合业务就好,华为认为装置容器最终是为业务需求服务,华为提供开源的免费的 shardingsphere +OpenGauss 解决方案和商用的GaussDB(for MySQL)解决方案。shardingsphere +OpenGauss实现数据库中间件,当一个装置容器无法满足业务需求,可以通过中间件添加多个装置容器提高性能。GaussDBfor MySQL 对标OceanBase和TiDB,支持分片布署模式,可以实现海量交易数据场景。
OLTP产品栈
除了GaussDB for MySQL和GaussDB openGauss ,还有GaussDB for PostgreSQL,它与GaussDB for MySQL一样,都是基于华为最新一代DFV分布式存储,采用计算存储分离架构,既然有了GaussDB for MySQL,还需要GaussDB for PostgreSQL。两者虽然属于SQL派系,但是两者的语法使用毕竟有区分,天下已经派生了有 PostgreSQL方向的工程师群体。
华为对装置容器的理解,它可以容纳主流的客户群体,所以把PostgreSQL接纳进来。而且华为已经提升了装置容器的基础能力,所有的装置容器结构抽象分解成为三层接入层、计算层、存储层,通过云方式可以敏捷灵活快速进行组合,提高计算能力和存储能力。云计算定位的是服务模式,华为的装置容器会尽量兼容 市场上常用的产品。
多模化
SQL是众所周知的语言,却并非是所有业务场景的最佳选择,原因在于SQL建立在集合操作和关系代数的基础上。每一次使用都要转换成底层数据结构操作,耗费都是昂贵的。NOSQL发起运动,世界上并非只有SQL,还有其它语言,例如DSL【domain special language】,通过专属特有的语言直接操作内部数据结构,从而数据读写更快。文档类型(MongoDB)、宽表类型(Cassandra)、时序(InfluxDB),K-V(Redis)培养了大量的工程师工程习惯和工作思维。
华为定义云上的装置容器,它是可以支持照顾所有不同类型的工程师习惯和开发人员思维,不但可以开箱即用,而且还用的好。GaussDB(for Mongo) 、GaussDB(for Cassandra) 、GaussDB(for InfluxDB)、GaussDB(for Redis)应运而生,以后人们可以MongoDB的操作方式、Cassandra的操作方式享受GaussDB的内核性能,这就是云数据库的魅力。
智能化
华为的对装置容器的定义理解不仅仅只是数据存储以及数据高效读写性能,毕竟装置容器是一个软件,它可以更聪明更智能,GaussDB是全球首款AI-Native数据库。GaussDB在装置容器两大革命性突破:首次将人工智能技术融入分布式数据库的全生命周期,实现自运维、自管理、自调优、故障自诊断和自愈。在交易、分析和混合负载场景下,基于最优化理论,首创基于深度强化学习的自调优算法,调优性能比业界提升60%以上。通过异构计算创新框架充分发挥X86、ARM、GPU、NPU多种算力优势,在权威标准测试集TPC-DS上,性能比业界提升50%,排名第一。
GaussDB在人工智能领域的探索可以分为两个主要方向:AI4DB与DB4AI。
1)AI4DB就是指用AI使能数据库,从而获得数据库更好的执行表现、实现数据库系统的自治、免运维等。主要包括自调优、自诊断、自安全、自运维、自愈等子领域。
2) DB4AI就是指打通数据库到人工智能应用的端到端流程,统一人工智能技术栈,达到AI应用的开箱即用、高性能、低成本等目的。例如通过类SQL语句使用推荐系统、图像检索、时序预测等功能,充分发挥openGauss高并行、列存储等优势,提高机器学习任务的执行效率。同时,在数据侧实现AI计算,还可以降低数据的网络传输成本,实现本地化计算、节省人力、降低成本。
数据分析
既然连装置容器的智能化想到了,那么华为的装置容器在分析领域方面做了什么?装置容器首先满足了资金交易应用的需求,产生了真实有效的交易数据、订单数据的内部数据。如果要进行数字化转型,单一的数据是远远不够的,要发挥数据的价值,必须要连接更多的数据源,内部数据融合外部数据,内外打通。
华为的装置容器分析引擎即数据仓库服务GaussDB(DWS),它 是一种基于华为云基础架构和平台的在线数据处理数据库,提供即开即用、可扩展且完全托管的分析型数据库服务。GaussDB(DWS)是基于华为融合数据仓库GaussDB产品的云原生服务 ,兼容标准ANSI SQL 99和SQL 2003,同时兼容PostgreSQL/Oracle数据库生态,为各行业PB级海量大数据分析提供有竞争力的解决方案。
GaussDB(FOR DWS)主要基于Postgres,实现Shared-nothing分布式架构,具备MPP (Massively Parallel Processing)大规模并行处理引擎,由众多拥有独立且互不共享的CPU、内存、存储等系统资源的逻辑节点组成,支持索引,支持存储过程,甚至支持完整事务的数据仓库。由于它综合完备的功能性,前端可以和GaussDB多种产品对接打通,DWS未来竞比的目标对象是SNOWFLAKE。
GaussDB(FOR DWS) 推出三种产品解决方案,满足客户的需求。
云数仓:高性价比,支持冷热数据分析,存储、计算弹性伸缩,无限算力、无限容量,并按需、按量计价。适用于“库、仓、市、湖”一体化的融合分析业务,是OLAP分析场景的首选。
IoT数仓:在云数仓基础上,提供高效的时序计算和IoT分析能力,支持实时和历史数据关联,内置时序算子,最高40x压缩。适用于物联网、IoT等实时分析场景。
实时数仓:在大规模数据查询和分析能力基础上,提供高并发、高性能、低时延、低成本的事务处理能力。适用于HTAP混合负载场景,“一库两用,生产即分析”,支持单机部署和集群部署两种部署方式。
GaussDB(DWS) 目前广泛应用于金融、车联网、政企、电商、能源、电信等多个领域,已连续两年入选Gartner发布的数据管理解决方案魔力象限,相比传统数据仓库,性价比提升数倍,具备大规模扩展能力和企业级可靠性。
华为认为装置容器的数据分析业务场景,最好的选择是跑在云计算上面。因此DWS与MPP数据库【Greeplum、Presto、HAWQ、Impala、Vertica、Startrocks】最大的不同之处,背靠云计算资源有着无穷无尽的存储能力和计算能力,DWS是云数仓,对标的是SNOWFLAKE, 而且云计算的特性按需分配、高可靠性、可动态伸缩、广泛网络访问非常答合用户的需求。
新兴技术
对单机装置容器来说,分布式技术并非是唯一发展出路,一般装置容器由机械硬盘、缓存、内存等组件构成,CPU和内存背后的集成电子技术每年都在进步提升中,唯独机械硬盘停滞不前,硬盘远远跟 不上CPU和内存的处理速度。 新的存储介质可以提供快速的顺序读写和随机读写性能,例如闪存(ssd)以及NVRAM(Non-volatile Random Access Memory),如果有一天闪存和NVRAM经济廉价,大规模投入使用 可以从根本上取代当前的单机装置容器依融机械硬盘的状态,即使是单机装置容器,也能跑出好成绩。
华为看来,装置容器的处理性能与CPU、内存、硬盘息息相关,性能优化的极致就是各个资源占用恰好都接近临界点,华为自研的鲲鹏处理器,针对CPU NUMA做了优化,从并发控制算法,内核数据结构,数据访问等全方位进行了优化,释放处理器多核算力,实现openGauss两路鲲鹏128核场景150万tpmC性能,CPU运行效率接近95%。openGauss充分发挥了CPU的多核算力,这是一般分布式集群也能企及的高度。
高斯的未来可能性
把高斯看成一个装置容器,只要满足业务需求就好,华为对装置容器的理解和业务的认识提供多种丰富的产品线,始终一心为客户服务,应用数据需求不大可以使用开源方案OpenGauss,如果数据访问量水涨船高可以选择shardingshere分流引流,更大的数据量、更高的并发可以采取GaussDB(for MySQL) 或者 GaussDB(for PostgreSQL),根据业务场景可以选 择NOSQL解决方案,当数据积累达到一定程度,GaussDB(for DWS) 多种形态可以处理所有的数据分析业务。
高斯的未来可能性,以后不止是一个装置容器,不仅仅你眼前看到的产品栈,以后变化会更多,高斯的专利和论文比TiDB和OceanBase加起来还要多,它有无穷的可能性,未来的高斯不可估量。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)