TiDB官网:https:pingcap。comindex。html不同类型数据库特点:传统关系型数据库历史比较久,目前RDBMS的代表为Oracle、MySQL、PostgreSQL,在数据库领域也是辈份比较高的,其广泛应用在各行各业,RDBMS大多为本地存储或共享存储。但是此类数据库存在着一些问题,如自身容量的限制。随着业务量不断增加,容量渐渐成为瓶颈,此时DBA会通过多次的库表sharding,以此来缓解容量问题。大量的分库分表,不仅耗费了大量人力,还使得业务访问数据库的路由逻辑变得复杂。除此之外,RDBMS伸缩性比较差,通常集群扩容缩容成本较高,且不满足分布式的事务。NoSQL类数据库的代表为Hbase、Redis、MongoDB、Cassandra等,这类数据库解决了RDBMS伸缩性差的问题,集群容量扩容变得方便很多,但是由于存储方式为多个KV存储,所以对SQL的兼容性就大打折扣。对于NoSQL类数据库来说,只能满足部分分布式事务的特点。NewSQL领域的代表是Google的spanner和F1,其号称可以实现全球数据中心容灾,且完全满足分布式事务的ACID,但是只能在Google云上使用。SQL,NoSQL,NewSQL比较关系型数据库(RDBMS,即SQL数据库)商业软件:Oracle,DB2开源软件:MySQL,PostgreSQL单机版本已经很难满足海量数据的需求NoSQLNoSQLNotOnlySQL,意即不仅仅是SQL,提倡运用非关系型的数据存储普遍选择牺牲掉复杂SQL的支持及ACID事务换取弹性扩展能力通常不保证强一致性的(支持最终一致)主要分类键值(KeyValue)数据库:如MemcacheDB,Redis文档存储:如MongoDB列存储:方便存储结构化和半结构化数据,并做数据压缩,对某几列的查询有非常大的IO优势:如HBase,Cassandra图数据库:存储图关系(注意:不是图片)。如Neo4JNewSQL 针对OLTP的读写,提供与NOSQL相同的可扩展性和性能,同时能支持满足ACID特性的事务,即保持NoSQL的高可扩展和高性能,并且保持关系模型为什么需要NewSQL NoSQL不能完全取代RDBMS 单机RDBMS无法满足性能需求 使用单机RDBMS中间件方式,在中间件层很难解决分布式事务、高可用问题NewSQL设计架构可以基于全新的数据库平台,也可以基于现有的SQL引擎优化 无共享存储(MPP架构)是比较常见的架构 基于多副本实现高可用和容灾 分布式查询 数据Sharding机制 通过2PC,PaxosRaft等协议实现数据一致代表产品GoogleSpanner OceanBase TiDBOLTP和OLAPOLTP强调支持短时间内大量并发的事务操作(增删改查)能力,每个操作涉及的数据量都很小(比如几十到几百字节) 强调事务的强一致性(想想银行转账交易,容不得差错) 举例:双十一期间,可能有几十万用户在同一秒内下订单。后台数据库要能够并发的、以近乎实时的速度处理这些订单请求。 OLAP偏向于复杂的只读查询,读取海量数据进行分析计算,查询时间往往很长 举例:双十一结束,淘宝的运营人员对订单进行分析挖掘,找出一些市场规律等等。这种分析可能需要读取所有的历史订单进行计算,耗时几十秒甚至几十分钟都有可能。 TiDB简介TiDB是PingCAP公司设计的开源分布式HTAP(HybridTransactionalandAnalyticalProcessing)数据库,结合了传统的RDBMS和NoSQL的最佳特性。TiDB兼容MySQL,支持无限的水平扩展,具备强一致性和高可用性。TiDB的目标是为OLTP(OnlineTransactionalProcessing)和OLAP(OnlineAnalyticalProcessing)场景提供一站式的解决方案。 TiDB数据库具备分布式强一致性事务、在线弹性水平扩展、故障自恢复的高可用、跨数据中心多活等核心特性,是大数据时代理想的数据库集群和云数据库解决方案。 TiDB的设计目标是100的OLTP场景和80的OLAP场景,更复杂的OLAP分析可以通过TiSpark项目来完成。 TiDB对业务没有任何侵入性,能优雅的替换传统的数据库中间件、数据库分库分表等Sharding方案。同时它也让开发运维人员不用关注数据库Scale的细节问题,专注于业务开发,极大的提升研发的生产力。