欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL結合使用數(shù)據(jù)庫分析工具SchemaSpy的方法

 更新時間:2015年06月25日 11:33:46   投稿:goldensun  
這篇文章主要介紹了MySQL結合使用數(shù)據(jù)庫分析工具SchemaSpy的方法,需要的朋友可以參考下

 近來,我和一幫老客戶一起工作,他們讓花時間給他們說一下在他們新環(huán)境中使用的新工具。其中,我發(fā)現(xiàn)的一個非常有用的工具是SchemaSpy

SchemaSpy是Java開發(fā)的的工具(要求java 5或更高版本的支持),主要用來分析數(shù)據(jù)庫中數(shù)據(jù)模型的元數(shù)據(jù),并且能生成基于瀏覽器可視化的顯示。通過點擊就可了解數(shù)據(jù)表的層次結構,父子表關系等,主要通過HTML 鏈接或者實體關系圖來表達。它也被設計成用來幫助解決由于約束而導致的數(shù)據(jù)庫關聯(lián)失敗的遲鈍錯誤。

我所喜歡ERD工具所能做的一件事是能快速的生成一個圖形表達,來展現(xiàn)數(shù)據(jù)庫那個表被引用最多,那些表已經(jīng)被代替了是可以刪除的(為什么要保存你不需要的的數(shù)據(jù)呢?)。通過了解數(shù)據(jù)庫表關系而不是僅僅看查詢語句,這可以加快的開始步伐,并且還促進開發(fā)的過程使其更有效。SchemaSpy的另一個優(yōu)點是,他是一個命令行工具,在每次執(zhí)行后才生成html頁面,所以特別適合用于crontab中,使得模型改變后能自動調整頁面。很不錯,是吧?

這個工具使用起來簡單明了,可以幫你做很多的事。主要是,如果你的數(shù)據(jù)庫有一個外鍵,你就偷著樂吧,如果沒有,也不要太絕境,你還有更多的工作等著你。絕大多數(shù)情況下,SchemSpy可以出色的完成任務,但是有時候你需要以元數(shù)據(jù)文件的形式給它一點點的信息。

安裝SchemaSpy及其相關

    下載 SchemaSpy最新版的jar文件(書寫本文時的版本是5.0.0)
    確認你有一個能運行于你的操作平臺的Java JRE
    你需要一個你所用數(shù)據(jù)庫的Java驅動——我在使用 MySQL Connector/J
    安裝graphiz

創(chuàng)建 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作為外鍵關聯(lián)到parent的關系,但在表child_B中建立了一個顯式的外鍵parent_id。這會影響SchemaSpy如何辨別關系,以及你是否需要提供一個提示。
 運行SchemaSpy(有外鍵)

如果沒有元數(shù)據(jù)文件,你運行SchemaSpy,你將能看到parent 表和child_B表的關系如下圖所示:

2015625113102518.png (300×134)

表child_A也能被加進來顯示,如果你的標簽指出了他們關系框,但是這個通常只能在你的子表和父表使用完全一樣的名字(本例中parent_id)時候才能起作用。你的環(huán)境看起里就像是許多商店,在父表中名字是id,在他其的子表他們代表為parent_id——這情景對開發(fā)者可能比較熟悉,但是對SchemaSpy根本沒有任何的幫助。那就是需要元數(shù)據(jù)文件來大顯身手的時候。

2015625113131945.png (300×110)

 配置元數(shù)據(jù)文件

元數(shù)據(jù)文件是一個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數(shù)據(jù)庫,SchemaSy同時對其他大多數(shù)流行的關系數(shù)據(jù)有很好支持。

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

-o選項,標識SchemaSpy的輸出文件目錄,要確定這個目錄可以被web服務器所操作。需要提及的是,我通過在jar包所在目錄建立一個mysql.properties文件,這樣我可以不用輸入任何的服務器:端口以及數(shù)據(jù)庫名稱的信息。
瀏覽SchemaSpy輸出

三個表的完整的關系視圖如下圖所示:

2015625113149215.png (300×254)

收尾感想

盡管我提及到了關系欄,SchemaSpy最有用的功能。為了避免SchemaSpy只有這個功能這樣的假象,我要提及一下更多的功能欄:

  •      表——名稱,子表數(shù)量,父表,列計數(shù),行計數(shù),還有注解--大量用于高層次預覽表大小以及一種快捷的方法是,用瀏覽的搜索屬性定位到特定的表。
  •     限制——列出數(shù)據(jù)庫中明確的外鍵限制(這不包括通過元數(shù)據(jù)文件配置的限制?。?/li>
  •     異?!诿种赋隹赡艿淖侄?表的關系,沒有索引的表,標識為可空的字段和唯一字段(吐了!),單列表,子增長字段的名稱;空字符而不是實際sqlnull值的表;在發(fā)生重大錯誤時候,這可以作為一個大體的數(shù)據(jù)庫檢查項,或者細節(jié)需求的瀏覽。
  •     字段——庫總所有字段的列表,很方便通過名稱篩選來查看是否有忽略的明確限制,然后把它們寫到你的元數(shù)據(jù)文件中。
  •     貢獻——這是一個自由軟件,John Currier請求得到你的捐獻,一般它能有更多的理由來花費更多的精力和時間來維護這個軟件,而不僅僅是他老婆的抱怨。

最后,你不要忘了,把配置好的SchemaSpy寫到crontab來實現(xiàn)自動化。

如果正在使用其他的ERD工具,和SchemaSpy相比較怎么樣?請通過評論暢所欲言。謝謝你有耐心讀完本文。

相關文章

  • 如何優(yōu)雅安全的備份MySQL數(shù)據(jù)

    如何優(yōu)雅安全的備份MySQL數(shù)據(jù)

    這篇文章主要介紹了如何優(yōu)雅安全的備份MySQL數(shù)據(jù)的相關資料,需要的朋友可以參考下
    2022-10-10
  • MYSQL數(shù)據(jù)庫導入數(shù)據(jù)時出現(xiàn)亂碼的解決辦法

    MYSQL數(shù)據(jù)庫導入數(shù)據(jù)時出現(xiàn)亂碼的解決辦法

    我是用的最后一種方法,前面三種解決MYSQL導入數(shù)據(jù)亂碼的方法沒試過,東莞SEO推薦大家直接使用第四種方法處理MYSQL導入中文數(shù)據(jù)時的亂碼問題。
    2011-01-01
  • Mysql導入導出時遇到的問題解決

    Mysql導入導出時遇到的問題解決

    這篇文章主要給大家介紹了關于Mysql導入導出時遇到問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Mysql具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • MySQL 相關的環(huán)境變量

    MySQL 相關的環(huán)境變量

    所有使用mysqlclient客戶庫與服務器通信的MySQL客戶使用下列環(huán)境變量
    2009-06-06
  • Mysql之如何創(chuàng)建函數(shù)問題

    Mysql之如何創(chuàng)建函數(shù)問題

    這篇文章主要介紹了Mysql之如何創(chuàng)建函數(shù)問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mysql關于or的索引的問題及解決

    mysql關于or的索引的問題及解決

    這篇文章主要介紹了mysql關于or的索引的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • mysql存儲過程 游標 循環(huán)使用介紹

    mysql存儲過程 游標 循環(huán)使用介紹

    今天分享下自己對于Mysql存儲過程的認識與了解,這里主要說說大家常用的游標加循環(huán)的嵌套使用
    2012-11-11
  • MySQL使用LOAD_FILE()函數(shù)方法總結

    MySQL使用LOAD_FILE()函數(shù)方法總結

    在本篇文章里小編給大家分享了關于MySQL使用LOAD_FILE()函數(shù)方法和相關知識點,需要的朋友們學習下。
    2019-03-03
  • 詳解mysql?bit/json/enum/set?的數(shù)據(jù)存儲

    詳解mysql?bit/json/enum/set?的數(shù)據(jù)存儲

    這篇文章主要介紹了mysql?bit/json/enum/set?的數(shù)據(jù)存儲,探究的主要內容為 int 類類型的存儲, 浮點類類型的存儲, char 類類型的存儲, blob 類類型的存儲, enum/json/set/bit 類類型的存儲,需要的朋友可以參考下
    2023-09-09
  • Mysql數(shù)據(jù)庫時間查詢舉例詳解

    Mysql數(shù)據(jù)庫時間查詢舉例詳解

    在項目開發(fā)中,一些業(yè)務表字段經(jīng)常使用日期和時間類型,而且后續(xù)還會牽涉到這類字段的查詢,下面這篇文章主要給大家介紹了關于Mysql數(shù)據(jù)庫時間查詢的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-05-05

最新評論