3

我构建了一个用于数据提取和转换的工具。典型用例 - 以事务方式处理大量数据。

数字是 - 大约 10 秒 - 5 分钟的持续时间,200-10000 行更新(长时间不是由数据库本身而是由事务期间使用的外部服务引起的)。

访问数据库的代理有两种类型 - 多个读取代理和只有一个写入代理(因此,永远不会有多个并发写入)。

交易期间:

  • 读取代理应该能够读取数据库并在当前状态下查看它。
  • 写代理应该能够读取数据库(它可以在事务期间读取和写入)并在新的(尚未提交的)状态下看到它。

对于这种类型的负载,PostgreSQL 是一个不错的选择吗?我知道它使用 MVCC - 所以一般来说应该没问题,但是可以广泛使用长而大的交易吗?

还有哪些开源事务数据库可能是不错的选择(我不限于 SQL)?

附言

我不知道分片是否会影响性能。数据库将被分片。对于每个分片,将有多个读取器和一个写入器,但可以同时写入多个不同的分片。

我知道在交易期间最好不要使用外部服务,但在这种情况下 - 这是目标。该数据库用作一些重型、巨大、缓慢和最终一致的数据处理工具的可靠和一致的索引。

4

2 回答 2

4

巨大的免责声明:一如既往,只有现实生活中的测试才能告诉你真相。

但是,我认为 PostgreSQL 不会让你失望,如果你使用最新版本(至少 9.1,更好的 9.2)并适当地调整它。

我的服务器中的负载有些相似,但 R/W 比稍差:大约 10:1。事务的范围从几毫秒到 1 小时(有时甚至更长),一个事务可以插入或更新多达 10 万行。具有长事务的并发写入者总数可以达到 10 甚至更多。到目前为止一切顺利 - 我真的没有任何严重的问题,性能很棒(当然不会比我预期的差)。

真正有帮助的是我的热工作数据集几乎适合可用内存。

所以,试一试,它应该非常适合您的负载。

于 2013-01-25T09:17:12.730 回答
1

看看这个链接。PostgreSQL 中的最大事务大小

Basically there can be some technical limits on the software side to how large your transaction can be.

于 2013-01-25T14:54:33.430 回答