那种高速交易是怎么做到的?
发信人: jesuszhu (jesuszhu), 信区: Python
标 题: Re: 那种高速交易是怎么做到的?
发信站: 水木社区 (Thu Aug 25 11:44:26 2011), 转信
你是说Oceanbase吗? 它其实是分布的, 但设计非常特殊. 你说的这个单机是它的
updateserver, 这机器是个纯内存的数据库, 当然非常快, 确实机器也非常好. 然后它的
数据会慢慢扩散到下边的chunkserver上做持久化. 查询时updateserver内存中的最新数据
需要和chunkserver中之前持久化的数据做一次merge后返回给用户. 这个项目很快就开源
了, 欢迎大家有兴趣去研究....
【 在 josephpei (Nikon,感动常在) 的大作中提到: 】
: 硬件
: 阿里巴巴 的自己搞的一个数据库据说还不是分布式的,是单机的,人家有钱搞超级牛的
服务器
发信人: xm1y (xmly), 信区: Python
标 题: Re: 那种高速交易是怎么做到的?
发信站: 水木社区 (Thu Aug 25 11:56:10 2011), 转信
VoltDB 是full memory database
磁盘IO都是被优化过的 而且低成本
他们主要面向客户就是 金融客户
MySql Cluster 更是号称
MySQL Cluster 7.1 Delivers 6.82m Operations Per Second across 16
Intel Servers
6.82m Reads per Second.
2.5m Updates per Second across 8 Intel Servers.
当然这都是低成本的实现方式
金融机构有的是钱 那就 大型机+ Oracle RCA 解决问题了
基本上也到了这个速度
前端在放一组 app cluster 接受order
http://rdc.taobao.com/blog/cs/?p=956
发信人: kabbesy (资深PPTer重出江湖), 信区: Java
标 题: Re: 据说taobao开源了个海量数据库
发信站: 水木社区 (Thu Sep 1 20:54:51 2011), 站内
看完了,大概是这样子的
更新类操作提交给updateServer
这货在纯粹的内存中进行记录并维护事务
基于c++实现很可能也是这块对malloc有很高的要求
虽然updateServer是单机,但有commit log,且有热备
动态数据commit后到一个128M的内存块
满后冻结并持久化写入chunk server(也就是一般意义上的data node)中的ssd
chunk server在相对空闲时,将这些碎片ssd合并入自己的主内容块
(这里跟各种搜索引擎中,倒排序索引的增量合并应该是一个套路)
以上都没啥特殊的,特殊的在于查询时并非直接获取chunk server
(因为它怎么着都有写延迟)
而是去叫做 merge server的东东上获取
它会合并update server 内存块和chunk server数据块中各自的查询结果
最典型的例子就是 delete * from A where id = 1 后的一段时间内
chunkserver并未及时更新,但是update server有此记录(或者是某个地方,没细究)
基本上,这个东东的模式基本是:hbase + delta index 俩模式的合并
所以才能一方面保持超大数据规模,同时还有比较高的查询实时性,至于事务什么的纯靠单机内存来实现的
但是有个问题是写入频度并不是超高的那种
而且单机update server依旧还是个写入的单点 ╮(╯_╰)╭
我觉得如果拿cache + mysql proxy + nosql 的组合,应该也能模拟个七七八八
最后,完整的实现真令人钦佩
taobao太牛逼了!国内最强啊!
这个赞同,很像
oceanbase自己维护了chunkserver中的数据副本(hbase把这个复杂度扔给hdfs了),然后再扣除了zookeeper
但是比hbase强的就是其 memtable了,这一点更像bigtable
【 在 kabbesy (资深PPTer重出江湖) 的大作中提到: 】
: 看了开头,貌似跟hbase一样啊