Maison  >  Article  >  base de données  >  Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

WBOY
WBOYavant
2023-06-02 12:34:143284parcourir

    1. Pourquoi devons-nous diviser les bases de données et les tables ?

    Si l'activité d'un site Web se développe rapidement, le trafic du site Web augmentera également, et la pression sur les données suivra également. -systèmes de commerce, Double Eleven Il existe une forte pression sur les données de commande, avec des centaines de milliers de Tps simultanés si l'architecture traditionnelle (un maître et plusieurs esclaves) est utilisée, la capacité de la base de données principale ne sera certainement pas en mesure d'atteindre des Tps aussi élevés. L'activité est de plus en plus grande et les données d'une table unique dépassent la prise en charge de la base de données. Capacité, E/S sur disque persistant, goulots d'étranglement des performances des bases de données traditionnelles, activités de chef de produit - il faut absolument changer de programme, optimiser la segmentation du couteau de base de données. En raison du nombre insuffisant de connexions à la base de données et de l'énorme quantité de données dans la table, les performances des requêtes restent faibles même après l'optimisation, un fractionnement est donc nécessaire.

    2. Qu'est-ce que le sharding et le sharding ?

    • La solution de sharding et de sharding est un complément au mécanisme de stockage et d'accès aux données des bases de données relationnelles.

    • Sous-bibliothèque : Divisez les données d'une bibliothèque en plusieurs bibliothèques identiques et accédez à une bibliothèque lors de l'accès

    • Sous-table : Mettez les données d'une table dans plusieurs tables, il suffit d'utiliser le table correspondante

    Trois façons de sous-base de données et de sous-tables

    Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

    1 Division verticale

    (1) Division verticale de la base de données

    Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

    Selon la division commerciale, comme indiqué. dans la figure, le système de commerce électronique est divisé en une base de données de commandes, une base de données d'adhésion et une base de données de produits

    (2) Divisez la table verticalement

    Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

    Divisez la table en fonction de l'entreprise, comme indiqué dans la figure, divisez la table utilisateur Divisée en table user_base et table user_info, use_base est responsable du stockage de la connexion, user_info est responsable du stockage des informations utilisateur de base

    Fonctionnalités de division verticale :

    • La structure de chaque bibliothèque (table ) est différent

    • Chacun Les données dans les bibliothèques (tables) doivent être les mêmes dans au moins une colonne

    • L'union de chaque bibliothèque (table) est la quantité totale de données

    Avantages et inconvénients du fractionnement vertical

    Avantages :

    • Business après fractionnement Clear (base de données dédiée divisée par entreprise)

    • Maintenance simple des données, différentes entreprises sont placées sur différentes machines

    Inconvénients :

    • Si la quantité de données dans une seule table, la pression d'écriture et de lecture Large

    • est déterminée ou limitée par une certaine entreprise, ce qui signifie qu'une entreprise affecte souvent le goulot d'étranglement de la base de données (problèmes de performances, tels que Double Eleven Rush Sales)

    • Certaines entreprises ne peuvent pas être associées à des jointures et ne peuvent être associées qu'à des jointures. Interface de programme Java à appeler, ce qui augmente la complexité du développement

    2. division horizontale

    Comme le montre la figure, divisé par bibliothèque membre, divisé en membres 1 Bibliothèque, membre 2 bibliothèque, divisé par userId, le numéro de queue userId 0-5 est la bibliothèque 1, 6-9 est la bibliothèque 2, il existe d'autres façons de prendre modulo, les nombres pairs sont placés dans la bibliothèque 1, les nombres impairs sont placés dans la bibliothèque 2Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

    (2) Division horizontale de la table

    Comme le montre la figure, la table des utilisateurs est divisée en La table users1 et la table users2, divisées par userId, prennent le modulo, les nombres pairs sont placés dans la table users1 et les nombres impairs sont placés dans la table users2Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

    Autres méthodes de division horizontale :

    séparation de plage, chacune La base de données contient des données continues. Celles-ci sont généralement basées sur une plage horaire, par exemple, mais elles sont généralement moins utilisées car il est facile de générer un grand nombre de points chauds. Tout le trafic est basé sur les données les plus récentes. : Lors de l'expansion, c'est très simple, car il vous suffit de préparer une bibliothèque pour chaque mois. Lorsqu'un nouveau mois arrive, une nouvelle bibliothèque sera naturellement écrite. Inconvénients : La plupart des requêtes accèdent aux dernières données. L'utilisation réelle de la plage en production dépend du scénario. Vos utilisateurs accèdent non seulement aux données les plus récentes, mais accèdent également aux données actuelles et aux données historiques
    • Distribution de hachage Avantages : le volume de données de chaque base de données peut être réparti uniformément et. Inconvénients de la pression des demandes : il est plus difficile de s'étendre et il y aura un processus de migration des données
    • (3) Fonctionnalités de fractionnement horizontal

    La structure de chaque base de données (table) est la même
    • Les données de chaque base de données (table) sont différentes
    • L'union de chaque base de données (table) correspond à la quantité totale de données
    • (4) Avantages et inconvénients de la répartition horizontale

    Avantages :

    Les données d'une seule base de données/table unique sont conservées à une certaine quantité (réduite), ce qui contribue à améliorer les performances
    • et améliore la stabilité et la capacité de charge du système
    • La structure de la table divisée est la même et la modification du programme est moindre.

    Inconvénients :

    • L'expansion des données est très difficile et la maintenance est importante

    • Les règles de fractionnement sont difficiles à résumer

    • Problèmes de cohérence des transactions fragmentées Certaines entreprises ne peuvent pas être associées à des jointures, seules peuvent être appelé via l'interface du programme Java

    4. Problèmes causés par les sous-bases de données et les sous-tables

    • transactions distribuées

    • requête de jointure entre bases de données

    • identifiant unique global distribué

    • développement Le coût est élevé pour les programmeurs

    5. Comment choisir la technologie de sous-base de données et de sous-table

    (1) Framework open source pour sous-base de données et sous-table

    • Connexion directe jdbc couche : shardingsphere, tddl

    • couche proxy proxy : mycat, mysql-proxy (360)

    couche de connexion directe jdbc

    Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

    la couche de connexion directe jdbc est également appelée jdbc couche d'application, parce que toutes les règles de partitionnement, toute la logique de partitionnement, y compris le traitement des transactions distribuées, tous ces problèmes se trouvent dans la couche application. Tous les projets sont composés de packages war. Tous les fragments sont écrits sous forme de packages jar et placés dans le package war. machine à exécuter. Oui, lorsque la machine virtuelle est en cours d'exécution, les fichiers d'octets du package war seront chargés dans la mémoire jvm par classLoder. Toute la logique de partitionnement est exploitée en fonction du côté mémoire

    (2) couche proxy

    .

    Quels sont les moyens de créer des sous-bases de données et des tables dans MySQL ?

    Comme le montre l'image, la couche proxy, toutes les règles de partitionnement et toute la logique de partitionnement, y compris le traitement des transactions distribuées, sont toutes écrites dans mycat. Toute la logique de partitionnement est exploitée du côté mycat

    (3) jdbc direct Avantages et inconvénients de la couche de connexion et de la couche proxy

    • La couche de connexion directe jdbc a des performances élevées, ne prend en charge que le langage Java, prend en charge les bases de données croisées

    • la couche proxy proxy a un faible coût de développement, prend en charge plusieurs langues, ne prend pas en charge les bases de données croisées

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer