加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

postgresql – 架构更改和数据迁移到实时数据库的最佳实践,无需

发布时间:2020-12-13 16:23:22 所属栏目:百科 来源:网络整理
导读:如何在不停机的情况下对实时数据库进行架构更改? 例如,假设我有一个PostgreSQL数据库,其中包含各种用户数据(如电子邮件地址等),这些数据都与特定用户相关联.如果我想将电子邮件地址移动到新的专用表,我必须更改架构,然后将电子邮件数据迁移到新表.如何在不
如何在不停机的情况下对实时数据库进行架构更改?

例如,假设我有一个PostgreSQL数据库,其中包含各种用户数据(如电子邮件地址等),这些数据都与特定用户相关联.如果我想将电子邮件地址移动到新的专用表,我必须更改架构,然后将电子邮件数据迁移到新表.如何在不停止写入原始表的情况下完成此操作?当数据从旧表写入新表时,新数据将继续写入旧表并被遗漏,对吧?

我想这个问题经常出现,但我找不到任何标准的解决方案来处理它.

This article处理问题,但我并不真正理解第3步.他说要写入两个表,然后将旧数据从第一个表迁移到新表.您如何确保只迁移旧数据?

(我用的是PostgreSQL on Heroku.)

你几乎已经得到了答案:

>并行创建新结构
>开始写两个结构
>将旧数据迁移到新结构
>只写和读新结构
>删除旧列

至于第3步,使用这样的东西(在一次交易中):

插入尚未存在的内容:

INSERT INTO new_tbl (old_id,data)
SELECT old_id,data
FROM   old_tbl
WHERE  NOT EXISTS (SELECT * FROM new_tbl WHERE new_tbl.old_id = old_tbl.old_id);

在此期间更新已更改的内容:

UPDATE new_tbl
SET    data  = old.data
USING  old_tbl
WHERE  new_tbl.old_id = old_tbl.old_id
AND    new_tbl.data IS DISTINCT FROM old_tbl.data;

不会触及新数据,因为它在两个地方都是相同的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读