MongoDB大数据下是否需要分表 5C
    目前公司使用MongoDB存储业务数据,每天产生2000万条左右,数据保存90天,

这样单独一张表会存在20亿左右数据。
为保证数据操作(增、删、改、查)的效率,是否需要对表进行分表?
一段时间生成一张新表,以时间戳为后缀,这样是否可以提高效率,或者有其他方案?

4个回答

可以进行分表 ,Mongodb对数据的检索性能虽然很强,但是也抵不住一张表的数据超过20亿 ,但是 如果数据只是在20亿左右浮动 可以不考虑分表 查询恼火点

不需要,mongo本身就支持对数据做分片,自带分布式基因。谢谢。

个人认为mongodb没有分表的必要,你说的分表等于是用SQL型的思维做NoSQL的事。
mongodb的集群模式可以轻易的实现分布式存储,而且技术和架构已经逐渐成熟(推荐3.2及以上版本),我们公司已经上了生产。
我拿百度网盘做比喻。
因为网盘的操作都是在用户内部,涉及用户间的操作占比较少,所以可以优化为,按用户分片,来提高并发度。具体做法:
(1)mongodb集群
(2)shard key=userId(最好做成联合片键,防止僵尸块,(userId, fileId))
(3)TTL(这个mongodb自带的功能可以实现你说的保存90天,而无需人工干预数据库)
当然,这是按用户来分片,你可以根据业务从其它维度考虑,如时间。
(更多mongodb问题,欢迎一起交流学习)

为了加速查询,可以分表,每个表按年月日进行新增表操作,查询的时候就可以拼一下表名就可以查询了。

另外也可以配合redis进行数据缓存。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐