千万级数据的表应该怎么设计分表规则?

2015-05-26 14:48:12 +08:00
 justlikemaki

最近在和同事一起创业,是移动互联网的项目。现在还是设计初期,考虑到后期可能的用户增长,如果用户数达到了千万级,对一张表进行查询肯定会慢,但是要分表可能会有其它问题。我考虑的分表,如果是按月份分,后期的数据一个月内可能就会达到千万级,那这样分就没什么意义了。如果是先创建好所有的分表,按照平均的规则写入到各个表中,查询的时候就不知道怎么查了。特地来这里问问各位,遇到这种问题应该怎么解决呢?

2166 次点击
所在节点    数据库
39 条回复
h2ero
2015-05-26 16:15:27 +08:00
过早优化不太好。
immjun
2015-05-26 16:19:02 +08:00
@mhycy 试试 PostgreSQL 如何 ?
lyragosa
2015-05-26 16:50:51 +08:00
过度优化是万恶!
wdongxv
2015-05-26 16:54:16 +08:00
现在2千多万,还没分表,啥时候撑不住再分
zhicheng
2015-05-26 16:58:22 +08:00
才千万。。。你们也太小瞧数据库了。
xiaoyuvps
2015-05-26 16:59:33 +08:00
到500W再研究不好么?
a398058068
2015-05-26 17:15:51 +08:00
这个不着急。 主从复制 , 分库分表。 这些后面弄都可以。 特别是用户表这种一般都有自增长主键 要做分库分表很简单 再加个主从 主写从读 千万不是事
E2gCaBAT5I87sw1M
2015-05-26 17:34:52 +08:00
选 PostgreSQL,另外:先上线吧 我觉得你们想多了。
server
2015-05-26 17:36:38 +08:00
不要过早优化
yanze0613
2015-05-26 17:42:42 +08:00
等你们如果用户数达到了千万级,之前,雇个专业的架构师和DBA吧
wadezhao
2015-05-26 17:50:13 +08:00
楼主等你有了一千万用户,我确信解决方案自己biu的就蹦出来了,不是开玩笑…………
MarsWang
2015-05-26 20:28:41 +08:00
千万级单表没啥问题,量上来在说吧
wmttom
2015-05-26 20:32:00 +08:00
@gamexg
现在在用 InfluxDB 放 API 的请求统计 event,感觉还不错,用的是 StatsD+InfluxDB+Grafana,自己订制的 gunicorn 自动收集每个 API 的请求统计数据。
frankzeng
2015-05-26 20:32:57 +08:00
@gamexg 一个月一个分区呗,超过一定时间导出来,压缩成文件,或是直接干掉。
tangooricha
2015-05-26 22:38:19 +08:00
@justlikemaki 在我们这,这个级别已经进hadoop集群了。
billwang
2015-05-27 08:18:37 +08:00
先把现在做好吧,这是真心话
gamexg
2015-05-27 16:20:13 +08:00
@publicID001 感觉数量多了会挂掉...
@mhycy 印象中mongodb很耗内存,做设备日志记录的时候测试一下。
@wmttom 看着正合适,用的时候细看下...
@frankzeng 经典的解决方案。
rrrrutdk
2015-05-29 14:16:10 +08:00
我就是这样过度优化结果什么也没做出来。

看你的业务规则吧,比如用户登录时需要选定城市或部分等,如果没有的话,按一定的前缀分表:

例如:

如果你的网站支持手机登录,即手机号与用户编号绑定的话,使用号段分表,158, 153, 189等等,查询数据库前自己先判断号段再选择表名;

如果你的网站使用登录名,可以以字母表分表,a-z0-9等等,同样在查询前先判断登录名第一位。当然,要是觉得两位也能接受也行,即aa, ab, ac, .....分表;

如果同时支持手机号与登录名,先手机号再登录名按上述处理。
rrrrutdk
2015-05-29 14:17:23 +08:00
靠,我又没仔细看就在这里BB。钻地中……

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/193826

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX