【问题标题】:Use Azure Blob storage for postgresql database将 Azure Blob 存储用于 postgresql 数据库
【发布时间】:2017-06-01 18:29:52
【问题描述】:

Azure Blob 存储的最大限制为 500TB。这已经足够了,因为我拥有(或将拥有)大量数据。

我想在 Azure 中设置一个安装了 PostGres 的服务器,但我不想使用本地 SSD/HDD,因为大小是有限的......而且我可以调整磁盘大小的唯一方法(如果我需要),就是关闭 VM 并将一些神秘代码输入 PowerShell。

是否可以告诉 Postgres 使用 Azure blob 存储? 如果是这样,我该怎么做? 如果没有,我有什么选择?我如何在需要更多空间的情况下扩展我的 HDD/SDD,而无需我的任何干预?

【问题讨论】:

  • 您是否查看过 Azure Postgres SQL 即服务选项?它是最近宣布的 - azure.microsoft.com/en-in/services/postgresql
  • 从 S3 或 Azure Blob 等对象存储运行 RDBMS 之类的东西是完全不切实际的。如果你能克服文件系统语义问题,它会以蜗牛的速度运行,并且祝你好运,让它安全崩溃。
  • 虚拟机上的磁盘实际上是存储为具有保证 IO 和延迟的 blob 的虚拟磁盘。这就是为什么它们比“普通”blob 存储更昂贵的原因。它们可以在需要时增加尺寸

标签: postgresql azure azure-storage azure-blob-storage


【解决方案1】:

您不能通过 Postgres 直接读取/写入 blob 存储,因为它需要一个正常的文件系统(具有正常的文件 I/O 操作)。为此,需要对 Postgres 存储系统进行修改才能完成这样的事情。

从普通操作系统文件系统的角度来看,最大存储占用空间将受到连接到虚拟机的磁盘数量(位于页面 blob 中)的限制。每个核心最多 2 个磁盘,每个磁盘最多 4TB(更大的磁盘大小是 2017 年 5 月的新产品)。这为您提供了 8TB(单核)到 128TB(32 核)的范围。而且您可能需要对这些磁盘进行 RAID(除非 Postgres 支持 JBOD 模型)。

正如@Gaurav 所建议的,您也可以使用 Postgres-as-a-Service。目前,在预览版中,该服务的每个数据库限制为 1TB。最终会提供更大的尺寸。

【讨论】:

  • PostgreSQL 不关心磁盘的 FWIW 排列方式。只要您提供具有合理 POSIX 语义且尊重 fsync() 的文件系统,它就会很高兴。底层存储可以是软件 RAID、硬件 RAID、独立磁盘、JBOD 跨接、SAN、地狱,甚至 NFS。
  • @CraigRinger - 感谢您的澄清 - 很高兴知道。尽管如此,您仍需要将存储连接到磁盘(postgres 将无法通过 blob 存储 REST API 直接交互,因为它从未设计为这样做)。因此,无论是在 Windows 还是 Linux 中,您都可以像在任何其他磁盘中一样格式化/安装/访问它们。
  • @CraigRinger blob 存储在所有提供商中甚至都没有文件系统。连接到 VM 的磁盘本质上是存储为 blob 的虚拟磁盘
猜你喜欢
  • 2020-07-01
  • 1970-01-01
  • 2018-01-11
  • 2017-08-03
  • 2018-04-13
  • 2017-12-16
  • 2019-11-30
  • 2020-11-15
  • 2021-01-26
相关资源
最近更新 更多