SERVICE PHONE

029-85798995

雷竞技官网raybetapp

雷竞技下载app官网.作为一名老研发我希望 PostgreSQL 能加上

发布时间:2024-04-24 23:53:54 来源:雷竞技app下载raybet 作者:雷竞技官网raybetapp点击量:1
雷竞技下载app官网

  在数据库管理领域,PostgreSQL 以其稳健性和灵活性脱颖而出。然而,随着开发人员在现代应用程序开发的复杂性中航行,还有一些额外功能可以简化他们的工作流。以下是我希望 PostgreSQL 具备的功能,让研发工作更加轻松。

  PG Catalog 仅存储当前最新的 schema。Schema 变更工具通常需要创建外部表来存储 Schema 变更的历史记录。内置的带版本记录的 schema 能带来如下好处:

  一致性。当 schema 变更历史存储在外部时,很难完全保证变更历史与实际 schema 之间的一致性。

  回滚。如果新的 schema 变更引入了问题,版本控制允许安全地回滚到以前稳定状态,最大程度地减少停机时间和对用户的影响。

  流程控制。有了带版本号的 schema 变更状态和历史记录,就更容易强制要求数据库上任何时候只能运行一个 schema 变更。

  多年来,PostgreSQL 一直在这个领域持续迭代,但仍然存在一些情况下变更 schema 会阻塞数据库的读写。pg-osc、reshape 等工具旨在解决这个问题。理想情况下,PostgreSQL 可以封装耗时的 schema 变更过程:

  在开发过程中,最好拥有一个高仿真度的测试环境,尽可能接近生产环境。这里的挑战在于能够快速基于生产环境创建测试数据库(为了合规性,还需要清理敏感数据)。如果 PostgreSQL 可以像 Git 一样具有即时创建分支的能力呢?

  为了防止误删数据,我们通过添加一个 is_deleted 列来,这就是所谓的软删除 (soft-delete) 模式。然而,这给外键、唯一索引带来了额外的复杂性。理想情况下,PostgreSQL 可以允许用户配置一个归档表。被移除的数据首先会被移到归档表中,并在过了配置的保留期 (retention period) 后清除。这可以简化应用逻辑和数据合规工作。

  PostgreSQL 允许向对象添加 SECURITY LABEL。我希望它可以扩展成一个更通用的标签系统,用户可以附加任意的KV 对。这在数据字典、报告和编排开发者工作流中将会很有用。例如:

  这使开发人员能够将存储过程、自定义函数和祖传运维脚本和代码放在一起。因此,他们将采用统一的版本控制最佳实践。类似于 Foreign Data Wrapper (FDW) 的实现方式,PostgreSQL 内核可以提供基础架构,而和特定的版本控制系统集成可以通过扩展来实现。

  关于数据库开发工作流,Git 始终是灵感的源泉,困难之处在于 Git 是为管理无状态的代码而生,如何能移植到管理有状态的数据库上。业界也有不少公司在不断拓展前沿: