Postgres.ai 团队很高兴地宣布发布 3.0 版本的 数据库实验室引擎 (DLE),这是有史以来发布的最先进的开源软件,它为快速增长的项目的开发、测试和故障排除环境提供支持。使用数据库实验室引擎 3.0 通过在软件开发中实施 “左移测试” 方法,为公司提供了竞争优势。
数据库实验室引擎是一项开源技术,可以为 PostgreSQL 实现精简克隆。当您需要扩展开发过程时,精简克隆非常有用。DLE 可以在一台机器上管理数十个独立的数据库克隆,因此每个工程师或自动化过程都可以使用在几秒钟内配置的、无需额外成本的专属数据库。
DLE 3.0 中的主要变更包括:
从 3.0.0 版本开始,DLE 会收集非个人身份的遥测数据。此功能默认启用,但可以关闭。请阅读DLE 文档了解更多信息。保持遥测功能启用可以被视为您对 DLE 开发的贡献,因为它有助于在开源产品开发的道路上做出决策。
接下来,我们将讨论 DLE 3.0 中实现的最受请求的变更 – 所有这些变更都基于真实的用户体验以及来自不断增长的用户和贡献者社区的宝贵反馈。
作为开源软件,DLE 一直配备有 API 和 CLI。至于 UI,它最初仅以 SaaS 的形式提供 – 在 Postgres.ai 上运行的数据库实验室平台。
为了响应 DLE 用户的众多请求,UI 已集成到 DLE 3.0 的核心发行版中。此更改使开源 DLE 对用户更具吸引力,使其更易于使用并简化了在快速增长的公司中的采用。
您可以观看 演示 DLE UI 的短视频。
一些用户告诉我们,有了 UI 后,向同事解释 DLE 可以非常有用的一些用例变得容易得多。如果您喜欢数据库实验室,请尝试从这项变更中受益 – 使用 UI 向其他人展示在几秒钟内克隆大型数据库的概念,并讨论它如何影响您的软件开发、测试过程以及事件故障排除和 SQL 优化。
添加到 DLE 3.0 的另一项功能也是 DLE 用户经常询问的内容。在 3.0 之前,任何 DLE 重启都意味着所有已创建的克隆都会丢失 – 因此 DLE 升级、虚拟机重启,甚至简单的 DLE 重新配置都需要维护窗口,从而中断工作。
DLE 2.0 中引入的 无需重启即可重新配置 DLE 的功能是此问题的一个部分解决方案。但是,这对于 DLE 升级或虚拟机重启的情况没有帮助。现在有了 DLE 3.0,这个问题得到了完全解决
当然,在虚拟机重启的情况下,数据库连接会丢失,需要重新创建。但是,如果您只需要重启 DLE,所有克隆容器都将继续运行,用户现在即使在 DLE 重启期间也可以继续使用它们,而不会有任何工作中断。
在 DLE 2.5 中,我们实现了重置到任何可用快照的功能 – 这是一种方便的方法,可以让您的克隆快速地在时间中穿梭。在 2.5 中,这仅支持“物理”配置模式(从物理备份恢复数据目录 PGDATA,或使用 pg_basebackup
从源获取)。换句话说,它只在你自己管理 Postgres 并且可以复制 PGDATA 或建立与数据库的物理复制连接时才可以使用。这对于 RDS 和其他托管 Postgres 服务的用户来说是不可用的。
对于以“逻辑”数据配置模式运行的 DLE(基于转储/还原 – 适用于大多数托管 Postgres 云产品(如 Amazon RDS)的唯一选项),DLE 2.5 提供了使用 PGDATA 多个副本的功能,这允许在没有停机时间的情况下进行完全刷新。但是,如果 DLE 用户在“旧” PGDATA 版本上运行克隆,他们需要重新创建它们才能解锁下一次完全刷新 – 并且由于端口分配不可预测,这有些不方便。
在 DLE 3.0 中,现在可以将克隆的状态重置为任何数据库版本(快照),即使该版本由在不同池/数据集上运行的 PGDATA 的另一个副本提供。这意味着用户可以让他们的克隆在同一端口上长时间运行,拥有稳定的数据库凭据(包括端口),并且在需要时,一旦完全刷新完成,可以在几秒钟内切换到最新的数据库版本。这使得使用“逻辑”模式的体验几乎与“物理”模式相当。
最初,DLE 设计为在专用机器(物理或虚拟)上运行。但是,许多用户发现它不方便 – 在某些情况下,开发和测试环境需要进行预算优化,因此在单台机器上运行多个 DLE 可能很有意义,特别是如果组织有许多较小的数据库(对于那些处理微服务架构的人来说,这是一个典型的情况)。
DLE 3.0 具有多项改进,简化了在单台机器上运行多个 DLE。特别是,新的配置选项 selectedPool
允许使用单个 ZFS 池并运行多个 DLE,其中每个 DLE 都有自己的数据集。这大大简化了可用磁盘空间的管理:DLE 管理员现在只需要控制一个数字并减少调整磁盘大小的频率,而无需进行分散的空间分配和处理许多“可用磁盘空间”数字。
我们计划在另一篇文章中讨论在单台机器上运行多个 DLE 的各个方面。
非常感谢您的反馈和贡献