Je travaille avec l'entreposage depuis un moment maintenant.
Je suis intrigué par les bases de données en colonnes et la vitesse qu'elles ont à offrir pour la récupération de données.
J'ai une question en plusieurs parties:
- Comment fonctionnent les bases de données en colonnes?
- En quoi diffèrent-ils des bases de données relationnelles?
Réponses:
Comment fonctionnent les bases de données en colonnes?
La base de données en colonnes est un concept plutôt une architecture / implémentation particulière . En d'autres termes, il n'y a pas une description particulière du fonctionnement de ces bases de données; en effet, plusieurs sont basés sur des SGBD traditionnels, orientés lignes, stockant simplement les informations dans des tables avec une (ou plutôt souvent deux) colonnes (et ajoutant la couche nécessaire pour accéder aux données en colonnes de manière simple).
En quoi diffèrent-ils des bases de données relationnelles? Ils diffèrent généralement des bases de données traditionnelles (orientées lignes) en ce qui concerne ...
... dans des cas d'utilisation spécifiques des SGBD .
En particulier, ils offrent des avantages dans les domaines mentionnés lorsque l'utilisation typique est de calculer des valeurs agrégées sur un nombre limité de colonnes, par opposition à essayer de récupérer toutes / la plupart des colonnes pour une entité donnée.
Existe-t-il une version d'essai d'une base de données en colonnes que je peux installer pour jouer? (Je suis sur Windows 7) Oui, il existe des implémentations commerciales, gratuites et également open-source de bases de données en colonnes. Voir la liste à la fin de l'article Wikipédia pour commencer.
Sachez que plusieurs de ces implémentations ont été introduites pour répondre à un besoin particulier (par exemple, très faible encombrement, distribution de données hautement compressible, ou émulation de matrice de rechange, etc.) plutôt que de fournir un SGBD orienté colonne à usage général en soi.
Remarque: La remarque sur «l'orientation à un seul objectif» de plusieurs SGBD en colonnes n'est pas une critique de ces implémentations, mais plutôt une indication supplémentaire qu'une telle approche pour les SGBD s'écarte de l'approche plus «naturelle» (et certainement plus largement utilisée) pour stocker les entités d'enregistrement. En conséquence, cette approche est utilisée lorsque l'approche axée sur les lignes n'est pas satisfaisante et a donc tendance à
a) être ciblée dans un but particulier b) recevoir moins de ressources / d'intérêt que les travaux sur «Usage général», «Essayé et Testé ", approche tabulaire.
À titre provisoire, le modèle de données Entity-Attribute-Value (EAV) peut être une stratégie de stockage alternative que vous voudrez peut-être envisager. Bien que distinct du modèle de base de données colonne «pur», EAV partage plusieurs des caractéristiques des bases de données colonne.
la source
Comment fonctionnent les bases de données en colonnes? Le concept déterminant d'un magasin de colonnes est que les valeurs d'une table sont stockées de manière contiguë par colonne. Ainsi la table des fournisseurs classique de la base de données fournisseurs et pièces de CJ Date:
serait stocké sur disque ou en mémoire quelque chose comme:
Ceci est en contraste avec un rowstore traditionnel qui stockerait les données plus comme ceci:
De ce concept simple découle toutes les différences fondamentales de performances, pour le meilleur ou pour le pire, entre un magasin de colonnes et un magasin de lignes. Par exemple, un magasin de colonnes excellera dans les agrégations telles que les totaux et les moyennes, mais l'insertion d'une seule ligne peut être coûteuse, tandis que l'inverse est vrai pour les magasins de lignes. Cela devrait être apparent à partir du diagramme ci-dessus.
En quoi diffèrent-ils des bases de données relationnelles? Une base de données de relations est un concept logique. Une base de données en colonnes, ou magasin de colonnes, est un concept physique. Ainsi, les deux termes ne sont pas comparables de manière significative. Les DMBS orientés colonnes peuvent être relationnels ou non, tout comme les SGBD orientés lignes peuvent adhérer plus ou moins aux principes relationnels.
la source
Je dirais que le meilleur candidat pour comprendre les bases de données orientées colonnes est de vérifier HBase ( Apache Hbase ). Vous pouvez vérifier le code et explorer plus avant pour en savoir plus sur l'implémentation.
la source
En outre, les bases de données en colonnes ont une affinité intégrée pour la compression des données et le processus de chargement est unique. Voici un article que j'ai écrit en 2008 qui en explique un peu plus.
Vous pourriez également être intéressé par un nouveau rapport de Carl Olofson d'IDC sur la technologie SGBD de 3e génération. Il discute colonnaire, et al. Si vous n'êtes pas un client IDC, vous pouvez l'obtenir gratuitement sur notre site. Il fait également un webinaire le 16 juin (également sur notre site).
(BTW, un commentaire ci-dessus répertorie les astérisques mais je ne pense pas qu'ils soient en colonnes.)
la source
Pour comprendre ce qu'est une base de données orientée colonne, il est préférable de la comparer avec une base de données orientée ligne.
Les bases de données orientées lignes (par exemple, MS SQL Server et SQLite) sont conçues pour renvoyer efficacement des données pour une ligne entière. Il le fait en stockant toutes les valeurs de colonnes d'une ligne ensemble. Les bases de données orientées lignes sont bien adaptées aux systèmes OLTP (par exemple, les ventes au détail et les systèmes de transactions financières).
Les bases de données orientées colonnes sont conçues pour renvoyer efficacement des données pour un nombre limité de colonnes. Il le fait en stockant toutes les valeurs d'une colonne ensemble. Deux bases de données orientées colonnes largement utilisées sont Apache Hbase et Google BigTable (utilisé par Google pour ses recherches, ses analyses, ses cartes et Gmail). Ils conviennent aux projets Big Data. Une base de données orientée colonne excellera dans les opérations de lecture sur un nombre limité de colonnes, cependant l'opération d'écriture sera coûteuse par rapport aux bases de données orientées ligne.
Pour en savoir plus: https://en.wikipedia.org/wiki/Column-oriented_DBMS
la source
Information produit. Cela peut aider. Il s'agissait de produits présentés sur une recherche Google.
http://www.vertica.com/
http://www.paraccel.com/
http://www.asterdata.com/index.php
la source
kx est une autre base de données en colonnes, par exemple utilisée dans le secteur financier. La licence coûte quelque peu 50 000 $ la dernière fois que j'ai vérifié. Aucune optimisation nécessaire, aucun index nécessaire, parce que les opérateurs puissants kx a (équivalents Matlab:
.*
,kron
,bsxfun
, ...).la source