> For the complete documentation index, see [llms.txt](https://mariadb.com/docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mariadb.com/docs/analytics/mariadb-columnstore/columnstore-quickstart-guides/mariadb-columnstore-guide.md).

# MariaDB ColumnStore Guide

## Quickstart Guide: MariaDB ColumnStore

MariaDB ColumnStore is a specialized columnar storage engine designed for high-performance analytical processing and big data workloads. Unlike traditional row-based storage engines, ColumnStore organizes data by columns, which is highly efficient for analytical queries that often access only a subset of columns across vast datasets.

### What is MariaDB ColumnStore?

MariaDB ColumnStore is a **columnar storage engine** that integrates with MariaDB Server. It employs a **massively parallel distributed data architecture**, making it ideal for processing petabytes of data with linear scalability. It was originally ported from InfiniDB and is released under the GPL license.

### Key Benefits

* **Exceptional Analytical Performance:** Delivers superior performance for complex analytical queries (OLAP) due to its columnar nature, which minimizes disk I/O by reading only necessary columns.
* **High Data Compression:** Columnar storage allows for much higher compression ratios compared to row-based storage, reducing disk space usage and improving query speed.
* **Massive Scalability:** Designed to scale horizontally across multiple nodes, processing petabytes of data with ease.
* **Just-in-Time Projection:** Only the required columns are processed and returned, further optimizing query execution.
* **Real-time Analytics:** Capable of handling real-time analytical queries efficiently.

### Architecture Concepts (Simplified)

MariaDB ColumnStore utilizes a distributed architecture with different components working together:

* **User Module (UM):** Handles incoming SQL queries, optimizes them for columnar processing, and distributes tasks.
* **Performance Module (PM):** Manages data storage, compression, and execution of query fragments on the data segments.
* **Data Files:** Data is stored in column-segments across the nodes, highly compressed.

### Installation Overview

MariaDB ColumnStore is installed as a separate package that integrates with MariaDB Server. The exact installation steps vary depending on your operating system and desired deployment type (single server or distributed cluster).

**General Steps (conceptual):**

1. **Install MariaDB Server:** Ensure you have a compatible MariaDB Server version installed (e.g., MariaDB 10.5.4 or later).
2. **Install ColumnStore Package:** Download and install the specific MariaDB ColumnStore package for your OS. This package includes the ColumnStore storage engine and its associated tools.
   * **Linux (e.g., Debian/Ubuntu):** You would typically add the MariaDB repository configured for ColumnStore and then install `mariadb-plugin-columnstore`.
   * **Single Server vs. Distributed:** For a single-server setup, you install all ColumnStore components on one machine. For a distributed setup, you install and configure components across multiple machines.
3. **Configure MariaDB:** After installation, you might need to adjust your MariaDB server configuration (`my.cnf` or equivalent) to properly load and manage the ColumnStore engine.
4. **Initialize ColumnStore:** Run a specific `columnstore-setup` or `post-install` script to initialize the ColumnStore environment.

### Basic Usage

Once MariaDB ColumnStore is installed and configured, you can create and interact with ColumnStore tables using standard SQL.

#### **Creating a ColumnStore Table**

Specify `ENGINE=ColumnStore` when creating your table. Note that ColumnStore tables do not support primary keys in the same way as InnoDB, as their primary focus is analytical processing.

```sql
CREATE TABLE sales_data (
    sale_id INT,
    product_name VARCHAR(255),
    category VARCHAR(100),
    sale_date DATE,
    quantity INT,
    price DECIMAL(10, 2)
) ENGINE=ColumnStore;
```

#### **Inserting Data**

You can insert data using standard `INSERT` statements. For large datasets, bulk loading utilities (for instance, `LOAD DATA INFILE`) are highly recommended for performance.

```sql
INSERT INTO sales_data (sale_id, product_name, category, sale_date, quantity, price) VALUES
(1, 'Laptop', 'Electronics', '2023-01-15', 1, 1200.00),
(2, 'Mouse', 'Electronics', '2023-01-15', 2, 25.00),
(3, 'Keyboard', 'Electronics', '2023-01-16', 1, 75.00);
```

#### **Querying Data**

Perform analytical queries. ColumnStore will efficiently process these, often leveraging its columnar nature and parallelism.

```sql
-- Get total sales per category
SELECT category, SUM(quantity * price) AS total_sales
FROM sales_data
WHERE sale_date BETWEEN '2023-01-01' AND '2023-01-31'
GROUP BY category
ORDER BY total_sales DESC;

-- Count distinct products
SELECT COUNT(DISTINCT product_name) FROM sales_data;
```

## See Also

* [MariaDB ColumnStore Overview](https://mariadb.com/products/columnstore/)
* [DigitalOcean: How to Install MariaDB ColumnStore on Ubuntu 20.04](https://www.google.com/search?q=https://www.digitalocean.com/community/tutorials/how-to-install-mariadb-columnstore-on-ubuntu-20-04\&authuser=1)

<sub>*This page is: Copyright © 2025 MariaDB. All rights reserved.*</sub>

{% @marketo/form formId="4316" %}
