web-dev-qa-db-fra.com

Qu'est-ce qu'une base de données en colonnes?

Je travaille avec l'entreposage depuis un certain temps maintenant.

Je suis intrigué par les bases de données à colonnes et la vitesse qu'elles ont à offrir pour la récupération des 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?
89
Raj More

Comment fonctionnent les bases de données à colonnes?
La base de données en colonnes est un concept plutôt un architecture/implémentation particulier. En d'autres termes, il n'y a pas de description particulière sur le fonctionnement de ces bases de données; en effet, plusieurs s'appuient sur un SGBD traditionnel, orienté lignes, stockant simplement les informations dans des tableaux avec une (ou plutôt souvent deux) colonnes (et ajoutant la couche nécessaire pour accéder facilement aux données en colonnes).

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. ..

  • performance...
  • exigences de stockage ...
  • facilité de modification du schéma ...

... dans les cas d'utilisation spécifiques des SGBD.
En particulier, ils offrent des avantages dans les domaines mentionnés lorsque l'utilisation type 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 une implémentation commerciale, gratuite et open-source des bases de données en colonnes. Voir la liste à la fin de l'article de Wikipedia ( Wikipedia pour commencer.
Attention, plusieurs de ces implémentations ont été introduites pour répondre à un besoin particulier (par exemple très petite empreinte, distribution très compressible des données ou émulation de matrice de rechange, etc.) plutôt que de fournir SGBD orienté colonnes à usage général en soi.

Remarque: La remarque sur "l'orientation à but unique" 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) de stocker des entités d'enregistrement. Par conséquent, cette approche est utilisée lorsque l'approche orientée vers la ligne n'est pas satisfaisante, et a donc tendance à
a) être ciblé pour un but particulier b) recevoir moins de ressources/d'intérêt que de travailler sur une approche tabulaire "Usage général", "Essayé et testé".

A titre indicatif, le modèle de données Entity-Attribute-Value (EAV) peut être une stratégie de stockage alternative que vous souhaiterez peut-être considérer. Bien que distinct du modèle "pure" de colonnes DB, l'EAV partage plusieurs des caractéristiques des bases de données colonnes.

47
mjv

Comment fonctionnent les bases de données en colonnes? Le concept définissant un magasin de colonnes est que les valeurs d'une table sont stockées de manière contiguë par colonne. Ainsi, le tableau des fournisseurs classique de la base de données des fournisseurs et des pièces de CJ Date:

SNO  STATUS CITY    SNAME
---  ------ ----    -----
S1       20 London  Smith
S2       10 Paris   Jones
S3       30 Paris   Blake
S4       20 London  Clark
S5       30 Athens  Adams

serait stocké sur le disque ou en mémoire quelque chose comme:

S1S2S3S4S5;2010302030;LondonParisParisLondonAthens;SmithJonesBlakeClarkAdams 

Cela contraste avec un magasin en ligne traditionnel qui stockerait les données plus comme ceci:

S120LondonSmith;S210ParisJones;S330ParisBlake;S420LondonClark;S530AthensAdams

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 Excel fera des agrégations comme des totaux et des 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 ressortir 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.

240
Paul Mansour

Je dirais que le meilleur candidat pour comprendre les bases de données orientées colonnes est de vérifier HBase ( Apache Hbase ). Vous vérifiez le code et explorez davantage pour en savoir plus sur la mise en œuvre.

3
hari_sree

En outre, les bases de données 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 explique un peu plus.

Vous pouvez également être intéressé par un nouveau rapport de Carl Olofson d'IDC sur la technologie SGBD de 3e génération. Il discute en colonnes, et al. Si vous n'êtes pas un client IDC vous pouvez l'obtenir gratuitement sur notre site. Il organise é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.)

2
kim stanick

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 les données d'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. Apache Hbase et Google BigTable (utilisés par Google pour sa recherche, Analytics, Maps et Gmail) sont deux bases de données orientées colonnes largement utilisées. Ils conviennent aux projets Big Data. Une base de données orientée colonne excelle lors des opérations de lecture sur un nombre limité de colonnes, mais 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

1
Razan Paul

Information produit. Cela peut aider. Il s'agissait de présenter des produits sur une recherche Google.

http://www.vertica.com/

http://www.paraccel.com/

http://www.asterdata.com/index.php

1
S.Lott

kx est une autre base de données en colonnes, par exemple utilisée dans le secteur financier. La licence coûte quelque 50 000 $ la dernière fois que j'ai vérifié. Aucune optimisation nécessaire, aucun index nécessaire, car kx a des opérateurs puissants (équivalents matlab: .*, kron, bsxfun, ...).

1
user2987828