DBAtlas · Atlas für Datenbankbetrieb

Spaltenorientierte Speicherung / Analytik

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+) beschleunigt analytische Abfragen, indem Tabellen spaltenorientiert im Speicher gehalten werden (In-Memory Column Store, IM), während auf Platte das Zeilenformat erhalten bleibt (Dual Format). INMEMORY ist eine separat lizenzierte Option. Der Parameter inmemory_size legt die Größe des IM-Bereichs fest.

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.

Core-PostgreSQL bietet nur zeilenbasierte Speicherung (Heap). Für spaltenorientierte Speicherung werden die Access Method 'columnar' von Citus (USING columnar), Hydra oder die ältere Extension cstore_fdw genutzt; sie bieten Kompression und Scan-Geschwindigkeit für Analytik-/Data-Warehouse-Workloads.

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.

Standard-MySQL (InnoDB) ist zeilenbasiert und hat keinen eingebauten Columnstore. Zur Analytikbeschleunigung wird MySQL HeatWave genutzt (ein spaltenorientierter In-Memory-Beschleuniger in Oracle Cloud); On-Premises-Lösungen setzen meist externe spaltenorientierte Engines wie ClickHouse oder Apache Doris ein.

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);

Columnstore-Indizes in SQL Server (2012 schreibgeschützt nonclustered; 2014 aktualisierbar clustered; 2016 aktualisierbar nonclustered) speichern Daten spaltenweise mit hoher Kompression; mit Batch Mode beschleunigen sie aggregations-/scanlastige analytische Abfragen stark. Clustered eignet sich für Data Warehouses, nonclustered für 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 speichert Dokumente als zeilenähnliches BSON; eine eingebaute spaltenorientierte Speicherung (Columnstore) gibt es nicht. Für analytische Workloads werden dedizierte Analytics Nodes in einem Atlas Replica Set, Atlas Data Federation oder der Export in ein spaltenorientiertes System (z. B. Parquet) genutzt.

Redis

-- Not applicable: there is no concept of columnar storage.

Redis ist ein In-Memory-Key-Value-Store; die Unterscheidung zwischen Zeilen- und Spaltenspeicherung gibt es nicht. Analytische Aggregationen erfolgen mit speziellen Strukturen wie Sorted Set, HyperLogLog (approximatives Zählen) oder RedisTimeSeries; für OLAP im großen Maßstab ist Redis nicht geeignet.

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

Für Sortierungen und Aggregationen hält Elasticsearch Felder in einer plattenbasierten spaltenorientierten Struktur namens doc_values (bei numeric-/keyword-/date-Feldern standardmäßig aktiv). Dieses spaltenorientierte Layout beschleunigt Analytik-/Aggregationsabfragen; bei text-Feldern ist es standardmäßig deaktiviert.

In DBAtlas öffnen →