Maison > base de données > tutoriel mysql > Quelques réflexions et conceptions sur la migration des données de MySQL vers hbase

Quelques réflexions et conceptions sur la migration des données de MySQL vers hbase

黄舟
Libérer: 2017-03-02 16:45:52
original
1409 Les gens l'ont consulté

1. Raisons de la migration

En raison du développement des affaires, l'utilisation de MySQL pour créer des index et des recherches a provoqué le blocage du flux de données dans la base de données, par exemple, à chaque fois qu'elle est pleine. La table est vidée, cela entraînera une pression trop forte, ce qui prendra beaucoup de temps et le volume de données actuel a essentiellement atteint 100 millions de niveaux. Si vous voulez que MySQL fournisse de meilleurs services, l'étape suivante doit être d'envisager des sous. -bases de données et tables basées sur ceci Dans ce cas, envisagez d'utiliser hbase pour le stockage de données, car la quantité de données que hbase peut supporter est beaucoup plus grande que mysql, et l'expansion des colonnes est également très pratique

2 .Quelques différences entre les bases de données relationnelles et Nosql

(1) Différences dans les méthodes de stockage

Dans les bases de données relationnelles telles que mysql, sqlserver, oracle, les données sont stockées en fonction des lignes, comme indiqué ci-dessous. figure :


Mais dans hbase, toutes les données sont stockées en fonction de colonnes, comme indiqué ci-dessous :


Le modèle logique de hbase est le suivant :


Parmi eux : com.cnn.ww correspond à rowkey, qui est équivalent au concept de clé primaire de mysql

contenu, ancre : Ces deux correspondent à la notion de famille de colonnes En terme de stockage physique, les données d'une même famille de colonnes sont stockées dans le même fichier

cnnsi.com. , mylook.ca : correspond à Les colonnes sous la famille de colonnes peuvent être ajoutées dynamiquement dans hbase

Les données de grille correspondantes représentent les données unitaires, c'est-à-dire correspondant à rowkey, cf : la valeur spécifique sous colonne

Parmi eux, tn : représente l'horodatage. Différentes versions des données unitaires

ont une structure de stockage comme suit :



(2) Quelques différences entre CRUD

CRUD est l'opération la plus basique et la plus couramment utilisée de la base de données. Il existe également des commandes correspondantes dans hbase. Par exemple, l'instruction de création de table pour. mysql ne sera pas détaillé ici. Pour le shell hbase est le suivant

créer 'table', 'columnfamily'

pour créer une table nommée table, la famille de colonnes est columnfamily, et quelques autres. Les données de taille de bloc et de version sont par défaut

Lors de la lecture des données, utilisez des instructions hbase telles que : get 'table', 'row', 'cf:column' pour obtenir les données correspondantes

Lors de la mise à jour. data, utilisez hbase Il n'y a pas de concept de mises à jour correspondantes, mais il y aura une nouvelle version, qui peut être reflétée à partir de l'horodatage. Les instructions utilisées sont

put 'table', 'row', 'cf : name', 'value '

peut attribuer la valeur de value à la famille de colonnes cf correspondante. Le nom de la colonne name est

La différence entre la suppression de données est que la suppression de données dans MySQL peut être effectuée. supprimez uniquement directement une ligne ou modifiez une certaine colonne sur vide, et vous pouvez supprimer directement une certaine colonne dans hbase

(3) Différences dans les index

Dans MySQL, vous pouvez créer index ou filtrer les requêtes, mais dans hbase, seule la clé de ligne est prise en charge La vitesse de requête la plus rapide

(4) Réflexions sur le développement de mysql vers nosql

Les bases de données relationnelles ont une longue histoire, mais lorsque la quantité de données augmente, par exemple, pour la base de données mysql, lorsque la quantité de données atteint des centaines de millions ou plus Parfois, si vous interrogez sur la base de l'index, l'effet peut ne pas être particulièrement évident. En fin de compte, vous ne pouvez interroger que sur la base de la clé primaire, ou évoluer progressivement vers un modèle de sous-base de données et de sous-table. Cependant, les sous-bases de données et les sous-tables posent beaucoup de problèmes d'exploitation, de maintenance et d'utilisation ; c'est pourquoi à cette époque, la clé primaire de la base de données NoSQL, abréviation de non seulement sql, a été progressivement développée et développée. s'est développé à mesure que la quantité de données a considérablement augmenté. En prenant hbase dans NoSQL comme exemple, il prend en charge les données TB et PB, ainsi que les colonnes. L'expansion est particulièrement flexible

(5) Pourquoi hbase peut-il stocker des quantités massives de données 🎜>

En fait, hbase peut être considéré comme le résultat du partitionnement de la sous-base de données mysql et de la table, mais la différence est que la sous-base de données mysql est divisée en La table prend en charge les index, etc., mais hbase ne prend en charge que les touches de ligne comme l'index de clé primaire. D'après le livre, nous pouvons savoir que les données hbase sont stockées en fonction des colonnes, et lorsque les données sont trop volumineuses, elles seront divisées en lignes, comme indiqué ci-dessous :



Mettez différentes régions sur différentes machines, et enfin le maître les gère, ce qui équivaut à Les lignes et les colonnes sont divisées pour stocker une grande quantité de données

3. Quelques problèmes rencontrés lors de la migration des données

(1) Problèmes d'index conjoint

Il y aura des problèmes dans mysql Dans certains cas d'index conjoint, par exemple, il y a un tableau de correspondance entre les produits et les catégories. Nous devons obtenir toutes les catégories d'un certain produit, et nous espérons également obtenir tous les produits d'une certaine catégorie. Dans mysql, nous pouvons suivre directement l'index commun pour répondre aux exigences, mais. dans Que dois-je faire si hbase ne peut interroger que rowkey ?

Après avoir lu les données pertinentes, j'ai obtenu les deux solutions suivantes

1 Créer une table large

dans hbase. , permettant aux colonnes entre les lignes d'être différentes, tant qu'il existe une famille de colonnes commune, alors pour la situation ci-dessus, vous pouvez créer une table large classée comme rowkey, comme indiqué ci-dessous

identifiant de classification , comme rowkey

product_id, car le nom de la colonne

la valeur est stockée comme s'il fallait supprimer


La clé de ligne ci-dessus est l'identifiant de classification, vous pouvez obtenir tous les product_id directement à partir de la ligne, puis filtrer si vous souhaitez le supprimer vous-même

2. Construire une table haute

Qu'est-ce que construire une table haute, c'est-à-dire que vous ne le faites pas Je n'ai pas besoin d'autant de colonnes, stockez simplement plusieurs lignes, car hbase est trié dans l'ordre du dictionnaire, donc la conception suivante peut être réalisée

classification id_product id, comme rowkey


Tant que vous parcourez les lignes commençant par 1, vous pouvez obtenir toutes les données

Essentiellement, les deux méthodes ci-dessus créent un index secondaire pour stocker les données


Ce qui précède contient quelques réflexions et conceptions sur la migration des données de MySQL vers hbase. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www. .php.cn) !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal