【问题标题】:Scaling Postgres horizontally水平缩放 Postgres
【发布时间】:2016-04-22 05:29:06
【问题描述】:

假设您在 postgresql 数据库之上运行您的业务。一段时间后,您获得了如此多的流量,以至于单个 postgresql 实例无法处理,因此您希望添加更多实例(水平扩展)以应对增长。

您的数据是相关的,因此可能无法切换到某些键/值解决方案。

你会如何用 postgresql 来做呢?

PS。 Postgresql 版本:9.5

【问题讨论】:

  • 使用主/从复制(具有多个从属)和负载均衡器(例如 pgPool)postgresql.org/docs/current/static/high-availability.html
  • 你可以看看 Postgres-XL 来使用分片,但要注意它的局限性postgres-xl.org
  • @DmitrySavinkov 在哪里可以找到有关 Postgres-XL 限制的更多信息?
  • @toasteez 我们早在 2014 年就使用了基于 Postgres 9.3 的 PostgresXL。现在他们宣布了 XL 的 v9.5 基础,这要好得多。在我们的应用中,我们实现了繁重的触发逻辑,它对我们来说是一个主要的阻碍,所以它可能不是你的用例的阻碍。
  • citusdb 到目前为止对我们来说工作得很好。

标签: database postgresql horizontal-scaling


【解决方案1】:
  1. 如果是读取繁重的工作负载,那么您应该只添加副本。根据需要添加尽可能多的副本来处理整个工作负载。您可以以循环方式平衡副本之间的所有查询。

  2. 如果是写繁重的工作负载,那么您应该将数据库分区到许多服务器上。您可以将不同的表放在不同的机器上,也可以将一张表分片到多台机器上。在后一种情况下,您可以通过主键的范围或主键的哈希甚至垂直的行来对表进行分片。在上述每种情况下,您都可能失去事务性,因此请小心并确保事务更改和查询的所有数据都驻留在同一台服务器上。

【讨论】:

  • 当你说你可能会失去事务性时,你能定义“事务性”吗?
猜你喜欢
  • 2015-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-21
  • 1970-01-01
  • 2015-05-11
  • 2013-03-23
  • 2015-09-23
相关资源
最近更新 更多