关于 mongodb 和其他 NoSQL 应用经验

52 views
Skip to first unread message

Neo Lee

unread,
Mar 13, 2011, 11:20:38 PM3/13/11
to is...@googlegroups.com
最近项目里会有相关需求,作为一般性经验也很有价值,在此请教各位有过应用经验滴老大,有体会的都来点吧!比如:遇到过什么陷阱(怎么解决的)?比较适合干啥不适合干啥,等等,只要是官方 manual 里没有的体会都欢迎。。。

p.s. 提 mongodb 是因为咱们似乎用得不少,老许、姐夫的团队都有用过,别的 NoSQL 相关技术有体会的也很好(比如近来很热的 Redis 等)。

--
No, I will not fix your computer!

neo...@gmail.com

LI Daobing

unread,
Mar 13, 2011, 11:22:30 PM3/13/11
to is...@googlegroups.com, Neo Lee, guo lijing
cc guolijing

我们这边主要是 guolijing 在负责 mongodb 方面的技术

2011/3/14 Neo Lee <neo...@gmail.com>:

--
Best Regards
LI Daobing

Yu Xihe

unread,
Mar 13, 2011, 11:22:47 PM3/13/11
to is...@googlegroups.com
Everbox 那边的mongo是郭理靖在搞。 最近SDO的mongodb用户也跑来找他做咨询。
不过他今天在扬州, 明天回来。 guol...@gmail.com  , guol...@snda.com

2011/3/14 Neo Lee <neo...@gmail.com>



--
Martin X. YU
http://krzycube.net

Neo Lee

unread,
Mar 13, 2011, 11:32:30 PM3/13/11
to is...@googlegroups.com
郭理靖也在这个列表里的,等他回来麻烦道哥方块召唤下哈

2011/3/14 Yu Xihe <krzy...@gmail.com>

LEE xueyu

unread,
Mar 14, 2011, 5:57:20 AM3/14/11
to is...@googlegroups.com
Redis: 可以考虑做memcache的替代。当时(1年前)测试的时候还不成熟(发现许多问题),不过现在看似乎成熟度上升很多,不过还是要自己根据自己使用场景测试/但代码依然难看。

tt(tokyo tyrant):  key-value的持久性存储. 它的问题主要在btree存储引擎上和table引擎上,读写为表锁,而非列锁,尤其是范围搜索上,它的范围搜索是单用户的没有解决slow query(我曾改过一点通过限制查询时间来试图解决,不过这样可能会返回不完整结果) 多用户场景别用这块,table引擎是基于btree引擎,其上没有单列更新机制(我已改)。如果文件非常大,试cache参数的大小而定,性能线性下降/代码特点是代码易读性强,易修改。

mongodb 是一个很大的体系,很全,一年前它的Storage是采用内存映射方式多个文件构成(当1台机器的数据量远大于内存的时候,如果在边界切换频繁的场景会有问题),文件的size远大于数据的实际大小/代码量大,读懂整个系统有一定难度。

当时在格子客的最初制定的方案是php + memcache + 读写分离的 tt( 写同时写 mysql )。在执行过程中,一个据说有许多高并发经验的人对 tt 的btree引擎做的使用场景并发压力测试,所有测试pass并且极为理想,然后当时的技术经理迫于开发压力,就根据测试的结果决定拿掉mysql数据层,不开发这一块。结果在产品上线后,当数据量到20多G后发现并发极其慢,查了许久也找不到原因,我后来查到是btree的slow query锁死了整个数据库导致,而测试的时候这个场景根本没有测试,我通过限制查询时间的方式做了workaround,不过他们项目组已经决定切换到mysql, 当时还好设计的底层架构做的不错,花了3-4个工作日就写了个mysql的数据层切换过去。


OK,使用NoSQL的时候一定要注意:
1、一定要有替代方案
在设计上要有DB抽象层,重视架构
在方案上要想好替代的数据库系统
2、测试场景一定要全面覆盖自己的使用场景(最好自己亲测,不要轻信)



2011/3/14 Neo Lee <neo...@gmail.com>

Jeffrey Zhao

unread,
Mar 14, 2011, 6:17:59 AM3/14/11
to is...@googlegroups.com
去年两月份我在考虑如何保存麦库的数据。当年我实在不想使用RDBMS,因为实在太麻烦。后来花了一个星期测试了TT和MongoDB的性能,结果以TT全面落后告终。至于数据访问层的架构,是根据我理想中的样子写了个映射类库,自觉就算到现在为止也没有哪个类库(不限实现的技术)能够比拟,哦也。
 
我的看法是,如果要为NoSQL准备额外一套存储,不如就不用NoSQL了,开发啊维护啊代价都太高。说NoSQL不够稳定是没底的,永远比不过RDBMS来的“稳定”——因为在很多人看来“稳定”基本等价于“老牌”。所以我的做法是留一定缓冲时间做前期评估,例如预估一年内的数据量。我当时是在预估的范围内,MongoDB性能和稳定性方面表现也很好,所以选择了MongoDB。这一年来用的很爽,而且现在看起来发展得比预期更好。
 
话说回来,相对来说TT性能差,对查询支持弱,我一下子想不到什么情况下用TT比较合适。
 

Yurii

unread,
Mar 14, 2011, 9:15:06 AM3/14/11
to is...@googlegroups.com
我不赞成你的说法,麦库"一年来用得爽"或许是实情,但据我所知麦库的数据量并不大(文件在百万级别,用户量在十万级别吧),算起来读写压力也没有太大,这样的例子并没有足够的代表性(用MySQL硬撑估计问题也不大)。或许老许团队Everbox给出的例子更有说服力一些,我比较期待。
而且据我了解,许多人说NoSQL不够稳定,主要还是使用中会遇到一些让人费解的问题,相反RDBMS现在有足够成熟丰富的例子,在某个规模可能遇到什么样的问题,各种问题该如何解决,都有现成的答案,使用的难度会更低一些。所以,你的"因为"实在是有点稻草人思维谬误的影子。

我们通常的做法是,关系型数据存放在RDBMS里,非关系型数据放在NoSQL中(当然,其中的划分是有讲究的)。相对于RDBMS,NoSQL产品对关系的运算和维护,暂时看不到优势(当然,纯粹用RDBMS做存储,也是有点"廖化当先锋"的味道)。

2011/3/14 Jeffrey Zhao <je...@live.com>:


> 去年两月份我在考虑如何保存麦库的数据。当年我实在不想使用RDBMS,因为实在太麻烦。后来花了一个星期测试了TT和MongoDB的性能,结果以TT全面落后告终。至于数据访问层的架构,是根据我理想中的样子写了个映射类库,自觉就算到现在为止也没有哪个类库(不限实现的技术)能够比拟,哦也。
>

> 我的看法是,如果要为NoSQL准备额外一套存储,不如就不用NoSQL了,开发啊维护啊代价都太高。说NoSQL不够稳定是没底的,永远比不过RDBMS来的"稳定"----因为在很多人看来"稳定"基本等价于"老牌"。所以我的做法是留一定缓冲时间做前期评估,例如预估一年内的数据量。我当时是在预估的范围内,MongoDB性能和稳定性方面表现也很好,所以选择了MongoDB。这一年来用的很爽,而且现在看起来发展得比预期更好。

Yu Xihe

unread,
Mar 14, 2011, 9:38:23 AM3/14/11
to is...@googlegroups.com
『 但据我所知麦库的数据量并不大(文件在百万级别,用户量在十万级别吧),算起来读写压力也没有太大,这样的例子并没有足够的代表性(用MySQL硬撑估计问题也不大)』
-------------------------------------------------
百万条根本不用硬撑, 当年KS的水银项目, Albert Lee把MySQL 用得出神入化, 上亿条。 虽然是揣着辞职信干的。


2011/3/14 Yurii <yushen...@gmail.com>

但据我所知麦库的数据量并不大(文件在百万级别,用户量在十万级别吧),算起来读写压力也没有太大,这样的例子并没有足够的代表性(用MySQL硬撑估计问题也不大)

Yurii

unread,
Mar 14, 2011, 9:44:21 AM3/14/11
to is...@googlegroups.com
我用过单表4亿条数据的MySQL,峰值qps超过200,也没问题啊

2011/3/14 Yu Xihe <krzy...@gmail.com>:
> 『

LI Daobing

unread,
Mar 14, 2011, 10:09:00 AM3/14/11
to is...@googlegroups.com, Yurii
mongodb 整体还行,但有一些怨念的地方,

主要在备份(mongodb 的 slave 锁不住, 备份中可能存在不一致的数据, 导致在恢复时 unique index 都无法创建)

sharding 无法支持多个 unique index

sharding 无法支持增量备份

replica set 无法做读写压力均衡

mmap 在热点数据量比内存大时效率变差

频繁更新数据时容易出现大量空洞,最好能定期整理,但缺乏在线整理的支持。

难以寻找专业的技术支持

...

我不直接参与mongodb, 上面的观点可能有错,大家还是等 guolijing 的结论吧

:)

2011/3/14 Yurii <yushen...@gmail.com>:

--
Best Regards
LI Daobing

LEE xueyu

unread,
Mar 14, 2011, 10:03:16 PM3/14/11
to is...@googlegroups.com
实际上用 MYSQL  和 NoSQL 如果按照分布式存储的根本原则来玩,就没啥区别。

所谓 NoSQL 事实上不是排斥 SQL,而是因为关系型数据库的诸多复杂关系导致在超大规模的数据表上的拆分出现麻烦,提倡NoSQL的是想在某些业务场景下通过尽量避免使用关系,低耦合,无状态,来使得项目具有scalability, 在项目的数据和用户猛涨/猛跌的情况下,可以通过服务器动态变化来合理调配硬件资源来满足需求,从开始考虑这些,也可以减小以后架构完全重构的风险,当然部分重构始终是避免不了的。用 MySQL 数据库但内部采用NoSQL的方式来解决容易拆表,在大数据量下动态增添索引的方案网上已经有人做过,效果也不错。选用NoSQL的目的只不过是为了最大限度的压榨单点机器的效能。当时我的本意是用MYSQL为主(产品要追求稳定,单点效能低些无所谓,如果NoSQL他们觉得好用,再逐步在集群中增加NoSQL节点的数量),换句话说,存储单点可以是MySQL,也可以是 NoSQL 数据库。 当然这样,在底层Framework的建设中,开发量会增加一倍,而且MySQL这块还需要开发单独的维护数据的管理工具。

不过的分布式存储不是万能的,在使用场景上一定要注意,分布式存储牺牲的是数据的完全一致性,无法保障数据的实时一致性,虽然数据最终会一致的(这也得通过种种措施来保证)。

死胖子,你是不是变奋青了?怎么不太像搞技术的文风。没数据,做对比也不客观(如果你把tt的内存cache参数增大到mongodb的使用内存一致,它们的性能就是一个数量级的,毕竟都是mmap 方式。如果你只是默认使用而已,没有任何配置,那自然,一个使用的是全部内存),全是主观感受。而且如果你在使用mongodb如果一点问题都没有发现过,我可为你担心,虚心听听别人是怎么说的吧。所谓使用场景测试,就是你预估的单点承受力(每个单点要有XX大小的数据量,并发访问要有XX啥的),然后对你要使到用的每一个功能点做数据使用场景测试。

2011/3/14 Yurii <yushen...@gmail.com>

Jeffrey Zhao

unread,
Mar 14, 2011, 10:47:26 PM3/14/11
to is...@googlegroups.com
��˵���ǡ��Ƿ�ѡ��MongoDB��Ϊ�洢���Լ����Ƿ���Ҫ�ٱ�һ�׶���Ĵ洢�������⣬����˵��MongoDB��������Ρ�

������ͨӦ�ó�����һֱ�������Ǹ�ʲô���ӵļܹ�������ʲôһ�����ǧ���û�����Facebook������Ρ��ȷ�չ��ȥ�ˣ������DZ���ģ�һ��ʼ����ٺã��������Ǹϲ��ϱ仯�����ģ������DZ���ġ�������˵���ڿ���Ԥ�Ƶ����������£����ֹ��ã����Ǿ����ˣ��Ҳ���̫�ں�����ijij���˳����±�����Σ�������һʱ�����������ֻҪ�����ţ������������󣬵���������ʱ�򣬽��������ʵ��Ҳ�ù���Ҳ�����ˡ�

��Ȼ��Ҳ֪����MySQL����ǿ��Եģ�������MongoDB������ֽ��ѣ����˾�֪����

-----ԭʼ�ʼ�-----
From: Yurii
Sent: Monday, March 14, 2011 9:15 PM
To: is...@googlegroups.com
Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���

�Ҳ��޳����˵�������"һ�����õ�ˬ"������ʵ�飬��������֪����������������ļ��ڰ��򼶱��û�����ʮ�򼶱�ɣ�����������дѹ��Ҳû��̫����������Ӳ�û���㹻�Ĵ���ԣ���MySQLӲ�Ź�������Ҳ���󣩡����������Ŷ�Everbox��������Ӹ���˵����һЩ���ұȽ��ڴ�
���Ҿ����˽⣬�����˵NoSQL�����ȶ�����Ҫ����ʹ���л�����һЩ���˷ѽ�����⣬�෴RDBMS�������㹻����ḻ�����ӣ���ij����ģ��������ʲô������⣬�����������ν���������ֳɵĴ𰸣�ʹ�õ��ѶȻ���һЩ�����ԣ����"��Ϊ"ʵ�����е㵾����˼ά�����Ӱ�ӡ�

����ͨ���������ǣ���ϵ����ݴ����RDBMS��ǹ�ϵ����ݷ���NoSQL�У���Ȼ�����еĻ������н����ģ��������RDBMS��NoSQL��Ʒ�Թ�ϵ�������ά������ʱ���������ƣ���Ȼ��������RDBMS���洢��Ҳ���е�"�λ����ȷ�"��ζ������

2011/3/14 Jeffrey Zhao <je...@live.com>:
> ȥ�����·����ڿ�����α���������ݡ�������ʵ�ڲ���ʹ��RDBMS����Ϊʵ��̫�鷳����������һ�����ڲ�����TT��MongoDB�����ܣ������TTȫ�������ա�������ݷ��ʲ�ļܹ����Ǹ���������е�����д�˸�ӳ����⣬�Ծ����㵽����ΪֹҲû���ĸ���⣨����ʵ�ֵļ������ܹ����⣬ŶҲ��
>
> �ҵĿ����ǣ����ҪΪNoSQL׼������һ�״洢������Ͳ���NoSQL�ˣ�������ά������۶�̫�ߡ�˵NoSQL�����ȶ���û�׵ģ���Զ�Ȳ���RDBMS����"�ȶ�"----��Ϊ�ںܶ��˿���"�ȶ�"��ȼ���"����"�������ҵ���������һ������ʱ����ǰ������������Ԥ��һ���ڵ���������ҵ�ʱ����Ԥ���ķ�Χ�ڣ�MongoDB���ܺ��ȶ��Է������Ҳ�ܺã�����ѡ����MongoDB����һ�����õĺ�ˬ���������ڿ�������չ�ñ�Ԥ�ڸ�á�
>
> ��˵�����������˵TT���ܲ�Բ�ѯ֧��������һ�����벻��ʲô�������TT�ȽϺ��ʡ�


>
> Jeffrey Zhao
> Blog: http://blog.zhaojie.me/
> Twitter: http://twitter.com/jeffz_cn
>
> From: LEE xueyu
> Sent: Monday, March 14, 2011 5:57 PM
> To: is...@googlegroups.com

> Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���
>
> Redis:
> ���Կ�����memcache�����ʱ��1��ǰ�����Ե�ʱ�򻹲����죨����������⣩���������ڿ��ƺ����������ܶ࣬������Ҫ�Լ�����Լ�ʹ�ó�������/��������Ȼ�ѿ���
>
> tt(tokyo tyrant): key-value�ij־��Դ洢.
> ���������Ҫ��btree�洢�����Ϻ�table�����ϣ���дΪ���������������Ƿ�Χ�����ϣ���ķ�Χ�����ǵ��û���û�н��slow
> query(����Ĺ�һ��ͨ�����Ʋ�ѯʱ������ͼ���������������ܻ᷵�ز�������)
>
> ���û�����������飬table�����ǻ���btree���棬����û�е��и��»��ƣ����Ѹģ�������ļ��dz�����cache����Ĵ�С�����������½�/�����ص��Ǵ����׶���ǿ�����޸ġ�
>
> mongodb
> ��һ���ܴ����ϵ����ȫ��һ��ǰ���Storage�Dz����ڴ�ӳ�䷽ʽ����ļ����ɣ���1̨�����������Զ�����ڴ��ʱ������ڱ߽��л�Ƶ���ij����������⣩���ļ���sizeԶ������ݵ�ʵ�ʴ�С/�������󣬶������ϵͳ��һ���Ѷȡ�
>
> ��ʱ�ڸ��ӿ͵�����ƶ��ķ�����php + memcache + ��д����� tt( дͬʱд
> mysql
> )����ִ�й���У�һ����˵�����߲���������˶� tt
> ��btree��������ʹ�ó�������ѹ�����ԣ����в���pass���Ҽ�Ϊ���룬Ȼ��ʱ�ļ����������ڿ���ѹ�����͸�ݲ��ԵĽ������õ�mysql��ݲ㣬��������һ�顣����ڲ�Ʒ���ߺ󣬵��������20��G���ֲ���������������Ҳ�Ҳ���ԭ���Һ����鵽��btree��slow
> query�����������ݿ⵼�£�����Ե�ʱ�����������û�в��ԣ���ͨ�����Ʋ�ѯʱ��ķ�ʽ����workaround,����������Ŀ���Ѿ������л���mysql,
> ��ʱ������Ƶĵײ�ܹ����IJ��?����3-4�������վ�д�˸�mysql����ݲ��л���ȥ��
>
>
>
> OK��ʹ��NoSQL��ʱ��һ��Ҫע�⣺
> 1��һ��Ҫ�����
> �������Ҫ��DB����㣬���Ӽܹ�
> �ڷ�����Ҫ���������ݿ�ϵͳ
> 2�����Գ���һ��Ҫȫ�渲���Լ���ʹ�ó���������Լ��ײ⣬��Ҫ���ţ�
>
>
>
> 2011/3/14 Neo Lee <neo...@gmail.com>
>>
>>
>> �����Ŀ��������������Ϊһ���Ծ���Ҳ���м�ֵ���ڴ���̸�λ�й�Ӧ�þ�����ϴ������Ķ�����ɣ����磺������ʲô���壨��ô����ģ����Ƚ��ʺϸ�ɶ���ʺϸ�ɶ���ȵȣ�ֻҪ�ǹٷ�
>> manual ��û�е���ᶼ��ӭ������
>>
>> p.s. �� mongodb ����Ϊ�����ƺ��õò��٣����?�����ŶӶ����ù���
>> NoSQL ��ؼ���������Ҳ�ܺã�����������ȵ� Redis
>> �ȣ���

Jeffrey Zhao

unread,
Mar 14, 2011, 11:05:10 PM3/14/11
to is...@googlegroups.com
我测试MongoDB的时候用了大数据量和大并发跑了很多天的啊,而且也是根据我们需要的场景做测试,当时不还借用了格子客的机器么,哪来没有数据不客观一说。当时不用TT,一个重要的原因就是它不符合项目各场景要求,比如根据条件更新个数据还需要读取,修改,再写回,而MongoDB是内置更新的。测试性能还要算上数据传输量,Web服务器资源使用(甚至使用起来是否麻烦)等等,TT和MongoDB完全不是一类东西。我又不是只测试基本CRUD操作,拿个主键读读写写,这种简单场景没有意义。
 
我不赞同用NoSQL和MySQL做两套的做法,因为这实在会带来大量的工作,更重要的问题是,你这个数据访问层一抽象,结果MySQL和NoSQL的优势都利用不好。还不如好好利用MySQL用传统方式做存储,再用NoSQL做它合适的事情。
 
还有,把MySQL当作NoSQL来用,自然也是可以的。但是,既然如此,为什么还非要用MySQL不可呢。
 
 
From: LEE xueyu
Sent: Tuesday, March 15, 2011 10:03 AM
Subject: Re: 关于 mongodb 和其他 NoSQL 应用经验
 

LEE xueyu

unread,
Mar 15, 2011, 2:54:32 AM3/15/11
to is...@googlegroups.com
>结果MySQL和NoSQL的优势都利用不好。
This is NOT TRUTH and personal feelings in it.  pls think the core mechanism carefully.

如果你每个节点要使用 1T 数据量,那么就看看这个规模下的数据量的场景下跑的如何吧,然后你想要使用它的那些功能:query/API?auto-shard?fulltextindex?replication? 前面不想清楚,后期如果觉得这个功能好用,没充分测试就随意用上可能会出问题。

Sorry, I am busy now.

2011/3/15 Jeffrey Zhao <je...@live.com>

Jeffrey Zhao

unread,
Mar 15, 2011, 3:15:31 AM3/15/11
to is...@googlegroups.com
你这个“如果每个节点要使用1T数据量”就是我不去考虑的,因为要达到这个数据规模都是很久以后的事情,之前需要解决的问题实在太多了。说的乐观点:等达到到1T数据量时,MongoDB已经解决这问题了;说的悲观点:说不定还不到100G数据项目就死掉了。说的中间派一点:就算到了1T规模数据,我一开始也已经做好了sharding成10个100G的办法。
 
所以我强调的是:估计一定时间内的场景和发展,然后进行评估。我在选择MongoDB作为主要存储的时候也是经过详细测试的,和“没充分测试就随意用上”没有半毛关系。我选择MongoDB时看上去的确比较激进,但也有保守的地方。比如当时auto-sharding还很不好用,于是从一开始在架构时就采用了在代码逻辑里实现的manual-sharding,而不是依赖它的auto-sharding,直到前段时间才开始尝试着auto-sharding。
 
总之:
 
1、预测未来发展状况。
2、基于现状对预测的结果进行详细评测。

LI Daobing

unread,
Mar 15, 2011, 3:18:43 AM3/15/11
to is...@googlegroups.com
作为参考,我们的数据规模(mongodb 的占用的磁盘空间) 已经 22G 了

2011/3/15 Jeffrey Zhao <je...@live.com>:

--
Best Regards
LI Daobing

Tinyfool

unread,
Mar 15, 2011, 3:21:37 AM3/15/11
to is...@googlegroups.com
这22G仅是元数据吧?那么22G还是很夸张可观的

2011/3/15 LI Daobing <lida...@gmail.com>:

--
Tinyfool的Blog http://tiny4.org/blog/
Tiny4Cocoa http://tiny4.org/cocoa/
myTwitter: http://twitter.com/tinyfool

Jeffrey Zhao

unread,
Mar 15, 2011, 3:32:54 AM3/15/11
to is...@googlegroups.com
��ʱ�Ҽǵò���ʱ�����Ǵ�Լÿ100������¼������10G��ݵ����ӡ�����Ҫ��1T�Ļ���Ҫ����1������¼�����е�ij�����ֶ������Ҳ�����ļ���ƪ���£�ƽ���С�϶�����ʵ�����������ֶβ��ȥ�Ļ��͸�С�ˡ�

Ҳ����˵��sharding֮�󵥵�Ҫ1������¼��˵���������Ŀǰ�Ĵ洢�ܹ��ǿ�������sharding��7��13��17�����У��������������������׽���ġ�

-----ԭʼ�ʼ�-----
From: LI Daobing
Sent: Tuesday, March 15, 2011 3:18 PM
To: is...@googlegroups.com
Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���

��Ϊ�ο������ǵ���ݹ�ģ(mongodb ��ռ�õĴ��̿ռ�) �Ѿ� 22G ��

2011/3/15 Jeffrey Zhao <je...@live.com>:
> �����"���ÿ���ڵ�Ҫʹ��1T�����"�����Ҳ�ȥ���ǵģ���ΪҪ�ﵽ�����ݹ�ģ���Ǻܾ��Ժ�����飬֮ǰ��Ҫ���������ʵ��̫���ˡ�˵���ֹ۵㣺�ȴﵽ��1T�����ʱ��MongoDB�Ѿ�����������ˣ�˵�ı��۵㣺˵����������100G�����Ŀ�������ˡ�˵���м���һ�㣺���㵽��1T��ģ��ݣ���һ��ʼҲ�Ѿ�������sharding��10��100G�İ취��
>
> ������ǿ�����ǣ�����һ��ʱ���ڵij����ͷ�չ��Ȼ���������������ѡ��MongoDB��Ϊ��Ҫ�洢��ʱ��Ҳ�Ǿ�����ϸ���Եģ���"û��ֲ��Ծ���������"û�а�ë��ϵ����ѡ��MongoDBʱ����ȥ��ȷ�Ƚϼ���Ҳ�б��صĵط������統ʱauto-sharding���ܲ����ã����Ǵ�һ��ʼ�ڼܹ�ʱ�Ͳ������ڴ����߼���ʵ�ֵ�manual-sharding�������������auto-sharding��ֱ��ǰ��ʱ��ſ�ʼ������auto-sharding��
>
> ��֮��
>
> 1��Ԥ��δ����չ״����
> 2��������״��Ԥ��Ľ�������ϸ���⡣


>
> Jeffrey Zhao
> Blog: http://blog.zhaojie.me/
> Twitter: http://twitter.com/jeffz_cn
>
> From: LEE xueyu
> Sent: Tuesday, March 15, 2011 2:54 PM
> To: is...@googlegroups.com

> Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���
>
>>���MySQL��NoSQL�����ƶ����ò��á�


> This is NOT TRUTH and personal feelings in it. pls think the core
> mechanism
> carefully.

> �����ÿ���ڵ�Ҫʹ�� 1T
> ���������ô�Ϳ��������ģ�µ�������ij������ܵ���ΰɣ�Ȼ������Ҫʹ�������Щ���ܣ�query/API��auto-shard��fulltextindex��replication?
> ǰ�治�����������������������ܺ��ã�û��ֲ��Ծ��������Ͽ��ܻ�����⡣


>
> Sorry, I am busy now.
>
> 2011/3/15 Jeffrey Zhao <je...@live.com>
>>
>>

>> �Ҳ���MongoDB��ʱ�����˴�������ʹ󲢷����˺ܶ���İ�������Ҳ�Ǹ��������Ҫ�ij��������ԣ���ʱ���������˸��ӿ͵Ļ���ô������û����ݲ��͹�һ˵����ʱ����TT��һ����Ҫ��ԭ�����������Ŀ������Ҫ�󣬱������������¸���ݻ���Ҫ��ȡ���޸ģ���д�أ���MongoDB�����ø��µġ��������ܻ�Ҫ������ݴ�������Web��������Դʹ�ã�����ʹ�������Ƿ��鷳���ȵȣ�TT��MongoDB��ȫ����һ�ණ�������ֲ���ֻ���Ի�CRUD�������ø��������дд�����ּ򵥳���û�����塣
>>
>>
>> �Ҳ���ͬ��NoSQL��MySQL�����׵���������Ϊ��ʵ�ڻ���������Ĺ���������Ҫ�������ǣ��������ݷ��ʲ�һ���󣬽��MySQL��NoSQL�����ƶ����ò��á�������ú�����MySQL�ô�ͳ��ʽ���洢������NoSQL������ʵ����顣
>>
>> ���У���MySQL����NoSQL���ã���ȻҲ�ǿ��Եġ����ǣ���Ȼ��ˣ�Ϊʲô����Ҫ��MySQL�����ء�


>>
>> Jeffrey Zhao
>> Blog: http://blog.zhaojie.me/
>> Twitter: http://twitter.com/jeffz_cn
>>
>> From: LEE xueyu
>> Sent: Tuesday, March 15, 2011 10:03 AM
>> To: is...@googlegroups.com

>> Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���
>>
>> ʵ������ MYSQL �� NoSQL ����շֲ�ʽ�洢�ĸ�ԭ�����棬��ûɶ���
>>
>> ��ν NoSQL ��ʵ�ϲ����ų�
>> SQL��������Ϊ��ϵ����ݿ����ิ�ӹ�ϵ�����ڳ����ģ����ݱ��ϵIJ�ֳ����鷳���ᳫNoSQL��������ijЩҵ�񳡾���ͨ��������ʹ�ù�ϵ������ϣ���״̬����ʹ����Ŀ����scalability,
>> ����Ŀ����ݺ��û�����/�͵������£�����ͨ���������̬�仯���������Ӳ����Դ���������󣬴ӿ�ʼ������Щ��Ҳ���Լ�С�Ժ�ܹ���ȫ�ع��ķ��գ���Ȼ�����ع�ʼ���DZ��ⲻ�˵ġ���
>> MySQL
>> ��ݿ⵫�ڲ�����NoSQL�ķ�ʽ��������ײ�?�ڴ�������¶�̬��������ķ��������Ѿ���������Ч��Ҳ���?ѡ��NoSQL��Ŀ��ֻ������Ϊ������޶ȵ�ѹե���������Ч�ܡ���ʱ�ҵı�������MYSQLΪ������ƷҪ׷���ȶ�������Ч�ܵ�Щ����ν�����NoSQL���Ǿ��ú��ã������ڼ�Ⱥ������NoSQL�ڵ�������������仰˵���洢���������MySQL��Ҳ������
>> NoSQL ��ݿ⡣ ��Ȼ�����ڵײ�Framework�Ľ����У�������������һ��������MySQL��黹��Ҫ����������ά����ݵĹ��?�ߡ�
>>
>>
>> ����ķֲ�ʽ�洢�������ܵģ���ʹ�ó�����һ��Ҫע�⣬�ֲ�ʽ�洢���������ݵ���ȫһ���ԣ��޷�������ݵ�ʵʱһ���ԣ���Ȼ������ջ�һ�µģ���Ҳ��ͨ�����ִ�ʩ����֤����
>>
>> �����ӣ����Dz��DZ�����ˣ���ô��̫��㼼�����ķ硣û��ݣ����Ա�Ҳ���͹ۣ�������tt���ڴ�cache��������mongodb��ʹ���ڴ�һ�£����ǵ����ܾ���һ���������ģ��Ͼ�����mmap
>> ��ʽ�������ֻ��Ĭ��ʹ�ö��ѣ�û���κ����ã�����Ȼ��һ��ʹ�õ���ȫ���ڴ棩��ȫ�����۸��ܡ������������ʹ��mongodb���һ�����ⶼû�з��ֹ��ҿ�Ϊ�㵣�ģ����������������ô˵�İɡ���νʹ�ó������ԣ�������Ԥ���ĵ����������ÿ������Ҫ��XX��С�����������������Ҫ��XXɶ�ģ���Ȼ�����Ҫʹ���õ�ÿһ�����ܵ������ʹ�ó������ԡ�
>>
>> 2011/3/14 Yurii <yushen...@gmail.com>
>>>
>>> ���ù��4������ݵ�MySQL����ֵqps����200��Ҳû���Ⱑ
>>>
>>> 2011/3/14 Yu Xihe <krzy...@gmail.com>:
>>> > ��


>>> >
>>> > ��������֪����������������ļ��ڰ��򼶱��û�����ʮ�򼶱�ɣ�����������дѹ��Ҳû��̫����������Ӳ�û���㹻�Ĵ���ԣ���MySQLӲ�Ź�������Ҳ���󣩡�

>>> > -------------------------------------------------
>>> > ����������Ӳ�ţ� ����KS��ˮ����Ŀ�� Albert Lee��MySQL �õó����뻯��
>>> > �������� ��Ȼ�Ǵ��Ŵ�ְ�Ÿɵġ�
>>> >
>>> >
>>> > 2011/3/14 Yurii <yushen...@gmail.com>
>>> >>
>>> >>
>>> >>
>>> >> ��������֪����������������ļ��ڰ��򼶱��û�����ʮ�򼶱�ɣ�����������дѹ��Ҳû��̫����������Ӳ�û���㹻�Ĵ���ԣ���MySQLӲ�Ź�������Ҳ����

LI Daobing

unread,
Mar 15, 2011, 3:33:00 AM3/15/11
to is...@googlegroups.com, Tinyfool
当然是元数据, 文件数据早就过 10T 了

2011/3/15 Tinyfool <tiny...@gmail.com>:

Jeffrey Zhao

unread,
Mar 15, 2011, 3:44:55 AM3/15/11
to is...@googlegroups.com
��¼��Ŀ�Ƕ��ٰ�������Ԫ���Ӧ���DZȽ�С�ġ�

��������MongoDB����Shard����ļ���С��10��G����������

-----ԭʼ�ʼ�-----
From: LI Daobing

Sent: Tuesday, March 15, 2011 3:33 PM
To: is...@googlegroups.com
Cc: Tinyfool


Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���

��Ȼ��Ԫ���, �ļ������͹� 10T ��

2011/3/15 Tinyfool <tiny...@gmail.com>:
> ��22G����Ԫ��ݰɣ���ô22G���Ǻܿ��ſɹ۵�
>
> 2011/3/15 LI Daobing <lida...@gmail.com>:


>> ��Ϊ�ο������ǵ���ݹ�ģ(mongodb ��ռ�õĴ��̿ռ�) �Ѿ� 22G ��
>>
>> 2011/3/15 Jeffrey Zhao <je...@live.com>:
>>> �����"���ÿ���ڵ�Ҫʹ��1T�����"�����Ҳ�ȥ���ǵģ���ΪҪ�ﵽ�����ݹ�ģ���Ǻܾ��Ժ�����飬֮ǰ��Ҫ���������ʵ��̫���ˡ�˵���ֹ۵㣺�ȴﵽ��1T�����ʱ��MongoDB�Ѿ�����������ˣ�˵�ı��۵㣺˵����������100G�����Ŀ�������ˡ�˵���м���һ�㣺���㵽��1T��ģ��ݣ���һ��ʼҲ�Ѿ�������sharding��10��100G�İ취��
>>>
>>> ������ǿ�����ǣ�����һ��ʱ���ڵij����ͷ�չ��Ȼ���������������ѡ��MongoDB��Ϊ��Ҫ�洢��ʱ��Ҳ�Ǿ�����ϸ���Եģ���"û��ֲ��Ծ���������"û�а�ë��ϵ����ѡ��MongoDBʱ����ȥ��ȷ�Ƚϼ���Ҳ�б��صĵط������統ʱauto-sharding���ܲ����ã����Ǵ�һ��ʼ�ڼܹ�ʱ�Ͳ������ڴ����߼���ʵ�ֵ�manual-sharding�������������auto-sharding��ֱ��ǰ��ʱ��ſ�ʼ������auto-sharding��
>>>
>>> ��֮��
>>>
>>> 1��Ԥ��δ����չ״����
>>> 2��������״��Ԥ��Ľ�������ϸ���⡣
>>>

>>> Jeffrey Zhao
>>> Blog: http://blog.zhaojie.me/
>>> Twitter: http://twitter.com/jeffz_cn
>>>
>>> From: LEE xueyu
>>> Sent: Tuesday, March 15, 2011 2:54 PM
>>> To: is...@googlegroups.com

>>> Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���
>>>
>>>>���MySQL��NoSQL�����ƶ����ò��á�

>>> This is NOT TRUTH and personal feelings in it. pls think the core
>>> mechanism
>>> carefully.

>>> �����ÿ���ڵ�Ҫʹ�� 1T
>>> ���������ô�Ϳ��������ģ�µ�������ij������ܵ���ΰɣ�Ȼ������Ҫʹ�������Щ���ܣ�query/API��auto-shard��fulltextindex��replication?
>>> ǰ�治�����������������������ܺ��ã�û��ֲ��Ծ��������Ͽ��ܻ�����⡣
>>>
>>>

>>> Sorry, I am busy now.
>>>
>>> 2011/3/15 Jeffrey Zhao <je...@live.com>
>>>>
>>>>

>>>> �Ҳ���MongoDB��ʱ�����˴�������ʹ󲢷����˺ܶ���İ�������Ҳ�Ǹ��������Ҫ�ij��������ԣ���ʱ���������˸��ӿ͵Ļ���ô������û����ݲ��͹�һ˵����ʱ����TT��һ����Ҫ��ԭ�����������Ŀ������Ҫ�󣬱������������¸���ݻ���Ҫ��ȡ���޸ģ���д�أ���MongoDB�����ø��µġ��������ܻ�Ҫ������ݴ�������Web��������Դʹ�ã�����ʹ�������Ƿ��鷳���ȵȣ�TT��MongoDB��ȫ����һ�ණ�������ֲ���ֻ���Ի�CRUD�������ø��������дд�����ּ򵥳���û�����塣
>>>>
>>>>
>>>> �Ҳ���ͬ��NoSQL��MySQL�����׵���������Ϊ��ʵ�ڻ���������Ĺ���������Ҫ�������ǣ��������ݷ��ʲ�һ���󣬽��MySQL��NoSQL�����ƶ����ò��á�������ú�����MySQL�ô�ͳ��ʽ���洢������NoSQL������ʵ����顣
>>>>
>>>> ���У���MySQL����NoSQL���ã���ȻҲ�ǿ��Եġ����ǣ���Ȼ��ˣ�Ϊʲô����Ҫ��MySQL�����ء�
>>>>

>>>> Jeffrey Zhao
>>>> Blog: http://blog.zhaojie.me/
>>>> Twitter: http://twitter.com/jeffz_cn
>>>>
>>>> From: LEE xueyu
>>>> Sent: Tuesday, March 15, 2011 10:03 AM
>>>> To: is...@googlegroups.com

>>>> Subject: Re: ���� mongodb ������ NoSQL Ӧ�þ���
>>>>
>>>> ʵ������ MYSQL �� NoSQL ����շֲ�ʽ�洢�ĸ�ԭ�����棬��ûɶ���
>>>>
>>>> ��ν NoSQL ��ʵ�ϲ����ų�
>>>> SQL��������Ϊ��ϵ����ݿ����ิ�ӹ�ϵ�����ڳ����ģ����ݱ��ϵIJ�ֳ����鷳���ᳫNoSQL��������ijЩҵ�񳡾���ͨ��������ʹ�ù�ϵ������ϣ���״̬����ʹ����Ŀ����scalability,
>>>> ����Ŀ����ݺ��û�����/�͵������£�����ͨ���������̬�仯���������Ӳ����Դ���������󣬴ӿ�ʼ������Щ��Ҳ���Լ�С�Ժ�ܹ���ȫ�ع��ķ��գ���Ȼ�����ع�ʼ���DZ��ⲻ�˵ġ���
>>>> MySQL
>>>> ��ݿ⵫�ڲ�����NoSQL�ķ�ʽ��������ײ�?�ڴ�������¶�̬��������ķ��������Ѿ���������Ч��Ҳ���?ѡ��NoSQL��Ŀ��ֻ������Ϊ������޶ȵ�ѹե���������Ч�ܡ���ʱ�ҵı�������MYSQLΪ������ƷҪ׷���ȶ�������Ч�ܵ�Щ����ν�����NoSQL���Ǿ��ú��ã������ڼ�Ⱥ������NoSQL�ڵ�������������仰˵���洢���������MySQL��Ҳ������
>>>> NoSQL ��ݿ⡣ ��Ȼ�����ڵײ�Framework�Ľ����У�������������һ��������MySQL��黹��Ҫ����������ά����ݵĹ��?�ߡ�
>>>>
>>>>
>>>> ����ķֲ�ʽ�洢�������ܵģ���ʹ�ó�����һ��Ҫע�⣬�ֲ�ʽ�洢���������ݵ���ȫһ���ԣ��޷�������ݵ�ʵʱһ���ԣ���Ȼ������ջ�һ�µģ���Ҳ��ͨ�����ִ�ʩ����֤����
>>>>
>>>> �����ӣ����Dz��DZ�����ˣ���ô��̫��㼼�����ķ硣û��ݣ����Ա�Ҳ���͹ۣ�������tt���ڴ�cache��������mongodb��ʹ���ڴ�һ�£����ǵ����ܾ���һ���������ģ��Ͼ�����mmap
>>>> ��ʽ�������ֻ��Ĭ��ʹ�ö��ѣ�û���κ����ã�����Ȼ��һ��ʹ�õ���ȫ���ڴ棩��ȫ�����۸��ܡ������������ʹ��mongodb���һ�����ⶼû�з��ֹ��ҿ�Ϊ�㵣�ģ����������������ô˵�İɡ���νʹ�ó������ԣ�������Ԥ���ĵ����������ÿ������Ҫ��XX��С�����������������Ҫ��XXɶ�ģ���Ȼ�����Ҫʹ���õ�ÿһ�����ܵ������ʹ�ó������ԡ�
>>>>
>>>> 2011/3/14 Yurii <yushen...@gmail.com>
>>>>>
>>>>> ���ù��4������ݵ�MySQL����ֵqps����200��Ҳû���Ⱑ
>>>>>
>>>>> 2011/3/14 Yu Xihe <krzy...@gmail.com>:
>>>>> > ��
>>>>> >
>>>>> > ��������֪����������������ļ��ڰ��򼶱��û�����ʮ�򼶱�ɣ�����������дѹ��Ҳû��̫����������Ӳ�û���㹻�Ĵ���ԣ���MySQLӲ�Ź�������Ҳ���󣩡�
>>>>> > -------------------------------------------------
>>>>> > ����������Ӳ�ţ� ����KS��ˮ����Ŀ�� Albert Lee��MySQL �õó����뻯��
>>>>> > �������� ��Ȼ�Ǵ��Ŵ�ְ�Ÿɵġ�
>>>>> >
>>>>> >
>>>>> > 2011/3/14 Yurii <yushen...@gmail.com>
>>>>> >>
>>>>> >>
>>>>> >>
>>>>> >> ��������֪����������������ļ��ڰ��򼶱��û�����ʮ�򼶱�ɣ�����������дѹ��Ҳû��̫����������Ӳ�û���㹻�Ĵ���ԣ���MySQLӲ�Ź�������Ҳ����
>>>>> >
>>>>> >

>>>>> > --
>>>>> > Martin X. YU
>>>>> > http://krzycube.net
>>>>> >
>>>>
>>>>
>>>
>>>
>>
>>
>>
>> --
>> Best Regards
>> LI Daobing
>>
>
>
>
> --

> Tinyfool��Blog http://tiny4.org/blog/

shiwei xu

unread,
Mar 15, 2011, 3:52:47 AM3/15/11
to is...@googlegroups.com, Tinyfool
只是元数据。存 fs 的 entry meta 信息。

2011/3/15 Tinyfool <tiny...@gmail.com>

guo lijing

unread,
Mar 15, 2011, 10:13:10 PM3/15/11
to is...@googlegroups.com, Jeffrey Zhao
目前我和大多数的交流以及自己的使用经验来看,auto-sharding太不成熟,不推荐使用.
1. nosql和关系型数据的优点主要是在于性能和schema free 带来的无压力开发.
2. 从运营上讲,nosql运营肯定是比不上mysql这类的东西.毕竟时日还短,很多工具都得自己开发.

mongodb的一些问题,道哥基本上已经提到了.
1.热点数据比内存大带来的效率问题.看这. 这个也不算是个问题
2. 备份. 主要是直接使用mongodump会带来数据不一致性,这个很头痛. 只能是先干掉个secondary,做snapshot,以后直接读oplog,做增量备份.说起来简单,但是有不少工作要做的.
3.水平扩展. 现在感觉确实不太行.和业界的交流来看,大家都还是采用了手工分片.不管是auto-sharding,还是manual sharding.都会有支持多个 unique index(非 sharding key)的问题.你可以解决,但是代价太大.auto-sharding做备份是相当痛苦,所以,还是用manual sharding
4.replica set 读写压力主要是在primary上,但是如果你不介意secondary 和 primary之间一秒有几十条op差的话,是可以将读的压力分点给secondary
5.频繁更新数据时容易出现大量空洞,最好能定期整理,但缺乏在线整理的支持。这个是很麻烦,我在尝试有没有比较好的解决方案

我但是还是看好mongodb的
1.文档相对比较全
2 社区比较活跃
3. 10gen比其它公司更加努力地在进行推广

如果公司内部有人想考虑nosql, 文档型的数据库,我还是推荐用mongodb,毕竟相对其它的而言,我们已经有不少人在用了,多多少少已经积累了一些经验.




2011/3/15 Jeffrey Zhao <je...@live.com>



--
---------------------------------------
Best Regards
Lijing Guo
MSN:hua...@hotmail.com
GTALK: guol...@gmail.com
Mobile: +86 15869144492
----------------------------------------

Neo

unread,
Mar 15, 2011, 10:40:59 PM3/15/11
to is...@googlegroups.com
非常感谢大家提供的第一手经验和体会,我回头会整理一下。有想法的兄弟继续。。。

-- 
No, I will not fix your computer.

Neo Lee

Tinyfool

unread,
Mar 15, 2011, 10:54:19 PM3/15/11
to is...@googlegroups.com
这个群的价值开始显现了,哈哈

2011/3/16 Neo <neo...@gmail.com>:

--

Reply all
Reply to author
Forward
0 new messages