C#和NewSQL更配 —— TiDB入门(可能是C#下的全网首发)
2017-08-28 13:36
218 查看
一、背景
在上一篇尝试CockroachDB(传送门在此:http://www.cnblogs.com/Zachary-Fan/p/cockroachdb_net_csharp.html)的过程中,发现如果从常规的RDBMS迁移过去几乎是不太可能的事情,所以掉头开始调研一下也是这2年比较火的一个NewSQL,而且是我们国人做的产品,火爆程度甚不亚于CockroachDB—— TiDB。
二、TiDB是什么
TiDB(https://www.pingcap.com/index-zh4000
)也是受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://blog.csdn.net/huorongbj/article/details/77647805
如果你想及时得到个人自写文章的消息推送,欢迎扫描下面的二维码~。
相关文章推荐
- C#和NewSQL更配 —— TiDB入门(可能是C#下的全网首发)
- C#和NewSQL更配 —— CockroachDB入门(可能是C#下的全网首发)
- C#和NewSQL更配 —— TiDB入门
- C#和NewSQL更配 —— CockroachDB入门
- [转]C# 3.0入门系列(二)
- 0712c#第一天C#语言基础介绍与语法入门
- 一天一小步_我学C#入门精典_第五天
- C#4.0入门 第三章 Task类与PLINQ—第一页 Task类(转)
- 快速入门系列--深入理解C#
- Selenium for C#的入门Demo
- C#通讯编程入门--串口数据接收发送实例
- C# 2010 从入门到精通 学习笔记6 第7章 创建并管理类和对象
- C# 特性(Attribute)入门(一)
- C#中的线程(一)入门
- C#委托的入门学习
- 关于C#的微信开发的入门记录二
- Skyline开发入门(C#)
- c#图形编程入门
- C#语言初级入门(4)_C#教程
- C# 反射入门知识(转)lei_captain