MySQLのサブデータベースとサブテーブルの詳細説明(5)

♥️作者: Xiao Liu at Station C

♥️個人ホームページ:  Xiao Liu のホームページ 

♥️努力は必ずしも報われるとは限りませんが、必ず得るものはあります。より良い人生を目指して一緒に頑張りましょう!

♥️ 2 年間で要約された運用とメンテナンスの経験と、Cisco シミュレータのネットワーク実験チュートリアルの完全なセットを学びます。コラム:クラウドコンピューティング技術

♥️Xiao Liu のプライベート メッセージは気軽に尋ねることができます。知っている限り、ケチることはありません。あなたと私に会わせてくれて CSDN に感謝します!

目次

5.2.1 シナリオ

 5.2.2 準備

5.2.3 設定

1)。スキーマ.xml

2)。サーバー.xml

5.2.4 テスト

5.3 断片化ルール

1 はじめに

 2). 構成

5.3.2 モジュラーシャーディング

1 はじめに

 2). 構成

3). テスト

5.3.3 一貫したハッシュの断片化

1 はじめに

 2). 構成

 3). テスト


5.2 水平分割

5.2.1シナリオ

業務システムには テーブル (ログテーブル)があり 毎日 大量 のログデータが生成され ます
ストレージと処理能力には制限があり データベース テーブルは分割される可能性があります。

 5.2.2準備

サーバーを 3 台用意します。具体的な構成は次のとおりです。

 そして、 3 台のデータベース サーバーにデータベースitcastを作成します

5.2.3設定

1)。スキーマ.xml

<schema name="ITCAST" checkSQLschema="true" sqlMaxLimit="100">
<table name="tb_log" dataNode="dn4,dn5,dn6" primaryKey="id" rule="mod-long" />
</schema>
<dataNode name="dn4" dataHost="dhost1" database="itcast" />
<dataNode name="dn5" dataHost="dhost2" database="itcast" />
<dataNode name="dn6" dataHost="dhost3" database="itcast" />
tb_logテーブルは最終的に dn4 dn5 、およびdn6の3 つのノード に分類され 、特定のデータはdhost1に保存されます
dhost2 および dhost3 itcastデータベース内

2)。サーバー.xml

rootユーザーが SHOPPINGロジック ライブラリとITCASTロジック ライブラリの 両方にアクセスできるように 構成します

<user name="root" defaultAccount="true">
<property name="password">123456</property>
<property name="schemas">SHOPPING,ITCAST</property>
<!-- 表级 DML 权限设置 -->
<!--
<privileges check="true">
<schema name="DB01" dml="0110" >
<table name="TB_ORDER" dml="1110"></table>
</schema>
</privileges>
-->
</user>

5.2.4テスト

構成が完了したら、 MyCatを再起動し mycat のコマンド ラインで次の SQL を実行して テーブルを作成し、データを挿入し、データを表示します。
配布によると。

CREATE TABLE tb_log (
id bigint(20) NOT NULL COMMENT 'ID',
model_name varchar(200) DEFAULT NULL COMMENT '模块名',
model_value varchar(200) DEFAULT NULL COMMENT '模块值',
return_value varchar(200) DEFAULT NULL COMMENT '返回值',
return_class varchar(200) DEFAULT NULL COMMENT '返回值类型',
operate_user varchar(20) DEFAULT NULL COMMENT '操作用户',
operate_time varchar(20) DEFAULT NULL COMMENT '操作时间',
param_and_value varchar(500) DEFAULT NULL COMMENT '请求参数名及参数值',
operate_class varchar(200) DEFAULT NULL COMMENT '操作类',
operate_method varchar(200) DEFAULT NULL COMMENT '操作方法',
cost_time bigint(20) DEFAULT NULL COMMENT '执行方法耗时, 单位 ms',
source int(1) DEFAULT NULL COMMENT '来源 : 1 PC , 2 Android , 3 IOS',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('1','user','insert','success','java.lang.String','10001','2022-01-06
18:12:28','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','insert','10',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('2','user','insert','success','java.lang.String','10001','2022-01-06
18:12:27','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','insert','23',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('3','user','update','success','java.lang.String','10001','2022-01-06
18:16:45','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','update','34',1);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('4','user','update','success','java.lang.String','10001','2022-01-06
18:16:45','{\"age\":\"20\",\"name\":\"Tom\",\"gender\":\"1\"}','cn.itcast.contro
ller.UserController','update','13',2);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('5','user','insert','success','java.lang.String','10001','2022-01-06
18:30:31','{\"age\":\"200\",\"name\":\"TomCat\",\"gender\":\"0\"}','cn.itcast.co
ntroller.UserController','insert','29',3);
INSERT INTO tb_log (id, model_name, model_value, return_value, return_class,
operate_user, operate_time, param_and_value, operate_class, operate_method,
cost_time,source)
VALUES('6','user','find','success','java.lang.String','10001','2022-01-06
18:30:31','{\"age\":\"200\",\"name\":\"TomCat\",\"gender\":\"0\"}','cn.itcast.co
ntroller.UserController','find','29',2);

5.3断片化ルール

5.3.1範囲の断片化

1).はじめに

指定されたフィールドとデータ ノードに対応するその構成された範囲に従って、データがどのシャードに属するかを決定します。

 2).構成

Schema.xml論理テーブル構成:

<table name="TB_ORDER" dataNode="dn1,dn2,dn3" rule="auto-sharding-long" />

schema.xmlデータノード構成:

<dataNode name="dn1" dataHost="dhost1" database="db01" />
<dataNode name="dn2" dataHost="dhost2" database="db01" />
<dataNode name="dn3" dataHost="dhost3" database="db01" />
rules.xml 断片化ルールの設定:
<tableRule name="auto-sharding-long">
<rule>
<columns>id</columns>
<algorithm>rang-long</algorithm>
</rule>
</tableRule>
<function name="rang-long" class="io.mycat.route.function.AutoPartitionByLong">
<property name="mapFile">autopartition-long.txt</property>
<property name="defaultNode">0</property>
</function>
断片化ルール構成属性の意味:

 

rules.xmlで断片化ルールを構成する 場合、マッピング構成ファイルautopartition -long.txt が関連付けられます。
ファイルの構成は以下のとおりです。
# range start-end ,data node index
# K=1000,M=10000.
0-500M=0
500M-1000M=1
1000M-1500M=2
意味: データ ノード0に格納される 0 ~ 500万 の値 (データ ノードのインデックスは0から始まります) 500万~ 1,000万の値
データは 1 番目の データ ノード に保存され、 1,000 ~ 1,500 万個のデータ ノードが 2 番目のノードに保存されます
このシャーディング ルールは主に数値タイプのフィールドに適用されます。 MyCatのスターター プログラム では 、このシャーディング ルールを使用します。

5.3.2モジュラーシャーディング

1).はじめに

指定されたフィールド値とノード数に基づいてモジュロ演算を実行し、演算結果に従ってデータがどのシャードに属するかを決定します。

 2).構成

Schema.xml 論理テーブル構成:
<table name="tb_log" dataNode="dn4,dn5,dn6" primaryKey="id" rule="mod-long" /> 
schema.xml データノード構成:
<dataNode name="dn4" dataHost="dhost1" database="itcast" />
<dataNode name="dn5" dataHost="dhost2" database="itcast" />
<dataNode name="dn6" dataHost="dhost3" database="itcast" />
rules.xml 断片化ルールの設定:
<tableRule name="mod-long">
<rule>
<columns>id</columns>
<algorithm>mod-long</algorithm>
</rule>
</tableRule>
<function name="mod-long" class="io.mycat.route.function.PartitionByMod">
<property name="count">3</property>
</function>
断片化ルールの属性は次のように説明されます。

 

このシャーディング ルールは主に数値タイプのフィールドに適用されます。前回の水平分割のデモでは、モジュロ シャーディングを選択しました。

3).テスト

 

構成が完了したら、 MyCatを再起動し mycat のコマンド ラインで次の SQLを実行して テーブルを作成し、データを挿入し、データの分散を確認します。

5.3.3一貫したハッシュの断片化

1).はじめに

いわゆるコンシステントハッシュとは、同じハッシュファクターの計算値が常に同じパーティションテーブルに分割され、パーティションノードの増加によって元のデータのパーティション位置が変更されないことを意味し、拡張問題を効果的に解決します。分散データの問題。

 2).構成

schema.xmlの論理テーブル構成 :
<!-- 一致性hash -->
<table name="tb_order" dataNode="dn4,dn5,dn6" rule="sharding-by-murmur" /> 
schema.xmlのデータノード構成 :
<dataNode name="dn4" dataHost="dhost1" database="itcast" />
<dataNode name="dn5" dataHost="dhost2" database="itcast" />
<dataNode name="dn6" dataHost="dhost3" database="itcast" />
rules.xml でのフラグメンテーション ルールの設定:
<tableRule name="sharding-by-murmur">
<rule>
<columns>id</columns>
<algorithm>murmur</algorithm>
</rule>
</tableRule>
<function name="murmur" class="io.mycat.route.function.PartitionByMurmurHash">
<property name="seed">0</property><!-- 默认是0 -->
<property name="count">3</property>
<property name="virtualBucketTimes">160</property>
</function>
断片化ルール属性の意味:

 3).テスト

構成が完了したら、 MyCatを再起動し mycat のコマンド ラインで次の SQL を実行して テーブルを作成し、データを挿入し、 データの。
create table tb_order(
id varchar(100) not null primary key,
money int null,
content varchar(200) null
);
INSERT INTO tb_order (id, money, content) VALUES ('b92fdaaf-6fc4-11ec-b831-
482ae33c4a2d', 10, 'b92fdaf8-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b93482b6-6fc4-11ec-b831-
482ae33c4a2d', 20, 'b93482d5-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b937e246-6fc4-11ec-b831-
482ae33c4a2d', 50, 'b937e25d-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b93be2dd-6fc4-11ec-b831-
482ae33c4a2d', 100, 'b93be2f9-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b93f2d68-6fc4-11ec-b831-
482ae33c4a2d', 130, 'b93f2d7d-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b9451b98-6fc4-11ec-b831-
482ae33c4a2d', 30, 'b9451bcc-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b9488ec1-6fc4-11ec-b831-
482ae33c4a2d', 560, 'b9488edb-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b94be6e6-6fc4-11ec-b831-
482ae33c4a2d', 10, 'b94be6ff-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b94ee10d-6fc4-11ec-b831-
482ae33c4a2d', 123, 'b94ee12c-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b952492a-6fc4-11ec-b831-
482ae33c4a2d', 145, 'b9524945-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b95553ac-6fc4-11ec-b831-
482ae33c4a2d', 543, 'b95553c8-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b9581cdd-6fc4-11ec-b831-
482ae33c4a2d', 17, 'b9581cfa-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b95afc0f-6fc4-11ec-b831-
482ae33c4a2d', 18, 'b95afc2a-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b95daa99-6fc4-11ec-b831-
482ae33c4a2d', 134, 'b95daab2-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b9667e3c-6fc4-11ec-b831-
482ae33c4a2d', 156, 'b9667e60-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b96ab489-6fc4-11ec-b831-
482ae33c4a2d', 175, 'b96ab4a5-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b96e2942-6fc4-11ec-b831-
482ae33c4a2d', 180, 'b96e295b-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b97092ec-6fc4-11ec-b831-
482ae33c4a2d', 123, 'b9709306-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b973727a-6fc4-11ec-b831-
482ae33c4a2d', 230, 'b9737293-6fc4-11ec-b831-482ae33c4a2d');
INSERT INTO tb_order (id, money, content) VALUES ('b978840f-6fc4-11ec-b831-
482ae33c4a2d', 560, 'b978843c-6fc4-11ec-b831-482ae33c4a2d');

♥️以下が私の創作の原動力です

♥️いいね、それが私にとって最大の評価です

♥️Xiaoliu です。どの記事もうまく書くよう励まされています、皆さんありがとうございます

おすすめ

転載: blog.csdn.net/lzl10211345/article/details/131619163