C#和NewSQL更配 —— TiDB入门(可能是C#下的全网首发)

如果这是第二次看到我的文章,欢迎订阅z哥的公众号(跨界架构师)哦~

每周五11:45 按时送达。当然了,也会时不时加个餐~

一、背景

在上一篇尝试CockroachDB(传送门在此:http://www.cnblogs.com/Zachary-Fan/p/cockroachdb_net_csharp.html)的过程中,发现如果从常规的RDBMS迁移过去几乎是不太可能的事情,所以掉头开始调研一下也是这2年比较火的一个NewSQL,而且是我们国人做的产品,火爆程度甚不亚于CockroachDB —— TiDB。

二、TiDB是什么

TiDB(https://www.pingcap.com/index-zh)也是受Google Spanner / F1 论文的启发, 实现了自动的水平伸缩,强一致性的分布式事务,基于 Raft 算法的多副本复制等重要 NewSQL 特性。 从对外提供的功能上它与CockroachDB是类似的,其中最大的区别在它完全兼容MySQL协议,支持包括跨行事务,JOIN 及子查询在内的绝大多数 MySQL 的语法(看着就用起来很爽的样子)。

三、环境部署

官方文档(https://www.pingcap.com/docs-cn)写的非常详细,按照做就好了。笔者在CentOS上直接使用Binary的方式进行的部署。然后使用任意一个可以连接Mysql的客户端连上去即可。默认端口是4000,有一个内置的“test”数据库。使用root账户,默认无需密码即可连上。笔者使用DBeaver进行连接,如下图1:

C#和NewSQL更配 —— TiDB入门(可能是C#下的全网首发)_第1张图片

四、实战

和上一篇一样,我们现在在直接在test数据库下创建好待测试的表,然后在Nuget上引用Oracle发布的MySql官方DLL,直接就可以测试了,和MySql用法一模一样,代码如下:

using(varconn =newMySqlConnection(connectionString))

{

    using(varcmd =conn.CreateCommand())

    {

        cmd.Connection=conn;

        cmd.CommandText="SELECT id, balance FROM accounts";

        cmd.CommandType=CommandType.Text;

        using(varreader =cmd.ExecuteReader())

        {

            while(reader.Read())

            {

                   Console.WriteLine(@"reader[id] is {0}", reader["id"]);

                   Console.WriteLine(@"reader[balance] is {0}", reader["balance"]);

            }

         }

     }

}

五、性能测试

好了测试环境和上篇一样,客户端机器是 4核 i5-4300U,数据库所在的机器是 8核 Xeon(R) E5630。结果里包含了上篇的测试结果以作参考。其中增加了对Join的测试,结果见下图1(点击可查看大图)。

C#和NewSQL更配 —— TiDB入门(可能是C#下的全网首发)_第2张图片

特别注意的是,分布式数据库对资源的消耗是单体数据库的好几个量级,其中CockroachDB和TiDB跑不上去都是因为CPU跑满了。但是值得注意的是,其中TiDB的综合结果比Cockroach更好(除了在长连接+少数据量的情况下)。由于硬件资源不够本次未做分布式模式下的性能,这个我会在接下去进一步进行测试,主要是为了验证在CPU未达到瓶颈的情况下,与传统单体关系型数据库的性能差异,敬请期待~

六、结语

算是将对标Google Spanner / F1 的2个数据都体验了一把,欣喜的是,我们国人做的TiDB目前的功能和质量上都胜过CockroachDB一筹,还是很值得期待的。另外今年6月刚获得B轮融资,希望越做越好吧~


▶作者:Zachary(个人微信号:Zachary-ZF)

微信公众号(首发):跨界架构师<-- 点击查阅近期热门文章

如果你是初级程序员,想提升但不知道如何下手。又或者做程序员多年,陷入了一些瓶颈想拓宽一下视野。欢迎关注我的公众号「跨界架构师」,回复「技术」,送你一份我长期收集和整理的思维导图。

如果你是运营,面对不断变化的市场束手无策。又或者想了解主流的运营策略,以丰富自己的“仓库”。欢迎关注我的公众号「跨界架构师」,回复「运营」,送你一份我长期收集和整理的思维导图。

定期发表原创内容:架构设计丨分布式系统丨产品丨运营丨一些深度思考

扫码加入小圈子

C#和NewSQL更配 —— TiDB入门(可能是C#下的全网首发)_第3张图片

你可能感兴趣的:(C#和NewSQL更配 —— TiDB入门(可能是C#下的全网首发))