Le mystère de l'origine de la base de données en colonnes HBase

Une donnée de masse de l'aube

  Auparavant, à cause du manque de façon rentable pour stocker toutes les informations, de nombreuses entreprises ignorent certaines sources de données, mais maintenant cette approche fera non compétitive de l'entreprise. Nécessité de stocker et d'analyser chaque point de données dans l'augmentation croissante de la demande a conduit directement à la plate-forme e-commerce pour les entreprises de produire plus de données.

  Dans le passé, la seule option est enregistrée après la suppression des données recueillies, telles que l'enregistrement ne les derniers jours de N de données. Cependant, cette approche n'est possible à court terme, il ne peut pas stocker toutes les données pendant des mois ou des années à recueillir, par conséquent, de construire un modèle mathématique couvrant toute la période de temps ou d'améliorer un nouveau couru algorithme toutes les données précédentes afin de obtenir de meilleurs résultats.

  Google et Amazon est de reconnaître la valeur du modèle de données, ils ont commencé à développer des solutions qui répondent à vos besoins d'affaires. Par exemple, Google dans une série de publications techniques décrivent un stockage évolutif au matériel de produits à base de système de poignée. communauté open source de Google pour utiliser ces idées pour réaliser le projet open source Hadoop de deux modules: HDFS et MapReduce.

  Hadoop est bonne à tout magasin, données semi-structurées, et même des données non structurées, les utilisateurs peuvent d'aide à l'analyse des données de décider comment interpréter les données, tout en permettant à l'utilisateur de modifier la classification des données de façon, une fois que l'utilisateur a mis à jour l'algorithme, seulement nécessité de ré-analyser les données.

  Hadoop est actuellement presque un complément à tous les systèmes de bases de données existantes, il permet à l'utilisateur avec un espace illimité pour le stockage de données, ce qui permet aux utilisateurs de stocker et de récupérer des données au bon moment, et pour stocker des fichiers volumineux, un accès par lots et un accès en continu à faire optimisé.

II. Colonnaire base de données

  En tant que colonne de base de données dans l'unité de polymérisation de données, alors les valeurs de la colonne sont stockées séquentiellement dans le disque, ce mode de réalisation diffère de la base de données traditionnelle ligne stockée mémorisée dans la mémoire de ligne stocke successivement la base de données entière de la ligne. suit la figure:

  

  

  colonne de stockage apparaît principalement basé sur l'hypothèse: Pour toute question, toutes les valeurs spécifiées sont nécessaires. Surtout dans la base de données d'analyse, cette hypothèse est très courante, donc besoin de choisir un mode de stockage plus approprié. Dans cette nouvelle conception, réduit le O total est juste l'un des multiples I / facteurs, il a aussi d'autres avantages: parce que le type de données de la colonne est similaire à un produit naturel, même avec une légère différence entre chacun de la logique, mais encore selon la structure que les lignes de données stockées ensemble plus propices à la compression, parce que la plupart de l'algorithme de compression qu'une attention limitée à la fenêtre de compression.

  Comme les algorithmes de compression supplémentaires ou de compression préfixés expertise est basée sur le type de magasins de colonne personnalisée, ce qui améliore considérablement le taux de compression. meilleur ratio de compression aide à réduire les résultats de la consommation de bande passante sont renvoyés.

  Il est à noter que, du point de vue d'un SGBDR typique, le stockage de base de données HBase est pas une colonne, mais qui utilise un format de stockage de colonne sur le disque pour stocker des données dans un format de colonne sur le disque. Cependant, la base de données classique est différentes colonnes: la colonne base de données traditionnelle plus appropriée pour le scénario d'accès aux données en temps réel, HBase clé plus approprié pour l'accès aux données ou l'accès aux données ordonné.

III. Question système de base de données relationnelle

  jeu SGBDR dans la conception et la mise en œuvre des applications métier un rôle indispensable [au moins le rester dans un avenir prévisible]. Tant que l'utilisateur a besoin de conserver les informations utilisateur, les produits, les sessions, et d'autres ordres, certains services seront utilisés pour fournir backend de stockage de données persistantes pour le serveur d'applications front-end. Cette structure est très approprié pour une quantité limitée de données, mais dans le cas de la croissance rapide des données, cette structure devient insuffisante.

  En outre, la base de données peut également utiliser les fonctionnalités intégrées, telles que les procédures stockées. Lorsque le système a besoin de données pour assurer la cohérence des données est toujours plus d'une table, vous pouvez utiliser des procédures stockées [affaires] pour résoudre le problème de la cohérence des multiples clients des données de mise à jour simultanément. Les transactions fournissent des propriétés atomiques à travers le tableau des données de mise à jour, vous pouvez apporter des modifications tout simultanément visibles ou invisibles. SGBDR fournit un soi-disant propriétés ACID, ce qui signifie que les données d'utilisateur est forte consistance. Se référant à la relation entre les différents responsables de la structure de la table de contrainte d'intégrité, l'utilisation du langage spécifique à domaine qui peut écrire une requête SQL complexe. Finalement, l'utilisateur n'a pas besoin de la relation est en fait la façon dont les données sont stockées, seule la relation entre le concept d'un niveau plus élevé, par exemple, la structure de la table, structure de la table fournit un modèle d'accès très fixe dans l'application.

  Souvent, ce modèle est conçu pour répondre aux besoins d'une plus longue période de temps. Mais avec l'augmentation du nombre d'utilisateurs, un serveur de base de données partagée augmentera la pression. Augmenter le nombre de serveurs d'application est relativement facile, car le serveur d'application est partagée entre la base de données centrale, mais avec la CPU partagée, et je prends la parole charge serveur / O central, il sera difficile de prédire combien de temps cette croissance peut supporter.

  La première étape consiste à réduire la pression à augmenter à partir d'un serveur, la lecture séparée et écriture lues en parallèle. Ce programme maintient un serveur de base de données primaire, mais le serveur de base de données primaire servent maintenant que la demande d'écriture à le faire principalement en raison de la plupart des grandes demande du navigateur des utilisateurs est généré, de sorte que la demande d'écriture est beaucoup plus petite que la demande de lecture. Si ce programme est également en raison de l'augmentation continue du nombre d'utilisateurs et ne parviennent pas, ou réduire les performances du système, comment devrions-nous faire?

  La prochaine étape est pratique courante pour augmenter le cache, comme Memcached. Vous pouvez maintenant lire l'accès aux données du système de mémoire cache à grande vitesse, mais ce programme ne peut garantir la cohérence des données, car l'utilisateur de mettre à jour les données à la base de données, et la base de données ne prendra pas l'initiative de mettre à jour les données dans le système de cache, il est si nécessaire vues de bases de données et des tampons de synchronisation le plus rapidement possible, le temps de mise à jour des données de cache pour mettre à jour les données de base de données afin de minimiser la différence.

  Bien que cette approche peut soulager la pression des requêtes de lecture, les demandes d'écriture mais la pression augmente le problème persiste. Une fois que le serveur base de données primaire écriture dégradation des performances, nous pouvons renforcer le serveur principal à un serveur que l'expansion verticale, de sorte que le serveur utilise davantage de ressources pour renforcer. Si vous utilisez un schéma de configuration maître-esclave, il est nécessaire de faire les mêmes performances du serveur vers le serveur principal, sinon il ne pourra pas continuer avec le serveur maître de la vitesse de mise à jour du serveur. En bref, le cas initial de dépenser davantage de ressources en comparaison.

  Avec l'utilisation du projet, le projet devra ajouter des fonctionnalités plus nouvelles, mais ces nouvelles fonctionnalités sera sans aucun doute transformé la base de données requête pour l'arrière-plan. La mise en œuvre réussie de SQL précédente instruction de jointure est exécutée soudainement ralenti, ou tout simplement ne peut pas être effectuée, cette fois-ci a dû utiliser la structure de stockage de paradigme inverse. Si la situation empire, nous devons cesser d'utiliser des procédures stockées, des procédures stockées parce que finalement non exécutoire lente. Pour l'essentiel, réduire le stockage des données dans la base de données d'accès optimize.

  De plus en plus d'utilisateurs, la charge continuera d'augmenter, de façon logique pour obtenir le temps le plus cher en temps à l'avance du programme d'enquête, donnant aux utilisateurs plus rapides des services de données. En fin de compte, a dû abandonner l'utilisation des index secondaires, la raison est d'augmenter la quantité de données en même temps, la quantité d'index est suffisamment grand pour permettre la performance de la base de données baisse consécutive. Le dernier mode de requête peut être fournie que conformément à la requête de clé primaire.

Si la charge dans les prochains mois devrait augmenter un ordre de grandeur ou comment dois - je faire de plus? A ce stade , l'utilisateur peut tenir compte des données de partitionnement dans plusieurs bases de données, mais utilisera cette opération de système et les opérations de maintenance dans un cauchemar, et très coûteuse, et donc pas la solution la plus raisonnable. Mais en substance, l'utilisation de SGBDR , mais aussi parce que personne ne peut choisir.

  décrit les partitionner schéma des niveaux logiques divisés données. Les caractéristiques de ce système est que les paquets de données ou serveur de stockage sous-fichier, plutôt que de façon continue stockées.

  Les données de la partition est mis en œuvre dans une plage fixe: Avant que les données entrantes, doivent être répartis à l' avance de la gamme de stockage de données est bonne, si une division de niveau de pression est supérieure à sa capacité d'offre, vous devez Repartitionnez les données et les données Migrer. Et migrer les Repartition données sont des ressources très longue opération, ce qui équivaut à refaire les données, puis re démarcation latéralement résolue. À grande échelle opération de copie consommera une grande quantité d' E / S des ressources, tout en temporairement les besoins de stockage accrue. Dans les données repartitionner processus, l'application client devra encore effectuer des opérations de mise à jour, mais cette fois la mise à jour sera repartitionner affectées très lentement effectue.

  méthodes de partitions virtuelles peuvent être utilisées pour réduire la consommation des ressources, des partitions virtuelles définies par des mots-clés plus large éventail de partitions de données, chaque charge de serveur de données nombre égal de partitions. Mais dans le nouveau serveur lorsque le besoin de recharger la partition de données, et ce processus doivent encore des données Migrer vers un nouveau serveur. Partition est complètement hors opération utilisateur simple après, sans le soutien de base de données, pourrait causer des dommages graves au système de production.

IV. Systèmes de bases de données non relationnelles [ Non-seulement-SQL, NoSQL ]

  marque symbolique est en fait un bon choix: les derniers systèmes de stockage ne fournissent pas par SQL moyens de données de requête fournir seulement quelques - uns des plus simple, similaire à l' API interface de la façon d'accéder aux données. Cependant, il y a des outils pour NoSQL fournit le stockage de données SQL langue d'entrée pour la base de données relationnelle utilisée pour effectuer certaines conditions de requête complexes. Par conséquent, les restrictions à la requête, les bases de données relationnelles et base de données non relationnelle et il n'y a pas de distinction stricte.

  En fait, à la fois sur la couche de fond il y a une différence, en particulier en ce qui concerne le mode ou ACIDE propriétés de l' opération, de sorte que l ' architecture réelle de stockage est pertinente. Beaucoup de nouveaux systèmes de ce genre est d' abord et avant tout à faire: abandonner un certain nombre de contraintes pour améliorer l' évolutivité. Par exemple, ils ne supportent pas les transactions en général ou index secondaire. Plus important encore , ce type de système est pas de modèle fixe, il peut changer avec l'application du changement flexible.

Je suppose que tu aimes

Origine www.cnblogs.com/yszd/p/12587825.html
conseillé
Classement