Bra*_*o76 13 sql postgresql sharding
我们有一个带有Postgresql 9.1数据库的电子商务门户.一个非常重要的表目前有3200万条记录.如果我们想要提供所有项目,这个表将增长到3.2亿条记录,主要是日期.哪个会很重.
所以我们正在考虑水平分区/分片.我们可以将此表中的项目划分为12个横向(每月1个).这样做的最佳步骤和技术是什么?数据库中的水平分区是否足够好,还是我们必须开始考虑分片?
a_h*_*ame 24
虽然3.2亿不小,但它也不是很大.
它在很大程度上取决于您在桌面上运行的查询.如果您始终在查询中包含分区键,那么"常规"分区可能会起作用.
这方面的一个例子可以在PostgreSQL wiki中找到:http:
//wiki.postgresql.org/wiki/Month_based_partitioning
该手册还解释了一些分区的注意事项:http:
//www.postgresql.org/docs/current/interactive/ddl-partitioning.html
如果您正在考虑分片,您可能会看到Instagram(由PostgreSQL提供支持)如何实现:
http://instagram-engineering.tumblr.com/post/10853187575/sharding-ids-at-instagram
如果您主要具有读取查询,则另一个选项可能是使用流复制来设置多个服务器并通过连接到热备用以进行读取访问并连接到主服务器以进行写访问来分发读取查询.我认为pg-pool II可以(有些)自动完成.这可以与分区结合使用,以进一步减少查询运行时.
如果您喜欢冒险并且没有立即需要这样做,您可能还会考虑Postgres-XC,它承诺支持透明的水平缩放:http:
//postgres-xc.sourceforge.net/
目前还没有最终版本,但看起来这并不需要太长时间