Ruby 请教一下至少千万级别数据库的选择方案

xiaoxiao · 发布于 2017年08月02日 · 最后由 xiaoronglv 回复于 2017年08月08日 · 1487 次阅读
5083

由于预估项目未来需要存储的容量可能达到千万级别,数据库初步选择为mongodb,在数据库表设计方面,内部形成了两种意见,一种就是使用单表存储的方式,把所有的用户的行为记录存储到一张collection表里,这样以后这张表可能会很大,但是开发难度低,另一种是根据用户id将用户记录存储到各自的collection中,这样的好处很明显,在插入数据的时候人为的降低了每个collection表的数量,例如一千万条记录分别是属于10个用户的,分给10个collection,每个collection平均分配到一百万条记录,但是缺点显而易见,开发难度大,我看了下mongoid这个gem,没有对collection动态创建的操作,每个model固定对应一个collection,按照第二种设计方案,每创建一个用户就需要动态创建一个collection,这个感觉在rails比较难吧。

tips
现在rubychina的数据库由mongodb转为postgresql。请问下各位postgresql是否适合这个级别量的数据存储。与mongodb的优缺点是什么。未来的业务就是插入和检索。请教一下有大数据方面经验的专家不吝赐教。
共收到 16 条回复
6361

单表就行了呗,PG单核亿级别数据无压力。

De6df3
  1. Ruby China 到不了那个量,顶多到几百万(例如通知表目前 100 多万条),所以不会考虑这种设计
  2. 按 user_id 来分表太细,常见的是 user_id % N (N 是看业务情况),你分太多问题很大的,调整结构,增加索引,都会有问题
  3. 不是什么都能拆的,拆会带来很多副作用,例如无法跨表查询(得配合其他工具辅助,比较复杂)
  4. 分表以后,自增 id 不能依靠表提供的功能,需要自己实现

我们之前做个一次类似的事情,但背后分表是有公司的辅助工具来处理分表的事情,我们只是设计规则,查询方式不表,但其实也非常的麻烦,有很多的限制。

96

千万级别的数据库只要用好索引,什么关系数据库都行

15420

mysql 和pg对千万级记录 都没什么问题

254

用mongodb就是给自己找不自在

1090

这几天项目突破1千万用户了。PG处理起来非常得轻松,5k的RPM。平均数据库相应时间10ms左右。

775

千万级别约等于50M,一条数据1KB也就50GB。

5083

谢谢各位的集思广益

15317

个人感觉选择一个关系型数据库 MySQL 等,索引建的ok,代码写的ok,千万级别还是不成问题的。我原来的项目event表亿级别的索引合适,代码写的效率ok,运行的很好的。

15317

我原来项目的customer表几千万,效率真的不是问题。当然如果进行复杂的分析,还是后面接一个olap,我们当时用的redshift。

96

单表就行了,现在千万不算大表,做好索引就问题不大

96

mongo不如pg,pg性能已经超过mongo了,可自行做评测,千万并不大 ruby的话,用vert.x提升性能,狂飙,足够你用了

96

儲存量不是問題 關鍵是寫入的速度

mongodb要非常小心,速度太快時表有毁掉的危險,至今無解。 pg寫入速度不如mongo,但善用sharding或者clustering還是能滿足大多數場景。

20690

千万级别你慌什么。。

5083

ruby社区总是能给人惊喜😀

1638

我们是 10 Billion 级别了,MySQL 暂时没什么不好的地方。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册