Stockage en colonnes / analytique
Oracle
-- Database In-Memory: keep the table in memory in columnar format
ALTER TABLE sale INMEMORY;
-- With priority and compression:
ALTER TABLE sale INMEMORY PRIORITY HIGH
MEMCOMPRESS FOR QUERY HIGH;Oracle Database In-Memory (12.1.0.2+) accélère les requêtes analytiques en gardant les tables en mémoire au format colonne (In-Memory Column Store, IM) tout en conservant le format ligne sur disque (dual format). INMEMORY est une option sous licence séparée. Le paramètre inmemory_size dimensionne la zone IM.
PostgreSQL
-- Core PostgreSQL is row-based; columnar storage needs an extension:
-- Citus columnar access method:
CREATE EXTENSION IF NOT EXISTS citus;
CREATE TABLE sale_columnar (...) USING columnar;
-- Alternatives: the Hydra/cstore_fdw extensions.PostgreSQL de base n'offre qu'un stockage en lignes (heap). Pour le stockage en colonnes, on utilise la méthode d'accès 'columnar' de Citus (USING columnar), Hydra ou l'ancienne extension cstore_fdw ; elles apportent compression et vitesse de parcours pour les charges analytiques/entrepôt de données.
MySQL
-- Not applicable: core InnoDB does not offer columnar storage.
-- For analytics: MySQL HeatWave (cloud, in-memory columnar)
-- or integration with external ClickHouse/Apache Doris.MySQL standard (InnoDB) stocke en lignes et n'a pas de columnstore intégré. Pour l'accélération analytique, on utilise MySQL HeatWave (un accélérateur en colonnes en mémoire dans Oracle Cloud) ; les solutions on-premise utilisent généralement des moteurs en colonnes externes comme ClickHouse ou Apache Doris.
SQL Server
-- Clustered columnstore index (for analytic tables):
CREATE CLUSTERED COLUMNSTORE INDEX cci_sale ON dbo.sale;
-- Nonclustered columnstore on a rowstore table (HTAP):
CREATE NONCLUSTERED COLUMNSTORE INDEX ncci_sale
ON dbo.sale (city, product, amount, created_at);Les index columnstore de SQL Server (nonclustered en lecture seule en 2012 ; clustered modifiable en 2014 ; nonclustered modifiable en 2016) stockent les données par colonne avec une forte compression ; avec le batch mode, ils accélèrent fortement les requêtes analytiques riches en agrégations/parcours. Le clustered convient aux entrepôts de données, le nonclustered à l'HTAP.
MongoDB
-- Not applicable: MongoDB is document (row-like) based.
-- For analytics: dedicated Analytics Nodes in Atlas
-- or export to a columnar format ($out)/an external engine.MongoDB stocke les documents en BSON, de type ligne ; il n'y a pas de stockage en colonnes (columnstore) intégré. Pour les charges analytiques, on utilise des Analytics Nodes dédiés dans un replica set Atlas, Atlas Data Federation, ou l'export des données vers un système en colonnes (par ex. Parquet).
Redis
-- Not applicable: there is no concept of columnar storage.Redis est un magasin clé-valeur en mémoire ; il n'y a pas de distinction stockage ligne/colonne. Les agrégations analytiques se font avec des structures spécifiques comme Sorted Set, HyperLogLog (comptage approximatif) ou RedisTimeSeries ; il ne convient pas à l'OLAP à grande échelle.
Elasticsearch
# doc_values: fields are stored column-wise on disk (enabled by default).
# Required for sorting/aggregation; active on non-text fields.
PUT sale
{ "mappings": { "properties":
{ "amount": { "type": "double", "doc_values": true } } } }Pour le tri et les agrégations, Elasticsearch conserve les champs dans une structure en colonnes sur disque appelée doc_values (activée par défaut sur les champs numeric/keyword/date). Cette disposition en colonnes accélère les requêtes analytiques/d'agrégation ; elle est désactivée par défaut sur les champs text.