论坛首页 综合技术论坛

NoSQL数据库探讨之一 - 为什么要用非关系数据库?

浏览 118505 次
该帖已经被评为精华帖
作者 正文
   发表时间:2009-11-26  
zozoh 写道
庄表伟 写道


第一篇打不开,郁闷 ~~~


这个...任何时候,翻墙都是基本的技能啊。。。
0 请登录后投票
   发表时间:2009-11-27  
比较看好mongodb,看作者自己给自己在Bug database里加了N多的issue,这小伙很有上进心啊~~希望它早日一统江湖。
0 请登录后投票
   发表时间:2009-11-27  
robbin 写道
这里有篇很棒的文章,介绍各个NoSQLDB: NoSQL: If Only It Was That Easy

他提到Tokyo Cabinet在大数据量的时候性能下降问题:

引用
We tried to insert 160mil 2k -20k documents into a single Tokyo Tyrant server, and performance quickly dropped off and kept going down. You could have had a nice holiday skiing on the graph of inserts/sec. This is pretty typical of anything that you write to a disk. The more you write, the slower it goes. We could distribute the write easily, because Tokyo doesn’t scale.


当我们尝试在单个TT服务器节点里面插入1.6亿条2-20KB的记录的时候,TC的写数据性能迅速下降,你可以看到一个像滑雪一样的性能下降曲线。

看来是当数据量上亿条的时候,TC性能开始大幅度下降,从TC作者自己提供的mixi数据来看,至少上千万条数据量的时候还没有遇到这么明显的写入性能瓶颈。


这个也要看具体存储的数据有多大。我曾经搞过一个可以加载大数据的GIS架构。存储vector data部分使用cabinet, 索引在mysql上。 生成的索引大约1100万条。 照理会很快,但是cabinet的单体文件 高达 5G.读取速度下降比较快。

据比较,单体文件不超过2G时性能最好。所以后来写了一个简单的client让 数据散列到多个cabinet文件上去。这样才提高了速度。
0 请登录后投票
   发表时间:2009-11-28  
可惜MongoDB在32bit下有2Gb的限制
0 请登录后投票
   发表时间:2009-11-28  
我选择了Flare和MongoDB. 对于GridFS, 我自己用的感觉还是不错的. 可能是数据量比较小,不到1TB. MongoDB用起来非常爽, 像实时日志统计,数据分析之类的,特别适合. Flare的扩展性好,的确是这样. 此外我觉得它的透明proxy也是很不错,不论是master,slave,都能够切换获得同样的数据.
0 请登录后投票
   发表时间:2009-12-03  
realzhang 写道
可惜MongoDB在32bit下有2Gb的限制

这个限制没有影响

MongoDB的无模式,强大的查询功能非常吸引人。以前用属性保存数据,查询就不方便了,friendfeed在mysql中的schame-less更是加上了索引,解决了查询问题,感觉还是别扭,不如mdb来得自然。
0 请登录后投票
   发表时间:2009-12-08   最后修改:2009-12-08
不知道有谁测试过mongodb的性能,我简单测试了一下,插入1亿条同样的记录。用postgresql和mongodb做查询(100并发),mongodb查询的性能是比pg要好,但是加上通过DBCursor遍历数据的时间,就比jdbc的resultset遍历的时间要多很地多,还没去看看这里是怎么实现的,怀疑是因为反序列化json花掉的时间。

------------
看了下mongo for java driver的代码。collection.find()方法只是创建了一个DBCursor对象,没有做实际的查询操作,所以都是瞬间完成的。实际获取数据是在DBCursor.next的时候。总的消耗时间远远超过pg。pg每次查询都在20ms内完成,而mongo db需要800ms了。
在insert和update时,mongodb有巨大优势。插入10万条数据pg需要200585ms(batch方式提交),mongodb需要109773ms
0 请登录后投票
   发表时间:2009-12-08   最后修改:2009-12-08
  准备做个社区类网站,在寻觅nosql数据库,最近简单测试了一下市面上的nosql数据库,MongoDB是我目前最想用的。
 
  我用java连接另外一台机器上的虚拟机上的ubuntu服务器,插入1W条数据,速度基本上控制在1000ms以内,相比我在同样的坏境下用Hibernate写入mysql来说,mongo我已经觉得是神级的了,但是目前还有最后一个问题,Mongodb说它的默认引擎是使用“内存映射文件”的,这一点我一直搞不太明白,或者说,我不知道怎么控制它只占用指定的内存空间,不管我一次插入一百万,还是一千万条数据,它的内存始终在增长,直到内存占用90%以上,整个系统动不了为止,这点让我非常郁闷。
0 请登录后投票
   发表时间:2009-12-08  
mongodb文档说可以自己灵活有效使用系统的剩余内存,所以不需要像数据库一样要配置各种内存参数
你这个速度慢,可能跟虚拟机有关系
0 请登录后投票
   发表时间:2009-12-08   最后修改:2009-12-08
yishh 写道
不知道有谁测试过mongodb的性能,我简单测试了一下,插入1亿条同样的记录。用postgresql和mongodb做查询(100并发),mongodb查询的性能是比pg要好,但是加上通过DBCursor遍历数据的时间,就比jdbc的resultset遍历的时间要多很地多,还没去看看这里是怎么实现的,怀疑是因为反序列化json花掉的时间。

------------
看了下mongo for java driver的代码。collection.find()方法只是创建了一个DBCursor对象,没有做实际的查询操作,所以都是瞬间完成的。实际获取数据是在DBCursor.next的时候。总的消耗时间远远超过pg。pg每次查询都在20ms内完成,而mongo db需要800ms了。
在insert和update时,mongodb有巨大优势。插入10万条数据pg需要200585ms(batch方式提交),mongodb需要109773ms

不知道你获取多少条记录,我试了一下,获取3万条数据(不复杂)也就花了两秒多。比起用hibernate来说,快得太多了。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics