『壹』 如何用mybatis migration tool來進行資料庫版本控制嗎
配置MMT環境變數如下:
MIGRATIONS_HOME: D:\Software\mybatis-migrations-3.2.0
Path: %MIGRATIONS_HOME%\bin
打開命令行窗口執行"migrate --help"測試MMT如下:
進入項目目錄執行'migrate init'初始化MMT環境目錄。
初始化後,MMT創建drivers,environments和scripts三個目錄。其中drivers目錄用來存放資料庫驅動所依賴的jar包,environments目錄用戶配置資料庫信息,scripts目錄則用來存放資料庫腳本。將准備好的數據驅動包放入drivers目錄,這里以mysql為例。打開environments目錄下的development.properties文件配置開發環境數據源信息如下:
如需要配置其他環境如test、demo、staging、proction等,只需要復制development.properties文件修改相應的資料庫鏈接即可。至此MMT的配置工作已經完成,我們可以使用其強大的資料庫腳本版本控制功能了。
『貳』 MySQL中文參考手冊---MySQL 文件系統
這是一款正在開發中的Linux 文件系統 能把Linux 上的 MySQL 資料庫作為文件系統來處理 開發小組希望能得到 更多的建議 下面的文章翻譯自 實際上 這不是通常意義上的文件系統 它沒有磁碟空間 而是使用MySQL 守護程序來存儲數據 可以把SQL 表和 一些函數通過文件系統來實現 一 怎樣實現? 讓我們來看使用實例 [root@localhost /root]# mount t corbafs o `cat /tmp/mysqlcorbafs ior` none /mnt/mysql/ [root@localhost /root]# mount /dev/hda on / type ext (rw) none on /proc type proc (rw) none on /dev/pts type devpts (rw gid= mode= ) /dev/hda on /mnt/win type vfat (rw mode= ) /dev/hda on /mnt/linux type vfat (rw noexec nosuid nodev mode= ) none on /mnt/mysql type corbafs (rw IOR: e d b c a f f c d a e a e e e bc a ef ae c c f) [root@localhost /root]# ls la /mnt/mysql/ total r xr xr x root root dets : uptime dr xr xr x root root dets : test dr xr xr x root root dets : mysql [root@localhost /root]# cat /mnt/mysql/ uptime [root@localhost /root]# cat /mnt/mysql/mysql/user/Host cpq spam ee cpq spam ee localhost localhost localhost localhost localhost localhost [root@localhost /root]# cat /mnt/mysql/mysql/user/Insert_priv N N N N N N Y Y [root@localhost /root]# umount /mnt/mysql/ 二 為什麼要這樣做呢? 在一些情形下 這樣做能讓工作更加輕松 MySQL 和文件系統都能叫做資料庫 但是有 著絕然不同的概念和優缺點 在文件系統里 對象能很快而且很容易找到 即使改變名 字也能很快找到 每一個初學者大概都應該學會move//rename/delete這樣的操作 但是SQL 不一樣 他通過應用程序來操縱存儲在文件系統上的數據 而MySQL 文件系統把SQL 做到了用戶 級 用戶能用他們知道的方式來操作資料庫 任何一個新產品需要通過網路存取數據的話 必須支持一些協議以及可能的其他辦法通 過網路存取文件系統 MySQL 表就可以通過這樣的方式來存取 即使MySQL 沒有移植到 對應的平台 備份和版本控制 普通的文件系統通過任何備份軟體就可以實現 數據可以通過diff來比較並且用cvs 來控製版本 更短的編程時間 有時候人們需要保存簡單的數據 像當前日期或者站點名字 這些數 據很少改變 普通的方法需要使用 連接伺服器 > 選擇資料庫 > 執行命令 > 存儲結果 而使用 MySQL 文件系統後 只需要一句話 (PHP實現) include(¨/mountpoint/database/table/field¨); 或者 換一種方式表達 include(¨/mnt/mysql/sitedata/topic/todaytopic¨); 這樣就很容易理解 也佔用了較少的空間 還可以通過SAMBA 來共享 /mnt/mysql 達到 直接修改SQL 資料庫 的目的 能直接寫文本到資料庫 或者使用拷貝/粘貼功能把圖片放入資料庫 這要比用 Perl 或者PHP 寫幾百行程序省力多了 三 性能如何? 在發表這篇文章的時候 這個文件系統還處於原型開發階段 因此 速度還不是很理想 如果到了正式發布的時候 一些資料庫功能會比使用 SQL 要快 當然 很多還是沒法和 SQL 相比 無論是性能上還是功能上 很多復雜的查詢依然需要通過SQL 語句來完成 但 是 這樣節省了很多開發和培訓的時間 所以在效率上來說也是一種節省 四 支持的表類型 目前這個文件系統支持所有的表類型 MyISAM DBD HEAP ISAM 五 其他的特色 在第一步開發中實現的還只是只讀 很快會有能讀寫的版本出來 目前的計劃是把資料庫 對象映射成文件和目錄對象 讓我們來看看例子 < #建立表 CREATE TABLE invoice ( invoice_id int( ) unsigned NOT NULL auto_increment invoice_no int( ) unsigned DEFAULT NOT NULL payee char( ) DEFAULT NOT NULL PRIMARY KEY (invoice_id) KEY payee (payee) ); # 插入數據 INSERT INTO invoice VALUES ( Company AB ); INSERT INTO invoice VALUES ( Company CD ); INSERT INTO invoice VALUES ( Company EF ); < 因為 MySQL 沒有辦法使用記錄號 所以我們必須建立主鍵 就有了以下的目錄結構 /mountpoint/database/table/primary_key/field 這樣 每個列出現在不同的文件行之中 文件樹的結構如下 /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee 另外 還有第二個辦法可以使用 /mountpoint/database/table/ table 和 /mountpoint/database/table/primary_key/ record /mnt/mysql/mydata/invoice/ table /mnt/mysql/mydata/invoice/ / record /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ / record /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee /mnt/mysql/mydata/invoice/ / record /mnt/mysql/mydata/invoice/ /invoice_id /mnt/mysql/mydata/invoice/ /invoice_no /mnt/mysql/mydata/invoice/ /payee 這些文件是隱含的 以防重復 主要用來方便地通過文本文件瀏覽器來查看 現在 在那些需要使用SQL 語句搜索最小 最大 最後等數據 可以通過符號連接來實 現了 /mountpoint/database/table/primary_key/ max 或者 /mnt/mysql/mydata/invoice/invoice_id/ max 或者指向 /mountpoint/database/table/field 和 /mnt/mysql/mydata/invoice/ 同樣的就可以返回一行的 min/max/sum/avg 等數值 這能很快並且很容易地實現 /mnt/mysql/mydata/ keys/ /mnt/mysql/mydata/ keys/invoice_id/ /mnt/mysql/mydata/ keys/payee/ 符號連接到主鍵 /mnt/mysql/mydata/ keys/ primary_key/實際上指向 /mnt/mysql/mydata/ keys/invoice_id/ 還有一些隱藏文件提供鍵類型 /mnt/mysql/mydata/ keys/invoice_id/ type /mnt/mysql/mydata/ keys/payee/ type 第一個文內容為 ¨PRIMARY KEY¨ 第二個為 ¨KEY¨ 另外還可以用索引來排序記錄 如果讀取下面的目錄 /mnt/mysql/mydata/ keys/payee/asc/ PHP 的readdir() 函數就以升序返回數據的符號連接 另外還有一些全局函數 /mountpoint/ version /mountpoint/ last_insert_id /mountpoint/ uptime /mountpoint/database/ raid ( / ) /mountpoint/database/ type (ISAM/MyISAM/HEAP/DBD) /mountpoint/database/ tables /mountpoint/database/table/ created /mountpoint/database/table/ last_updated /mountpoint/database/table/ last_checked /mountpoint/database/unt 六 寫許可權 在開發的第二階段 會有措施執行SQL 語句 現在的思路是 採用目錄 /mountpoint/mand/ 然後執行命令 把SQL 語句作為目錄建立 或者建立目錄把SQL 語句作為文件放入這個目錄 兩個方案都有優點 第一個方案可以重新使用SQL 語句 但是這樣的目錄名實在不敢令 人苟同 第二個方案採用信號量文件 語句執行完畢就刪除這個文件 沒有任務使用時 目錄也被刪除 對於那些慢速的查詢響應 可以選擇timeout 的時間 七 許可權管理 lishixin/Article/program/MySQL/201311/29427