最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

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

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

安裝SchemaSpy及其相關(guān)

    下載 SchemaSpy最新版的jar文件(書寫本文時(shí)的版本是5.0.0)
    確認(rèn)你有一個(gè)能運(yùn)行于你的操作平臺(tái)的Java JRE
    你需要一個(gè)你所用數(shù)據(jù)庫(kù)的Java驅(qū)動(dòng)——我在使用 MySQL Connector/J
    安裝graphiz

創(chuàng)建 mysql.properties文件

當(dāng)需求尚不明確時(shí),我喜歡這樣建立一下,以便讓命令行能又短又整潔。這是我為我的Percona Server 5.6.10沙箱所使用的屬性文件:

復(fù)制代碼 代碼如下:
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

請(qǐng)注意,在表child_A里有一個(gè)隱含的通過(guò)parent_id作為外鍵關(guān)聯(lián)到parent的關(guān)系,但在表child_B中建立了一個(gè)顯式的外鍵parent_id。這會(huì)影響SchemaSpy如何辨別關(guān)系,以及你是否需要提供一個(gè)提示。
 運(yùn)行SchemaSpy(有外鍵)

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

2015625113102518.png (300×134)

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

2015625113131945.png (300×110)

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

元數(shù)據(jù)文件是一個(gè)XML格式的。下面的配置實(shí)例是用來(lái)把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>

更多的復(fù)雜配置例子的可以 訪問(wèn)
運(yùn)行SchemaSpy

下面的語(yǔ)法是連接MySQL數(shù)據(jù)庫(kù),SchemaSy同時(shí)對(duì)其他大多數(shù)流行的關(guān)系數(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選項(xiàng),標(biāo)識(shí)SchemaSpy的輸出文件目錄,要確定這個(gè)目錄可以被web服務(wù)器所操作。需要提及的是,我通過(guò)在jar包所在目錄建立一個(gè)mysql.properties文件,這樣我可以不用輸入任何的服務(wù)器:端口以及數(shù)據(jù)庫(kù)名稱的信息。
瀏覽SchemaSpy輸出

三個(gè)表的完整的關(guān)系視圖如下圖所示:

2015625113149215.png (300×254)

收尾感想

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

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

最后,你不要忘了,把配置好的SchemaSpy寫到crontab來(lái)實(shí)現(xiàn)自動(dòng)化。

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

相關(guān)文章

  • Mysql 5.7.18安裝方法及啟動(dòng)MySQL服務(wù)的過(guò)程詳解

    Mysql 5.7.18安裝方法及啟動(dòng)MySQL服務(wù)的過(guò)程詳解

    這篇文章主要介紹了Mysql 5.7.18安裝方法及啟動(dòng)MySQL服務(wù)的過(guò)程,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-05-05
  • MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的方案

    MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的方案

    這篇文章主要介紹了MySQL解決數(shù)據(jù)導(dǎo)入導(dǎo)出含有外鍵的情況,文中通過(guò)圖文結(jié)合的方式給大家講解的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下
    2024-11-11
  • mysql 批量更新與批量更新多條記錄的不同值實(shí)現(xiàn)方法

    mysql 批量更新與批量更新多條記錄的不同值實(shí)現(xiàn)方法

    在mysql中批量更新我們可能使用update,replace into來(lái)操作,下面小編來(lái)給各位同學(xué)詳細(xì)介紹mysql 批量更新與性能吧
    2013-10-10
  • MySQL regexp 命令詳解

    MySQL regexp 命令詳解

    REGEXP命令用于在查詢中進(jìn)行正則表達(dá)式匹配,支持多種符號(hào)和語(yǔ)法,如^、$、.、*、+、?、|、[]等,示例展示了如何匹配特定字符、數(shù)字、多個(gè)選項(xiàng)等,使用BINARY關(guān)鍵字可以區(qū)分大小寫,本文介紹MySQL regexp 命令,感興趣的朋友一起看看吧
    2025-03-03
  • MySQL觸發(fā)器運(yùn)用于遷移和同步數(shù)據(jù)的實(shí)例教程

    MySQL觸發(fā)器運(yùn)用于遷移和同步數(shù)據(jù)的實(shí)例教程

    這篇文章主要介紹了MySQL觸發(fā)器運(yùn)用于遷移和同步數(shù)據(jù)的實(shí)例教程,分別是SQL Server數(shù)據(jù)遷移至MySQL以及同步備份數(shù)據(jù)表記錄的兩個(gè)例子,需要的朋友可以參考下
    2015-12-12
  • 詳解Mysql中explain執(zhí)行計(jì)劃信息中字段

    詳解Mysql中explain執(zhí)行計(jì)劃信息中字段

    Extra是EXPLAIN輸出中另外一個(gè)很重要的列,該列顯示MySQL在查詢過(guò)程中的一些詳細(xì)信息,MySQL查詢優(yōu)化器執(zhí)行查詢的過(guò)程中對(duì)查詢計(jì)劃的重要補(bǔ)充信息,這篇文章主要介紹了Mysql中explain執(zhí)行計(jì)劃信息中字段詳解,需要的朋友可以參考下
    2023-08-08
  • 開(kāi)啟mysql的binlog日志步驟詳解

    開(kāi)啟mysql的binlog日志步驟詳解

    這篇文章主要介紹了MySQL?5.7版本中二進(jìn)制日志(bin_log)的配置和使用,文中通過(guò)圖文及代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2025-02-02
  • MySQL?根據(jù)多字段查詢重復(fù)數(shù)據(jù)的示例代碼

    MySQL?根據(jù)多字段查詢重復(fù)數(shù)據(jù)的示例代碼

    本文介紹了如何使用 MySQL 根據(jù)多個(gè)字段查詢重復(fù)數(shù)據(jù),我們介紹了如何根據(jù)多個(gè)字段查詢重復(fù)數(shù)據(jù),并提供了相應(yīng)的代碼示例,通過(guò)這些方法,我們可以快速準(zhǔn)確地找到和處理重復(fù)數(shù)據(jù),提高數(shù)據(jù)庫(kù)的數(shù)據(jù)質(zhì)量,需要的朋友可以參考下
    2023-11-11
  • mysql存儲(chǔ)過(guò)程之case語(yǔ)句用法實(shí)例詳解

    mysql存儲(chǔ)過(guò)程之case語(yǔ)句用法實(shí)例詳解

    這篇文章主要介紹了mysql存儲(chǔ)過(guò)程之case語(yǔ)句用法,結(jié)合實(shí)例形式詳細(xì)分析了mysql存儲(chǔ)過(guò)程中case語(yǔ)句的相關(guān)功能、原理與使用技巧,需要的朋友可以參考下
    2019-12-12
  • SQL多表多字段比對(duì)方法實(shí)例代碼

    SQL多表多字段比對(duì)方法實(shí)例代碼

    有時(shí)候正式庫(kù)和測(cè)試庫(kù)同一個(gè)表有字段有差異,會(huì)造成各種錯(cuò)誤,下面這篇文章主要給大家介紹了關(guān)于SQL多表多字段比對(duì)方法的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評(píng)論

上犹县| 平谷区| 舞钢市| 色达县| 嘉义县| 额济纳旗| 商洛市| 平阴县| 融水| 奉新县| 耿马| 峡江县| 永春县| 尼木县| 浦东新区| 侯马市| 兴安盟| 枣强县| 宁城县| 新乡市| 通州市| 和静县| 密云县| 桑植县| 老河口市| 徐水县| 阿克| 志丹县| 塔城市| 方城县| 永寿县| 三台县| 九江县| 合肥市| 新安县| 六枝特区| 昌图县| 新龙县| 万安县| 千阳县| 泰安市|