AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 311421
Accepted
krenova
krenova
Asked: 2022-04-28 21:34:47 +0800 CST2022-04-28 21:34:47 +0800 CST 2022-04-28 21:34:47 +0800 CST

术语数据库迁移

  • 772

我很好奇,当我第一次听说数据库迁移这个术语时,它明确地涉及将整个数据库从一个平台移动到另一个平台。

但是,最近我不得不构建一个需要自己设置数据库的服务器。然后我偶然发现了这个名为 Alembic 的 Python 库。显然,它也被称为“数据库迁移”工具,因为它的唯一目的是不按顺序说,是一种用于数据库的 git。这让我个人感到困惑。有人可以阐明我理解的数据库迁移与作为跟踪数据库更改的工具的数据库迁移之间的区别。

同样,我可能无知并且可能错过了其中一些明显的差异,但如果有人能启发我,我将不胜感激。

migration
  • 4 4 个回答
  • 495 Views

4 个回答

  • Voted
  1. Fat P
    2022-04-28T23:35:48+08:002022-04-28T23:35:48+08:00

    就个人而言,我和你一样理解数据库迁移。但是,我不确定是否有一个单一的正式定义。可能像许多其他计算术语一样,每个术语都有自己的定义。

    在 Wikipedia 中(因为每个人都可以编辑文章,这显示了不同的人如何以不同的方式使用相同的术语):

    • Schema 迁移页面描述了 Alembic 执行的活动。它声称这也称为“数据库迁移”。Ruby on Rails 只是将此活动称为“迁移”
    • 数据迁移页面的“数据库迁移”小节将其描述为“从一个数据库供应商迁移到另一个数据库供应商,或者升级正在使用的数据库软件版本。”,因此它符合我们的理解。
    • 3
  2. Flourid
    2022-04-29T02:32:17+08:002022-04-29T02:32:17+08:00

    迁移一词可以表示“从某物的一个部分移动到另一个部分”。您所描述的(参见 Fat P 的答案)是模式迁移。从该领域的个人经验来看,这些是更常见的迁移类型:

    数据迁移:将数据移动到另一个系统,通常是从一个数据库软件到另一个

    数据库或主机迁移:将数据库移动到另一台主机,但通常在同一个数据库软件上,可能在更高版本上

    架构迁移:更改数据库的架构

    • 2
  3. markp-fuso
    2022-04-29T06:44:05+08:002022-04-29T06:44:05+08:00

    在谈论不同数据库产品之间的“迁移”时(尚未)提及:

    • (某种程度的)人员培训,以促进...
    • 数据库级 SQL 代码的转换(例如,过程、触发器、包)
    • 应用程序级 SQL 代码的转换(例如,查询、连接配置文件)
    • DBA 级别操作的转换(例如,监控、维护、备份/恢复、复制/复制数据);其中很大一部分还包括一些应用程序级别的更改(例如,DBA 脚本环境)

    '当然'转换'一词意味着理解数据库架构、DDL、SQL 等方面的差异。

    • 1
  4. Best Answer
    IMSoP
    2022-04-29T08:40:56+08:002022-04-29T08:40:56+08:00

    虽然这两组工具通常是不同的,但我认为可以说它们都意味着“迁移”。

    对于应用代码,我们一般讲“部署”或“发布”:新版本替换旧版本,通常是一次性完成。我们可能还会谈论打补丁,但这仍然有效地替换了代码。

    对于数据库,我们一般不会删除旧的数据库并创建一个新的。有时,我们只是在现有功能的基础上添加新功能,但通常,我们需要以某种方式转换模式。这种转变在这两种情况下都是“迁移”的意思:

    • 当从一个数据库引擎迁移到另一个数据库引擎时,我们通常必须从旧数据库中提取数据,以某种方式对其进行转换,然后将其插入到新数据库中。
    • 当将实时数据库从应用程序版本 N 所需的模式更改为版本 N+1 所需的模式时,我们可能必须执行类似的操作:获取旧表 X 的内容,填充新表 Y,然后删除表 X .

    两种类型的“迁移”由不同的专业工具支持,但概念是相同的:您为工具提供初始模式和所需模式,以及关于它们如何关联的一些提示;并且该工具生成必要的 SQL 和 DDL 命令以将您的实时数据从一个模式“迁移”到另一个模式。

    正如您所观察到的,一个主要区别是用于管理应用程序所需模式的工具通常还包括或集成版本控制功能。这是因为在这种情况下,您可能会频繁进行小型迁移,并且需要在不同时间管理它们到不同环境的部署。专注于在完全不同的数据库引擎之间迁移的工具不需要过多关注此功能,而是可能具有连续数据复制等功能,您可以在其中并行运行两个数据库。

    • 1

相关问题

  • 迁移大型数据库

  • 新的 SQL 实例和迁移

  • 将 2 列 CSV 文件导入某种数据库....初步规划

  • SQL Server 2008 R2 Ent 试用期过期搬来快递?

  • 您规划数据迁移的工作流程是什么?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve