2KB项目,专业的源码交易网站 帮助 收藏 每日签到

在 MySQL 情况中完成 SchemaSpy

  • 时间:2019-05-17 17:41 编辑:2KB 来源:2KB.COM 阅读:491
  • 扫一扫,手机访问
  • 分享
摘要:
SchemaSpy MySQL 英文原文:Implementing SchemaSpy in your MySQL environment

迩来,我和一帮老客户一同任务,他们让花工夫给他们说一下在他们新情况中运用的新Tools。此中,我发明的一个十分有效的Tools是SchemaSpy。

SchemaSpy是Java开发的的Tools(请求java 5或更高版本的支撑),首要用来剖析数据库中数据模子的元数据,而且能生成基于阅读器可视化的显示。经过点击便可了解数据表的条理构造,父子表关系等,首要经过HTML 链接或许实体关系图来表达。它也被设计成用来协助处理因为束缚而招致的数据库联系关系失败的愚钝错误。

我所爱好ERDTools所能做的一件事是能疾速的生成一个图形表达,来展示数据库阿谁表被援用最多,那些表曾经被替代了是可以删除的(为何要保管你不需求的的数据呢?)。经过了解数据库表关系而不是仅仅看查询语句,这可以放慢的Start程序,而且还增进开发的进程使其更有效。SchemaSpy的另外一个长处是,他是一个号令行Tools,在每次履行后才生成html页面,所以特殊合适用于crontab中,使得模子改动后能主动调剂页面。很不错,是吧?

这个Tools运用起来容易了然,可以帮你做非常多的事。首要是,假如你的数据库有一个外键,你就偷着乐吧,假如没有,也不要太绝境,你另有更多的任务等着你。绝大大多数状况下,SchemSpy可以杰出的完成Task,可是有时分你需求以元数据文件的方式给它一点点的信息。

安装SchemaSpy及其相干

  • 下载 SchemaSpy最新版的jar文件(誊写本文时的版本是5.0.0)
  • 确认你有一个能运转于你的操作平台的Java JRE
  • 你需求一个你所用数据库的Java驱动——我在运用 MySQL Connector/J
  • 安装graphiz

创立 mysql.properties文件

当需求尚不明白时,我爱好如许树立一下,以便让号令行能又短又整洁。这是我为我的Percona Server 5.6.10沙箱所运用的属性文件:

description=MySQL
driver=com.mysql.jdbc.Driver
connectionSpec=jdbc:mysql://127.0.0.1:5610/schemaspy
driverPath=/usr/share/java/mysql-connector-java.jar

Schema的例子:

CREATE TABLE `parent` (
 `parent_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 PRIMARY KEY (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `child_A` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `parent_id` int(10) unsigned DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `child_B` (
 `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
 `parent_id` int(10) unsigned DEFAULT NULL,
 PRIMARY KEY (`id`),
 KEY `parent_id` (`parent_id`),
 CONSTRAINT `child_B_ibfk_1` FOREIGN KEY (`parent_id`) REFERENCES `parent` (`parent_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1

请留意,在表child_A里有一个隐含的经过parent_id作为外键联系关系到parent的关系,但在表child_B中树立了一个显式的外键parent_id。这会影响SchemaSpy怎么区分关系,和你能否需求供给一个提醒。

运转SchemaSpy(有外键)

假如没有元数据文件,你运转SchemaSpy,你将能看到parent 表和child_B表的关系以下图所示:

FK_only

表child_A也能被加出去显示,假如你的标签指出了他们关系框,可是这个凡是只能在你的子表和父表运用完整一样的名字(本例中parent_id)时分才干起用处。你的情况看起里就像是很多商铺,在父表中名字是id,在他其的子表他们代表为parent_id——这情形对开发者可能比较熟习,可是对SchemaSpy基本没有任何的协助。那就是需求元数据文件来大显神通的时分。

implied

设置装备摆设元数据文件

元数据文件是一个XML格局的。下面的设置装备摆设实例是用来把child_A表链接到parent表。

<?xml version="1.0" encoding="UTF-8"?>
<schemaMeta xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://schemaspy.sourceforge.net/xmlschema/2011/02/05/schemaspy.meta.xsd">
<comments>
Main Production Database. Percona, Michael Coburn
</comments>
<tables>
<table name="parent" comments="Parent table">
<column name="parent_id" primaryKey="true">
</column>
</table>
<table name="child_A" comments="Non-FK relationship, implicit relationship to parent">
<column name="id" primaryKey="true">
</column>
<column name="parent_id">
<foreignKey table="parent" column="parent_id"/>
</column>
</table>
</tables>
</schemaMeta>
更多的庞杂设置装备摆设例子的可以 拜访

运转SchemaSpy

下面的语法是衔接MySQL数据库,SchemaSy同时对其他大大多数盛行的关系数占有很好支撑。

java -jar schemaSpy_5.0.0.jar -t mysql -u msandbox_ro -p msandbox -meta schemaspy.meta.xml -o /var/www/schemaspy/

-o选项,标识SchemaSpy的输出文件目次,要断定这个目次可以被webServer所操作。需求说起的是,我经过在jar包地点目次树立一个mysql.properties文件,如许我可以不必输出任何的Server:端口和数据库称号的信息。

阅读SchemaSpy输出

三个表的完好的关系视图以下图所示:

after_metadata_application

扫尾感触

虽然我说起到了关系栏,SchemaSpy最有效的功用。为了不SchemaSpy只要这个功用如许的假象,我要说起一下更多的功用栏:

  •  表——称号,子表数目,父表,列计数,行计数,另有注解--大量用于高条理预览表巨细和一种快捷的办法是,用阅读的搜刮属性定位到特定的表。
  • 限制——列出数据库中明白的外键限制(这不包含经过元数据文件设置装备摆设的限制!)。
  • 异常——基于名字指出可能的字段/表的关系,没有索引的表,标识为可空的字段和独一字段(吐了!),单列表,子增加字段的称号;空字符而不是实践sqlnull值的表;在发作严重错误时分,这可以作为一个大要的数据库反省项,或许细节需求的阅读。
  • 字段——库总一切字段的列表,很便利经过称号挑选来检查能否有疏忽的明白限制,然后把它们写到你的元数据文件中。
  • 奉献——这是一个自在软件,John Currier恳求失掉你的捐赠,普通它能有更多的来由来破费更多的精神和工夫来保护这个软件,而不单单是他妻子的埋怨。

最初,你不要忘了,把设置装备摆设好的SchemaSpy写到crontab来完成主动化。

假如正在运用其他的ERDTools,和SchemaSpy比拟较怎样?请经过评论各抒己见。感谢你有耐烦读完本文。

本文中的一切译文仅用于进修和交换目标,转载请务必注明文章译者、出处、和本文链接。 2KB翻译任务按照 CC 协议,假如我们的任务有进犯到您的权益,请实时联络我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部