支援MySql的資料庫自動分表工具DBShardTools發布

來源:互聯網
上載者:User

前段時間參與了公司的一個項目,這個項目的特點是資料量、訪問量都比較大,考慮使用資料庫水平分表策略,Google了大半天,竟然沒有找到分表工具。於是自己寫了個資料庫水平分表工具,支援MS Sql Server和 MySQL,對MYSQL支援比較好。

下面介紹下分表工具的使用方法。

首先是設定資料庫連接介面

 

輸入串連名稱(也可以點擊右邊的選擇框,從之前儲存的串連中選擇),選擇資料庫類型(目前支援Mysql和Sql Server),輸入ip地址、資料庫名稱、使用者名稱、密碼後點擊測試連接,如果提示串連成功,說明設定正確。

 

 

點擊確定按鈕進入主介面:

 

執行分表操作時,必須要有主表,主表名稱可以手工輸入也可以通過點擊右邊的選擇框,然後在下拉式清單中選擇。分表格式可以自己定義,分表邏輯也可以自己定義,後面會具體介紹,例子中的分表邏輯是劃分為1000個分表,表名為4位16進位,也就是0000~03e7。操作類型有三種:1、建立分表;2、修改分表(比如說在所有的分表中添加欄位或刪除欄位);3、刪除分表。操作類型選擇後DDL會自動產生(可以根據需要適當修改)。

 

點擊確定,執行分表操作。

 

查看資料庫,分表shoppingcart_0000~shoppingcart_03e7已經產生成功。

 

 

自訂分表命名策略

通過實現INameStrategy介面的GetTableNumbers方法來自訂分表尾碼名稱

public interface INameStrategy    {        string[] GetTableNumbers();    }

比如:

public class NameStrategy : INameStrategy    {        private readonly int _startIndex;        private readonly int _endIndex;        private readonly int _toBase;        private readonly int _totalWidth;        public NameStrategy(int startIndex, int endIndex, int toBase, int totalWidth)        {            _startIndex = startIndex;            _endIndex = endIndex;            _toBase = toBase;            _totalWidth = totalWidth;        }        public string[] GetTableNumbers()        {            List<string> tableNames = new List<string>();            for (int i = _startIndex; i <= _endIndex; i++)            {                tableNames.Add(Convert.ToString(i, _toBase).PadLeft(_totalWidth, '0'));            }            return tableNames.ToArray();        }    }

 

然後在unity.config中註冊自訂的命名策略實現

<register  type="DBShardTools.Core.INameStrategy, DBShardTools.Core" mapTo="DBShardTools.Core.NameStrategy, DBShardTools.Core">        <constructor>          <param name="startIndex" value="0" />          <param name="endIndex" value="999" />          <param name="toBase" value="16" />          <param name="totalWidth" value="4" />        </constructor>        <lifetime type="singleton"/>    </register>    

該分表工具目前對MySql支援比較好,比如可以自動產生建立分表的DDL,Sql Server資料庫要自己將建表的指令碼貼到DDL文字框中。

代碼下載

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.