dbff/dbff-core

数据库差异

dev-master 2014-03-27 20:42 UTC

This package is not auto-updated.

Last update: 2024-09-28 15:00:22 UTC


README

Build Status Code Coverage Scrutinizer Code Quality Still maintained

Dbff

Dbff (db和diff的混合,发音为dibiff) — 比较数据库结构的工具。目前仅适用于MySQL。

Dbff可以比较

  • 数据库
  • 索引
  • 数据类型

显然,它不涵盖MySQL结构的100%。我们只支持到目前为止需要的部分。但你可以改进这个库,欢迎你的贡献 ;)

Dbff结构

Dbff由几个解耦的部分组成

  • 元素 — 你可以创建它,用任何值填充它,并比较
  • 解析器 — 将从'show create'语句中获取的元素的字符串表示转换为命名值数组。你可以使用这些值来自定义,例如初始化元素或制作自己的差异
  • 构建器 — 从字符串直接创建元素的辅助工具。它将解析器和其它构建器作为依赖项,并使用它们来构建元素
  • dbffer — dbff工具本身。它接受两个元素,并以数组形式生成一些差异

元素

共有6个元素

  • typeprop — 某种类型的属性组
  • 类型
  • 索引
  • 数据库

解析器

我们为每个元素都有一个解析器

  • 类型解析器(用于类型和typeprop) — 从列中解析类型定义
  • 索引解析器 — 从"create table"语句中解析索引定义
  • 列解析器 — 从"create table"语句中解析列定义
  • 表解析器 — 解析整个"create table"语句
  • 数据库解析器 — 解析"create database"语句

解析器返回结构体 — 具有特定键的数组。查看架构以了解结构体键。

所有解析器都有parse方法。

构建器

解析器返回结构体,因此可以用来填充元素。手动这样做很无聊。因此构建器为您完成这项工作。它们可以直接从字符串创建元素。

我们为每个元素都有一个构建器

  • 类型构建器
  • 索引构建器
  • 列构建器
  • 表构建器
  • 数据库构建器

所有构建器都有createFromString方法。

复杂的构建器有很多依赖项,因此为了更容易地创建默认构建器,请使用DefaultBuilderFactory

Dbffer

Dbffer可以使用compareElements方法比较元素,使用compareCollections方法比较集合。

依赖项

此包没有依赖项。其组件是解耦的。你可以只使用解析器,或者你可以手动填充元素,或者你可以添加自己的元素,或者你可以实现自己的解析器,同时仍然使用Dbff。

示例

文档正在开发中。请参阅此包中提供的example.php文件。

TODO

  • 文档和更多示例
  • dbff-core — 此包,主要功能
  • dbff-altr — 从dbff输出构建alter语句的工具
  • dbff-ignr — 忽略器工具,用于在dbff输出中忽略某些模式的部分(例如,你不想比较字符集)
  • dbff-drvr — 用于从提供的数据库连接直接创建dbff的工具
  • dbff-humn — 将dbffer的输出人性化(而不是难以理解的数组)
  • dbff-dbff — dbff对象而不是数组
  • dbff-full — 所有dbff子包的构建,功能强大 :)