【发布时间】:2012-05-06 14:09:36
【问题描述】:
我有一个问题,我需要非常快速地将大量数据(5+ 十亿行)加载到数据库中(理想情况下少于 30 分钟,但越快越好),最近有人建议我研究 postgresql(我mysql 失败,正在查看 hbase/cassandra)。我的设置是我有一个生成大量数据的集群(目前有 8 个服务器),我正在考虑在集群中的每台机器上本地运行数据库,它在本地快速写入,然后在最后(或在整个数据生成过程中)数据是合并在一起。数据没有任何顺序,所以我不在乎它在哪个特定的服务器上(只要它最终在那里)。
我的问题是,有没有什么好的教程或地方可以学习 PostgreSQL 自动分片(我找到了像 sykpe 这样的公司做自动分片但没有教程的结果,我想自己玩这个)?我正在尝试做的事情可能吗?因为数据没有任何顺序我打算使用自增ID号,如果合并数据会导致冲突(这不再是一个大问题了)?
更新:下面 Frank 的想法消除了我所询问的自动递增冲突问题。现在的问题基本上是,我如何了解自动分片,它是否支持将数据分布式上传到多个服务器?
【问题讨论】:
-
我已经在 postgresql.org/docs/8.1/static/populate.html 这看起来也很有希望:pgbulkload.projects.postgresql.org
-
I was going to use auto-incrementing ID number, will that cause a conflict if data is merged?只需增加 10,并从不同的偏移量开始。服务器 1 使用 ids 1,11,21,31;服务器 2 使用 ids 2,12,22,32 -
@FrankFarmer 感谢您的链接和重新:增量的好主意。我认为这消除了一些复杂性,然后我猜这个问题只与自动分片和分布式上传有关。
-
请注意,增量和偏移量可以通过序列轻松完成:postgresql.org/docs/current/static/sql-createsequence.html
标签: database postgresql partitioning sharding