Clustrix Sierra关系数据库集群
Sierra前端采用MySQL协议,但本身跟MySQL没有任何关系。系统是一层架构,每个节点既负责处理逻辑,又负责数据存储,没有做处理和存储分层。
表数据根据某些可指定的属性或属性组合Hash/Range分区划分为slice。slice有多个复本保证可靠性。没有专门的主复本机或从复本机,每个节点都可以存储任意复本。slice的数目与表大小有关,太大时分裂,也可以由用户来设slice的数量。slice可以在集群中在线移来移去,新节点上线时分配一些slice给它。每个slice有个主复本,只有主复本处理读操作并有缓存,写操作要更新所有复本。索引是一张内部的独立的表,即全局索引,根据索引键值分区。没有局部索引。全局索引的优点是方便支持唯一性和外键。
每个节点上都有分区信息,查询提交到任意一个节点,Database Personality Module负责将查询分解路由到多个节点并发执行。简单操作直接定位一个节点处理就行了,可伸缩性应该非常不错。复杂查询尽可能的将操作下推给数据所在节点,减少节点间交互。
并发控制使用MVCC,保证事务ACID。读操作不加锁,不会被阻塞。并发控制只在本地做,不需要全局锁,当然更新时要用原子提交。比较麻烦的问题是更新的性能问题。所有更新都是分布式的,至少要更新多个复本,还要更新多个(全局)索引,每个索引都有多个复本,这个问题听上去很夸张。Clustrix为了搞定这个问题,使用了优化的Paxos协议,但更重要的是节点之间要用两路20Gb的Infiniband来互联,还得用带电支持的NVRAM,这样才能保证更新的吞吐率和提交时的响应时间。
Clustrix不提供单独的软件,要用还得用它们的专有数据库服务器,网络设备也得配套。目前有4100和4110两种服务器,都是1U,4核CPU,内存为24/48G,7块80/160G SSD(存数据),1块500G SATA(估计是系统盘),两路20Gb Infiniband(节点间互联及数据迁移专用),4块千兆网卡,1G NVRAM。NVRAM不知道是带电支持的DRAM还是PCM。
看完了架构,我觉得这东西还是有一些缺点。首先从配置可以看出来这玩意挺贵的,存储全用SSD,还要NVRAM和Infiniband。其次没有多表共享的分区策略,这使得联接操作基本上都要分布式处理。第三没有局部索引,使得全局索引的更新对硬件性能的要求非常高。设计中的有些选择总觉得值得怀疑,比如既然非主复本是不可读的,为什么要用原子提交保证一致性,应该异步去更新就行了。
用了这么好的硬件,它的吞吐率估计还不错,但现实中有大量应用是因为数据量太大而需要分布式扩展,并不要求极高的吞吐率,这样用Sierra性价比就划不来。Clustrix是去年5月推出这个产品,现在应用情况好像很一般,估计也是由于这些原因。
最终小结一下:
1、兼容MySQL协议,支持关系数据库几乎没有功能,包括索引唯一性和外键。
2、share-nothing
3、动态可伸缩,高可用
4、单层架构,节点即负责处理也负责存储
5、根据指定属性或属性组合的Hash/Range分区
6、全局索引
7、更新所有复本,只读主复本
8、高端硬件,SSD、NVRAM、Infiniband
建议继续学习:
- HBase技术介绍 (阅读:6736)
- 解析Google集群资源管理系统Omega (阅读:4577)
- 快速构建实时抓取集群 (阅读:4355)
- Hadoop集群间Hadoop方案探讨 (阅读:3738)
- “集群和负载均衡”的通俗版解释 (阅读:3482)
- storm集群的监控 (阅读:3377)
- “集群和负载均衡”在实战当中的运用技巧 (阅读:3335)
- Ubuntu下PostgreSQL数据库集群(PL/Proxy)配置方法 (阅读:2943)
- 服务器集群架构的设计与选择 (阅读:2905)
- MySQL Cluster集群探索与实践 (阅读:2803)
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:风轻扬 来源: 风轻扬
- 标签: Sierra 关系数据库 集群
- 发布时间:2011-08-30 23:37:36
- [68] Go Reflect 性能
- [68] 如何拿下简短的域名
- [67] Oracle MTS模式下 进程地址与会话信
- [62] IOS安全–浅谈关于IOS加固的几种方法
- [61] 图书馆的世界纪录
- [60] 【社会化设计】自我(self)部分――欢迎区
- [58] android 开发入门
- [56] 视觉调整-设计师 vs. 逻辑
- [49] 给自己的字体课(一)——英文字体基础
- [48] 读书笔记-壹百度:百度十年千倍的29条法则