寻求高效本地nosql方案

10-06-09 adolf506
我们有这样一个需求场景,对数据的处理比较麻烦,像通用的mysql/oralce数据库等没法适用,具体主要需求场景如下:
1、每秒能处理的数据项数量庞大,如2万个
2、对查询响应时间要求苛刻,如在1亿条记录中查询任意一个数据项符合要求的1000条记录耗时不超过5秒
3、断电等意外情况下,最多允许丢失最近一小时内的数据
4、数据项的值插入频率快,如每秒一次
5、数据项的值只有新增,没有更新操作
不知道大家有什么好的思路没,我们正在摸索中。欢迎有经验的朋友指点一下。

banq
2010-06-09 14:27
你这个系统首先肯定需要分布式,第二步,按照分布式CAP定理进行设计:
断电不能丢失太多,意味着容错性要求高。

查询响应时间要求高,对可用性要求比较高。

需求中没有提出:插入的数据是立即出现在查询结果中,还是允许最多延迟多长时间出现,所以,可以初步认为对一致性要求不高。

这样,你就寻找注重AP的NoSQL数据库:

从CAP分类NOSQL

chengyi6901
2010-06-09 16:15
oracle的内存数据库符合要求吗?

adolf506
2010-06-10 09:21
其实刚开始研究决定用 内存数据库H2+orecle,中间通过Sequoia做负载均衡,但这个解决了查询问题。
但插入问题一直感觉很难解决,bang说的插入延迟时间,时间不是问题,但保证数据的完整性与一致性比较难啊

IceQi
2010-06-12 11:27
lz遇到了完整、一致性的问题,那么就需要考虑整个者业务过程中到底在什么地方需要完整、一致?通常这样的需求并不是贯穿整个数据过程的,毕竟任何系统都需要一步步的处理数据。

分阶段的进行保证,同时在关键位置上进行同步,这也是很多大型系统的策略。比如Facebook。。。。。。。。

jametong
2010-06-21 14:54
如果数据不需要保证完全可用..

可以考虑调整Oracle的参数Commit_write到batch,nowait, 如果是MySQL也有类似的级别..

我自己在台式机上进行测试, Intel I7-860 + SATA 7200rpm 500GB 的磁盘上就可以实现每秒插入5000条(每条记录较小)以上的数据. 如果磁盘的吞吐量再高点, 并发大点, 每秒处理3-5w条记录也不是大问题.

[该贴被jametong于2010-06-21 15:02修改过]

wzkl
2011-04-08 17:46
1.不知道业务,可以采用Map.Reduce
2.是否可以考虑Hbase+Hive+Hadoop
3.采用HDFS分布式存储方案
4.采用HBase
5.采用HBase

猜你喜欢