Postgres 生成列:注意事项和最佳实践
在使用 PostgreSQL 的生成列的情况下,如果表格正在被复制,需要注意一些重要的事项。这些问题可能会影响复制过程和目标系统中的数据一致性。
关于生成列的问题
-
未通过
pgoutput
发布: 生成列并未通过pgoutput
逻辑复制插件进行发布。这意味着当您将 PostgreSQL 数据复制到另一个系统时,生成列的值不会包含在复制数据流中。 -
主键问题: 如果生成列是您的主键的一部分,这可能会在目标系统上导致去重问题。由于生成列的值并没有被复制,目标系统将无法获取必要的信息来正确识别和去重行。
最佳实践
为了规避这些限制,考虑以下最佳实践:
-
在目标系统上重新创建生成列: 不要依赖复制过程处理生成列,建议使用像 dbt(数据构建工具)或其他数据转换机制在目标系统上重新创建这些列。
-
避免在主键中使用生成列: 在设计将被复制的表时,最好避免将生成列作为主键的一部分。
即将改进的用户界面
在即将发布的版本中,我们计划添加一个用户界面,帮助用户完成以下任务:
-
识别包含生成列的表: 用户界面将具有识别包含生成列的表的功能。这将帮助用户了解哪些表受到此问题影响。
-
文档和最佳实践: 用户界面将包含在复制表中使用生成列的最佳实践,包括如何避免常见陷阱的指导。