[数据库的4个特点]黄东旭:TiDB 数据库的四大应用场景分析

2019-02-13 18:23:02 其他数据库 263 views 其他数据库
[导读]:本文(《黄东旭:TiDB 数据库的四大应用场景分析》)由来自海南的客户投稿,并经由本站(数据库吧)结合主题:数据库的4个特点,收集整理了众多资料而成。主要记述了大数据,tidb,mysql,mysql集群,数据库,mysql中间件,场景应用,sql优化等方面的信息。相信从本文您一定可以获得自己所需要的!

2018 年 5 月18-19 日,由 51CTO 主办的全球软件与运维技术峰会在北京召开。此次峰会围绕人工智能、大数据、物联网、区块链等 12 大核心热点,汇聚海内外 60 位一线专家,是一场高端的技术盛宴,也是顶级 IT 技术人才学习和人脉拓展不容错过的平台。

在“大数据处理技术”分会场,PingCAP CTO 黄东旭以《How can HTAP help you:A TiDB Story》为主题展开精彩分享。TiDB是一套开源分布式HTAP(Hybrid Transactional/Analytical Processing 数据库,同时提供 MySQL 与 Spark SQL 接口。黄东旭在演讲中介绍,TiDB 作为一款 HTAP 数据库,在高性能的实现 OLTP 特性基础之上,也同时提供基于实时交易数据的实时业务分析需求,他分享了 TiDB 的设计思路、现实应用场景,以及 TiDB 集群在部署和运营方面的最佳实践。

PingCAP CTO黄东旭

PingCAP CTO黄东旭

如今硬件的性价比越来越高,网络传输速度越来越快,数据库分层的趋势逐渐显现,人们已经不再强求用一个解决方案来解决所有的存储问题,而是通过分层,让缓存与数据库负责各自擅长的业务场景。

黄东旭提到,当前数据库领域面临各种问题,如在缩放、一致性、大数据分析、与云基础架构集成等方面均存在诸多问题,现有的数据库解决方案和大数据分析引擎解决方案基本处于割裂的状态,由于 Oracle、MySQL 数据库并不是面向分布式环境而设计,因此即使勉强通过分库、分表或中间件的方式,在数据库层面做了分片,从本质上看也只是复制了相同的堆栈,而非针对分布式系统进行存储和计算优化,这正是进行跨业务查询或跨物理机查询和写入十分繁琐的本质原因。NoSQL 虽然解决了数据库弹性扩展的难题,但是却放弃了数据的强一致性以及对 ACID 事务的支持,带来了新的问题。

为了解决这一问题,TiDB 在架构上将计算和存储层进行高度的抽象和分离,对混合负载的场景通过 IO 优先级队列,智能副本调度,行列混合存储等技术使其变为可能。TiDB 作为开源的分布式关系数据库,其特点是几乎可以 100% 兼容 MySQL 接口,也兼容 MySQL 的语法和协议,在保证不丧失 ACID 事务的前提下,能够弹性伸缩,高可用,可以同时处理 OLTP 和 OLAP 工作负载,不再需要 ETL。

TiDB整体架构图

TiDB整体架构图

TiDB 产品的整体架构是高度分层的,由分布式 SQL 层(TiDB)、分布式 KV 存储引擎(TiKV)以及管理整个集群的 PD 模块组成。无限水平扩展是 TiDB 的一大特点,这里所说的水平扩展包括两方面:计算能力和存储能力。

HTAP 给开发者提供了一个实时数据分析方面的新思路,不需要再去维护另一个离线的数据仓库,既减轻了 ETL 的工作,又能节省很大一部分建立数据仓库所用到的存储和计算成本,HTAP 将是未来的重要趋势。黄东旭介绍了 TiDB 的四个主要应用场景,一是 MySQL 分片与合并;二是直接替换 MySQL;三是用做数据仓库;四是作为其他系统的一个模块。

用例 1:MySQL 分片与合并

用例 1:MySQL 分片与合并

用例 1:MySQL 分片与合并

Syncer

TiDB 应用的第一类场景是 MySQL 的分片与合并。对于已经在用 MySQL 的业务,分库、分表、分片、中间件是常用手段,随着分片的增多,跨分片查询是一大难题。TiDB 在业务层兼容 MySQL 的访问协议,PingCAP 做了一个数据同步的工具——Syncer,它可以把 TiDB 作为一个 MySQL Slave,将 TiDB 作为现有数据库的从库接在主 MySQL 库的后方,在这一层将数据打通,可以直接进行复杂的跨库、跨表、跨业务的实时 SQL 查询。黄东旭提到,“过去的数据库都是一主多从,有了 TiDB 以后,可以反过来做到多主一从。”

用例 2:直接替换 MySQL

用例 2:直接替换 MySQL

第二类场景是用 TiDB 直接去替换 MySQL。如果你的IT架构在搭建之初并未考虑分库分表的问题,全部用了 MySQL,随着业务的快速增长,海量高并发的 OLTP 场景越来越多,如何解决架构上的弊端呢?

在一个 TiDB 的数据库上,所有业务场景不需要做分库分表,所有的分布式工作都由数据库层完成。TiDB 兼容 MySQL 协议,所以可以直接替换 MySQL,而且基本做到了开箱即用,完全不用担心传统分库分表方案带来繁重的工作负担和复杂的维护成本,友好的用户界面让常规的技术人员可以高效地进行维护和管理。另外,TiDB 具有 NoSQL 类似的扩容能力,在数据量和访问流量持续增长的情况下能够通过水平扩容提高系统的业务支撑能力,并且响应延迟稳定。

黄东旭在演讲中提到了摩拜单车的案例,摩拜早期的数据库全部用 MySQL,随着业务的快速增长,MySQL 的弊端逐渐显现,摩拜单车于 2017 年初开始使用 TiDB 替换 MySQL。如今,摩拜的 IT 系统中已部署了数套 TiDB 集群,近百个节点,承载着数十 TB 的各类数据。

用例 3:数据仓库

用例 3:数据仓库

用例 3:数据仓库

TiDB 本身是一个分布式系统,第三种使用场景是将 TiDB 当作数据仓库使用。TPC-H 是数据分析领域的一个测试集,TiDB 2.0 在 OLAP 场景下的性能有了大幅提升,原来只能在数据仓库里面跑的一些复杂的 Query,在 TiDB 2.0 里面跑,时间基本都能控制在 10 秒以内。当然,因为 OLAP 的范畴非常大,TiDB 的 SQL 也有搞不定的情况,为此 PingCAP 开源了 TiSpark,TiSpark 是一个 Spark 插件,用户可以直接用 Spark SQL 实时地在 TiKV 上做大数据分析。

用例 4:作为其他系统的模块

用例 4:作为其他系统的模块

TiDB 是一个传统的存储跟计算分离的项目,其底层的 Key-Value 层,可以单独作为一个 HBase 的 Replacement 来用,它同时支持跨行事务。TiDB 对外提供两个 API 接口,一个是 ACID Transaction 的 API,用于支持跨行事务;另一个是 Raw API,它可以做单行的事务,换来的是整个性能的提升,但不提供跨行事务的 ACID 支持。用户可以根据自身的需求在两个 API 之间自行选择。例如有一些用户直接在 TiKV 之上实现了 Redis 协议,将 TiKV 替换一些大容量,对延迟要求不高的 Redis 场景。

尚待解决的问题

最后,黄东旭提到了数据库领域尚待解决的三大问题:

1、 多租户:例如,整个集群云化之后,IO 隔离还存在很大的问题,数据层如何做到更有效的资源隔离和复用是一个问题。

2、真正的自治:数据库能否拥有真正的智能,如能够自我维护,自我修复以及自我性能调优等。

3、如何利用新的硬件:如何利用 Nvme SSD、Persistent Memory、GPU、FPGA 等,软硬结合的利用新时代的硬件提升数据库的稳定性。

相关问答

问:万方,CNKI,EI,读秀 这四个数据库的优劣势

答:1、万方的特点:在中文文献全文中一个字“精”。科技文献都是精品,特别是万方的医药数据库,“中华牌”的系列,权威性很高。外文靠的是文献传递。
2、CNKI:一个字“全”,收录量与期刊数是最全的,也是目前发展最好的中文期刊全文数据库。
3、EI:著名工程技术类综合性检索工具。它收录论文的题录、摘要,并以主题词、分类号进行标引深加工。外文较多。
4、读秀:我们熟知他是因为他的中文书籍,号称最大的中文书籍数据库,后来又开发了其它的库,如期刊、文档,报纸等等。


问:在数据库技术中,DBMS应该具备的4个基本功能是?

答:1.数据定义功能 2.数据组织、存储和管理 3.数据操纵功能 4.数据库的事务管理和运行管理 5.数据库的建立与维护功能 6.其他功能


问:数据库系统的四个主要动作是什么?

答:数据库的主要作用是保存数据。
对数据库的主要操作:
查询、删除、更新、追加。


问:数据库系统的安全性四个层次分别是哪四个?

答:1:操作 系统的安全性 2:服务器的安全性 3:数据库的安全性 4:数据库对象的安全性


问:简述SQL Server2000的4个最主要的系统数据库及作用?

答:  系统数据库是由 SQL Server内部创建和提供的一组数据库。其中最主要的数据库有 4个。它们分别是Master、Msdb、Model和Tempdb。
  ① Master数据库:用于记录所有SQL Server系统级别的信息,这些信息用于控制用户数据库和数据操作。
  ②Msdb数据库:由 Enterprise Manager和Agent使用,记录着任务计划信息、事件处理信息、数据备份及恢复信息、警告及异常信息。
  ③Model数据库:SQL Server为用户数据库提供的样板,新的用户数据库都以 model数据库为基础。每次创建一个新数据库时,SQL Server先制作一个model数据库的拷贝,然后再将这个拷贝扩展成要求的规模。
  ④tempdb数据库:一个共享的工作空间,SQL Server中的所有数据库都可以使用它。它为临时表和其他临时工作提供了一个存储区。


问:SQL的四个组成部分,到底是怎么分的?

答:  SQL不是四个组成部分,而是六个组成部分,分别如下:
  一:数据查询语言(DQL:Data Query Language):
  其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING。这些DQL保留字常与其他类型的SQL语句一起使用。
  二:数据操作语言(DML:Data Manipulation Language):
  其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
  三:事务处理语言(TPL):
  它的语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION,COMMIT和ROLLBACK。
  四:数据控制语言(DCL):
  它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
  五:数据定义语言(DDL):
  其语句包括动词CREATE和DROP。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
  六:指针控制语言(CCL):
  它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。


发表评论

吐哩

SQL 包含3个部分:
“数据定义语言”(DDL : Data Definition Language)
“数据操纵语言”(DML : Data Manipulation Language)
“数据控制语言”(DCL : Data Control Language)
老兄,看点权威点的资料行不,看看课本,看看维基百科、百度百科

2019-03-10 14:12:52
鹏程万里

四个部分 还差一个数据查询语言DQL

2019-02-20 01:59:01
钱磊

更新UPDATE,删除DELETE ,插入INSERT,创建ALTER

2019-02-13 23:12:38
XBCMZ_

数据库系统的根本目的是保存数据,而对数据的操纵主要是查询、删除、更新、追加这四个动作。

2019-02-13 20:16:53

发表评论:

PHONE