schemaspy 逆向输出数据库设计

举报
oneliner 发表于 2020/11/24 17:35:46 2020/11/24
【摘要】 请用5分钟阅读本文,然后立即投入实践,养成良好的设计习惯,你将节约无数宝贵的屎山打滚时间。先澄清几个误区:schemaspy 不是做schema 设计的:设计还是要自己写,并且有条件的话在开发之前写清楚,schemaspy 是抽取文档并展示、索引的工具我的屎山数据库没有设计,schemaspy 对我没用:现在是你最需要schemaspy 的时候,它可以逆向生成一份超出你预期的基础文档sche...

请用5分钟阅读本文,然后立即投入实践,养成良好的设计习惯,你将节约无数宝贵的屎山打滚时间。

先澄清几个误区:

  1. schemaspy 不是做schema 设计的:设计还是要自己写,并且有条件的话在开发之前写清楚,schemaspy 是抽取文档并展示、索引的工具

  2. 我的屎山数据库没有设计,schemaspy 对我没用:现在是你最需要schemaspy 的时候,它可以逆向生成一份超出你预期的基础文档

  3. schemaspy会改善我的数据库设计:有可能。准确说 schemaspy 只是告诉你数据库什么样,至于改不改还是你说了算,它给了一些建议。


schemaspy 有点像doxygen , 都是在事后清理的时候排上用场。使用上 schemaspy 更简单一些,只要基本的6项数据库连接信息(ip,端口,用户名,密码,数据库名,数据库类型),就可以为本地或者服务端正在运行的数据库生成详细的schema信息和基本的诊断。


下载 schemaspy

多数软件首选github, 但是这个是例外, 试过几次,我认为最简单的方法是官网下载 jar 包。


image.png


收集数据库6项基本信息


schemaspy 需要连接到正在运行的数据库,所以以下信息是必须的:

  1. ip

  2. 端口

  3. 用户名

  4. 密码

  5. 数据库名

  6. 数据库类型(oracle, postgres, mysql 等)


注意,数据库必须是正在运行且通过以上信息能够访问的,但是不要求数据库与schemaspy 运行在同一台机器。


连接 jar

schemaspy.jar 是个jar 包,除了它, 还需要数据库对应的连接 jar 包。

举例来说,我的目标数据库是 postgres 类型, 我在官网下载了  postgresql-42.2.1.jar,  一般来说,大版本匹配就可以。

image.png

生成文档


 java -jar schemaspy-6.1.0.jar -t pgsql  -dp postgresql-42.2.1.jar -db test_1  -host 100.xxx.xxx.195 -port 54xx  -u root -p YOURPASSWD -o schema


文档生成速度非常快,到这一步,按照命令行指定,所有离线文档都打包在 schema 文件夹, 和 doxygen 一样, 可以下载到本地,打开index.html , 即可进入文档首页。更推荐将文档同步到web服务器,开放给团队访问。


文档结构

走马观花看一下输出

image.png

table/columns

基本信息,亮点是可以多格式导出,比如xlsx。

image.png


orpahn tables

孤儿表的识别比较实用,不光列出表名,基础信息也有了。  码太厚, 供示意用。

image.png

relationship

这是我最喜欢的,也是多数人用schemaspy 的理由。真正体现了事后补救的功能。

image.png


在全局 ER 图里, 默认只显示主键和索引键,点击 '...' 可以展开详细的单表视图, 对比较长的加工链条,可以看表的二度连接,这也是恰到好处的功能。

image.png

anomalies

这个仅供参考,不是schemaspy 的重点。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。