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

一、背景

  在上一篇尝试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:

四、实战

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

            using (var conn = new MySqlConnection(connectionString))
            {
                using (var cmd = conn.CreateCommand())
                {
                    cmd.Connection = conn;
                    cmd.CommandText = "SELECT id, balance FROM accounts";
                    cmd.CommandType = CommandType.Text;

                    using (var reader = 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(点击可查看大图)。

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

六、结语

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

作者:Zachary_Fan 出处:http://www.cnblogs.com/Zachary-Fan/p/cockroachdb_net_csharp.html

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏DeveWork

制作WordPress“带Gravatar头像评论”小工具(集成主题中、含选项)

最近在进一步折腾WordPress 主题的开发,在侧边栏小工具那里想做一个可独立于主题的、类似插件的带头像评论小工具。通过WordPress 官方文档与一些资料...

2235
来自专栏腾讯Bugly的专栏

全系统栈崩溃是什么鬼?手机管家高级工程师 jaylin,教你如何抓鬼!

Jaylin 腾讯手机管家团队,高级研发工程师,5年以上Android开发经验,擅长终端架构设计、性能和稳定性优化。 前言 Android的严重碎片化,通常会给...

3564
来自专栏V站

PHP丨如何判断访客PC及PE端?(图片API配合使用)

手机双端比如自适应网站的站长来说还是比较有用的,使用它不但单纯的可以完美解决如何用PHP判断用户通过电脑端还是手机端访问网站,还可以实现一些实际的网站问题,比如...

2304
来自专栏后端技术探索

nginx防止DDOS攻击配置(二)

我们用的高防服务器只防流量攻击不防CC,现在的攻击多数都是混合型的,而且CC攻击很多,防CC只能自己搞了,按照第一篇的配置,在实际的使用中效果并不理想。限制每秒...

5062
来自专栏NetCore

微信公众平台快速开发框架 For Core 2.0 beta –JCSoft.WX.Core 5.2.0 beta发布

写在前面 最近比较忙,都没有好好维护博客,今天拿个半成品来交代吧。 记不清上次关于微信公众号快速开发框架(简称JCWX)的更新是什么时候了,自从更新到支持.Ne...

2778
来自专栏西城知道

ss-panel-v3-mod魔改版常用审计规则分享分享

前面我们讲了《基于宝塔搭建SS-Panel教程》、《【图文】使用SS-Panel以及怎么部署SSR后端教程》、《SS-Panel魔改面板.config.php文...

1.4K1
来自专栏Golang语言社区

从零开始创建一个基于Go语言的web service

20个小时的时间能干什么?也许浑浑噩噩就过去了,也许能看一些书、做一些工作、读几篇博客、再写个一两篇博客,等等。而黑客马拉松(HackAthon),其实是一种自...

4979
来自专栏Python攻城狮

Django实战(二)- 创建一个课程选择系统1.需求2.代码操作

1713
来自专栏小白课代表

犀牛Rhino4.0安装教程

1833
来自专栏FreeBuf

适用于渗透测试不同阶段的工具收集整理

该资源清单列表涵盖了一系列,适用于渗透测试不同阶段的开源/商业工具。如果你想为此列表添加贡献,欢迎你向我发送pull request。

1K0

扫码关注云+社区

领取腾讯云代金券