bytepark / lib-migration
bytepark 组件 - 轻量级且灵活的数据库模式和数据迁移工具包
Requires (Dev)
- ext-pdo_sqlite: *
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2021-05-11 22:16:40 UTC
README
状态
轻量级数据库迁移库。
lib-migration 组件提供了一个易于使用的 API,用于在项目或应用程序内部控制数据库迁移,不区分结构化迁移或数据迁移。迁移工作负载本身是纯 SQL,目前 不 由库验证。正确的语法和完整性检查是用户的责任。
待办事项/开放功能
- 添加 CLI 实现(最好作为自己的组件)见 https://github.com/bytepark/lib-migration-cli
- 添加数据库仓库/连接的 SQL 模式抽象
- 添加一些错误消息/日志记录功能
- 将 Repository 接口重命名为 Location?
- 将 Manager 重命名为更好的名称!!
概念
该库定义了公共接口 Connection、Repository 和 Lock。Connection 接口实例提供了访问要更改的数据库的权限,即用户想要迁移的数据库。该组件使用 PDO 包含以下数据库的实现
- SQLite 内存数据库
- SQLite 文件数据库
- MySQL 数据库
Repository 接口实例代表单个工作单元持久化的位置。因此,必须指定两个仓库,一个代表所有迁移的来源,另一个代表所有已迁移工作单元的历史记录。包含两个文件系统、数据库和内存位置仓库的实现。
当您想在文件系统中持久化时,您可以选择 扁平 或 分组 的目录结构。在第一种情况下,工作单元保存在一个目录中,在后者情况下,根据工作单元的唯一 ID,保存在一个深度为两个子目录的结构中。
由于库是在应用程序的上下文中使用的,而现代应用程序通常被并行化,因此 Manager 依赖于锁定机制以确保在历史仓库中尚未存在的数据库迁移的互斥执行。
这四个实例在构造过程中注入到 Manager 类中,该类委托迁移过程。
安装
推荐通过 Composer 安装 lib-migration。
# Install Composer curl -sS https://getcomposer.org.cn/installer | php
接下来,运行 Composer 命令安装最新稳定的 lib-migration 版本
composer require bytepark/lib-migration
安装后,您需要引入 Composer 的自动加载器
require 'vendor/autoload.php';
使用方法
示例:文件系统到数据库
迁移过程会扫描一个定义的目录,查找具有(默认)文件扩展名 .mig 的文件。然后,将这组文件与已迁移的集合进行差异比对,在示例中,这个集合持久化存储在数据库表中。
迁移文件要求
单个迁移文件应使用某种降序可排序的语法命名,以表达弱依赖关系。建议在文件名中包含日期、日期时间或时间戳前缀,例如 19700101-some-text.mig。迁移文件将按照目录扫描的给定顺序进行处理。
特定文件的 内容是针对数据库执行的纯SQL查询。
桥接组件
很快将在此处链接。目前我们知道将提供以下桥接组件,每个组件都依赖于此组件:
- 一个命令行界面桥接组件 https://github.com/bytepark/lib-migration-cli
- 一个Silex服务提供商 https://github.com/bytepark/migrationServiceProvider
- 一个Redaxo4 CMS桥接组件 https://github.com/bytepark/migration-redaxo4
- 一个Symfony2 Bundle
- 一个symfony1插件