当前位置:网站首页>Shardingsphere proxy 4.1 Sous - base de données sous - table
Shardingsphere proxy 4.1 Sous - base de données sous - table
2022-06-25 10:05:00 【M. Fu】
Un.、ShardingSphere-ProxyLe concept de base de
ShardingSphere-ProxyConcept
Adresse officielle:https://shardingsphere.apache.org/index_zh.html
ShardingSphere-ProxyC'est l'agent de la base de données,Comme le montre la figure:
ShardingSphere-ProxyQuelles bases de données sont les principaux agents
Agent par défaut:Mysql、PostSql
Réalisation des objectifs de l'agent
Il s'agit principalement de compléter le Sous - inventaire et le Sous - Tableau
Réaliser la séparation lecture - écriture
Les deux aussi.ShardingSphere-ProxyDeux fonctions essentielles de.
Sous - entrepôt sous - Tableau
Le concept et le but de la Sous - base
Concept
Les tables de la base de données sont stockées dans différentes bases de données;Comme le montre la figure:
Objectif
Empêcher la concurrence des ressources pour plusieurs tables dans une bibliothèque 【CPU、Mémoire】,Entraînant une dégradation des performances.
Concept et objet du sous - Tableau
Concept
Diviser une table dans la base de données en plusieurs tables ,Comme le montre la figure:
Objectif
Le Sous - Tableau résout le problème de la quantité excessive de données dans le tableau , Améliorer les performances des utilisateurs pour interroger et ajouter des données .
Par exemple,:ParmysqlExemple de base de données, Lorsque l'utilisateur ajoute des données mysqlDeInnoDB Le moteur est stocké dans les données ,InnoDB Le moteur doit s'assurer que les performances des données se situent dans une certaine plage , La valeur de crête maximale de la quantité de données dans le tableau est 2000w,Si plus de2000W La performance de l'ajout de données diminue , Nous allons donc dépasser 2000W Le tableau de la quantité de données est divisé en plusieurs tableaux , Cela garantit l'expérience de l'utilisateur .
Défauts
Trop de concurrence , Il y aura concurrence pour les ressources dans le tableau [CPU、Mémoire]La question de, Cela entraîne une dégradation des performances , L'expérience de l'utilisateur s'est détériorée .
Solutions:Sous - base
Sous - entrepôt sous - Tableau
Objectif
Résoudre le problème de la concurrence des ressources de table et de la quantité excessive de données .
2.、ShardingSphere-ProxyScénarios d'application pour
Scénario
Les sous - bases de données et les tableaux peuvent être utilisés pour les projets individuels et les projets de micro - services. .
Trois、ShardingSphere-Proxy Atterrissage du sous - tableau de distribution
Outils
ShardingSphere-Proxy
Programme
Dans le processus
Comme le montre la figure:
- Défauts
- Questions relatives à la concurrence en matière de ressources.
- Problème d'influence anormale .
- Défauts
Hors processus 【Recommandations】
Comme le montre la figure:
- Défauts
- Problèmes d'entretien important .
- La performance est plus faible que dans le processus .
- Peut être placé dans l'intranet pour la communication 【docker】
- Défauts
Réalisation
Conditions
MysqlBase de données Version:5.7
ShardingSphere-Proxy
Adresse de téléchargement du disque réseau
Liens:https://pan.baidu.com/s/15yUIDQOdDDwUtVLNxNa9Cg Code d'extraction:3hp3
JavaDeJDK
Adresse de téléchargement du disque réseau
Liens:https://pan.baidu.com/s/1A-ksNN0YicT3hXjFscGGwA Code d'extraction:r9e0
TéléchargerMysqlConnexion à l'entraînement Fichier à la racine labSous le dossier
Adresse de téléchargement du disque réseau:
Liens:https://pan.baidu.com/s/1924iUe7wxGpStAzxxv2K3g Code d'extraction:jy7z
Configuration
Sous - Tableaux
Configuration
config-sharding.yaml Fichiers de configuration fragmentés
# 3、 Créer une bibliothèque de connexion client hmms: Nom de la base de données virtuelle 【 De préférence le même nom que la base de données réelle 】 Inserver.yamlNom schemaName: hmms # 1、Connexionmysql dataSources: hmmsdatasources-0: #Nom du noeud Personnalisation url: jdbc:mysql://127.0.0.1:3306/ Nom réel de la base de données ?serverTimezone=UTC&useSSL=false username: Nom d'utilisateur de la base de données password: Mot de passe de la base de données connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 # 2、Règle du fractionnement shardingRule: tables: #Tableau user: #Nom du tableau logique Quel tableau voulez - vous diviser? actualDataNodes: hmmsdatasources-0.user-${ 0..1} #En quelques tableaux Voici deux montres. #hmmsdatasources-0:Nom du noeud tableStrategy: # Tableau des données inline: shardingColumn: useid #Champs Tabulés algorithmExpression: user-${ useid % 2} #C'est exact.useidTableau de séparation des moisissures #Créer plusieurs tables #Nom du tableau: #Nom du tableau logique Quel tableau voulez - vous diviser? #actualDataNodes: hmmsdatasources-0.Nom du tableau-${0..1} #En quelques tableaux Voici deux montres. #hmmsdatasources-0:Nom du noeud
server.yaml
authentication: users: root: #Nom d'utilisateur de la base de données password: Mot de passe des données sharding: password: sharding authorizedSchemas: hmms
ShardingSpere-Proxy
Exécuter les commandes
#Racinebin Exécuter la commande sous le fichier start.bat
Les résultats de l'opération sont présentés dans la figure ci - dessous.:
MySql Base de données
Nouveau nom de la base de données réelle
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS `user`; CREATE TABLE `user` ( `useid` int(11) NOT NULL, `usenam` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'Nom de connexion', `usepwd` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Mot de passe de connexion', `usestate` int(11) NULL DEFAULT 2 COMMENT '-1:Supprimer1:Déconnecter 2:Normal 3:Signaler la perte', `usekey` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT ' Clé utilisateur ', `usetel` varchar(11) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Téléphone de l'utilisateur', `createbyid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Ajouter quelqu'un', `createbytime` datetime(0) NULL DEFAULT NULL COMMENT 'Ajouter le temps', `modifybyid` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'Modifié par', `modifybytime` datetime(0) NULL DEFAULT NULL COMMENT 'Temps de modification', PRIMARY KEY (`useid`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; SET FOREIGN_KEY_CHECKS = 1;
Comme le montre la figure:
Nouveau 3307 Connexion à la base de données virtuelle
Comme le montre la figure:
Supprimer le tableau
Supprimer3306MoyennehmmsDe la bibliothèqueuserTableau, Et exécuter le script de la nouvelle table dans la base de données virtuelle ,Les résultats sont les suivants:
Base de données virtuelle:
Base de données réelle
Ajouter des données
Ajouter deux données à la base de données virtuelle ,Les résultats sont les suivants:
Base de données réelle Tableau I,Les résultats sont les suivants:
Base de données réelle Tableau II,Les résultats sont les suivants:
Sous - base
Configuration
# 3、 Créer une bibliothèque de connexion client schemaName: hmms # 1、Connexionmysql dataSources: hmmsdatasources-0: #Base de données réelle0 url: jdbc:mysql://127.0.0.1:3306/hmms-0?serverTimezone=UTC&useSSL=false username: Nom d'utilisateur password: Mot de passe connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 hmmsdatasources-1: #Base de données réelle1 url: jdbc:mysql://127.0.0.1:3306/hmms-1?serverTimezone=UTC&useSSL=false username: Nom d'utilisateur password: Mot de passe connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 # 2、Règle du fractionnement shardingRule: tables: #Tableau user: #Nom du tableau logique actualDataNodes: hmmsdatasources-${ 0..1}.user #Sous - Tableaux tableStrategy: # Tableau des données inline: shardingColumn: useid #Champs Tabulés algorithmExpression: user-${ useid % 2} #C'est exact.useidTableau de séparation des moisissures defaultDatabaseStrategy: # Stratégie de sous - base de données inline: shardingColumn: useid #Champ de sous - base algorithmExpression: hmmsdatasources-${ useid % 2} #C'est exact.IdSous - base d'accès aux modulesproductdatasources-0
Sous - entrepôt sous - Tableau
Configuration
# 3、 Créer une bibliothèque de connexion client schemaName: hmms # 1、Connexionmysql dataSources: hmmsdatasources-0: #Base de données réelle0 url: jdbc:mysql://127.0.0.1:3306/hmms-0?serverTimezone=UTC&useSSL=false username: Nom d'utilisateur password: Mot de passe connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 hmmsdatasources-1: #Base de données réelle1 url: jdbc:mysql://127.0.0.1:3306/hmms-1?serverTimezone=UTC&useSSL=false username: Nom d'utilisateur password: Mot de passe connectionTimeoutMilliseconds: 30000 idleTimeoutMilliseconds: 60000 maxLifetimeMilliseconds: 1800000 maxPoolSize: 50 # 2、Règle du fractionnement shardingRule: tables: #Tableau user: #Nom du tableau logique actualDataNodes: hmmsdatasources-${0..1}.user-${0..1} #Sous - Tableaux tableStrategy: # Tableau des données inline: shardingColumn: useid #Champs Tabulés algorithmExpression: user-${useid % 2} #C'est exact.useidTableau de séparation des moisissures defaultDatabaseStrategy: # Stratégie de sous - base de données inline: shardingColumn: useid #Champ de sous - base algorithmExpression: hmmsdatasources-${useid % 2} #C'est exact.IdSous - base d'accès aux modulesproductdatasources-0
Quatre、ShardingSphere-ProxyPrincipe de fonctionnement
Structure générale
Total6Étapes:
1、Database Adaptors:Sélection de la base de données
2、SQL Parser:Analysesql
3、SQL Router:sqlRoutage Vers quelle base de données réelle exécuter
4、SQL Rewriter:sql Optimiser la réécriture Core Performance garantie
5、SQL Executor Engine:Mise en œuvresqlDéclarations Résultats de l'acquisition de la base de données réelle
6、Result Merger:Fusion des résultats Obtenir les résultats de plusieurs tableaux
Cinq、ShardingSphere_Proxy Principe du fractionnement
Le concept de fractionnement
Est de diviser les données en différents tableaux .
Clé Split
La clé Split est le champ du tableau . Selon quel champ .
Algorithme de segmentation
Selon les règles【Algorithme de segmentation】 Appuyez sur la touche Split pour diviser les données en différents tableaux .
Algorithme de prise de modèle
Défauts
Type de numéro seulement
hash+Prendre le moule
Si la clé Split est un type de caractère ,C'est bon.hash+ Méthode de découpage .
Math.abs(Clé Split.hashCode()%2)
边栏推荐
- Reasons for Meiye to choose membership system
- Ruiji takeout project (II)
- Encoding format for x86
- How do wechat sell small commodity programs do? How to open wechat apps to sell things?
- Shuttle JSON, list, map inter transfer
- Minio基本使用与原理
- Kotlin Foundation
- Fluent: target support file /pods runner / pods runner frameworks Sh: permission denied - stack overflow
- ShardingSphere-Proxy 4.1 分库分表
- 瑞吉外卖项目(二)
猜你喜欢
Can two Mitsubishi PLC adopt bcnettcp protocol to realize wireless communication of network interface?
Huipay international permet au commerce électronique transfrontalier de devenir une plate - forme de paiement transfrontalière conforme!
How to "transform" small and micro businesses (II)?
I put a two-dimensional code with rainbow candy
vscode试图过程写入管道不存在
瑞吉外卖项目(二)
Jetpack compose layout (II) - material components and layout
Solution to the problem of repeated startup of esp8266
Jetpack compose layout (IV) - constraintlayout
22 mathematical modeling contest 22 contest C
随机推荐
CYCA 2022少儿形体礼仪初级师资班 深圳总部站圆满结束
51 SCM time stamp correlation function
Consul的基本使用与集群搭建
Rxjs TakeUntil 操作符的学习笔记
纳米数据世界杯数据接口,中超数据,体育数据比分,世界杯赛程api,足球比赛实时数据接口
ScheduleMaster分布式任务调度中心基本使用和原理
Unique Wulin, architecture selection manual (including PDF)
[MySQL learning notes 21] storage engine
The problem of wirengpi program running permission
The problem of automatic page refresh after the flyer WebView pops up the soft keyboard
How to apply for a widget on wechat how to get a widget on wechat
Etcd tutorial - Chapter 4 etcd cluster security configuration
CYCA少儿形体礼仪 乐清市培训成果考核圆满落幕
Fluent: target support file /pods runner / pods runner frameworks Sh: permission denied - stack overflow
I put a two-dimensional code with rainbow candy
What should be paid attention to in PMP examination?
View. post VS Handler. Differences and usage scenarios of post
manhattan_ Slam environment configuration
【mysql学习笔记22】索引
Guiding principle - read source code