<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.11/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.11/ http://www.mediawiki.org/xml/export-0.11.xsd" version="0.11" xml:lang="en">
  <siteinfo>
    <sitename>MemCP</sitename>
    <dbname>memcp_wiki</dbname>
    <base>https://www.memcp.org/wiki/Main_Page</base>
    <generator>MediaWiki 1.39.1</generator>
    <case>first-letter</case>
    <namespaces>
      <namespace key="-2" case="first-letter">Media</namespace>
      <namespace key="-1" case="first-letter">Special</namespace>
      <namespace key="0" case="first-letter" />
      <namespace key="1" case="first-letter">Talk</namespace>
      <namespace key="2" case="first-letter">User</namespace>
      <namespace key="3" case="first-letter">User talk</namespace>
      <namespace key="4" case="first-letter">MemCP</namespace>
      <namespace key="5" case="first-letter">MemCP talk</namespace>
      <namespace key="6" case="first-letter">File</namespace>
      <namespace key="7" case="first-letter">File talk</namespace>
      <namespace key="8" case="first-letter">MediaWiki</namespace>
      <namespace key="9" case="first-letter">MediaWiki talk</namespace>
      <namespace key="10" case="first-letter">Template</namespace>
      <namespace key="11" case="first-letter">Template talk</namespace>
      <namespace key="12" case="first-letter">Help</namespace>
      <namespace key="13" case="first-letter">Help talk</namespace>
      <namespace key="14" case="first-letter">Category</namespace>
      <namespace key="15" case="first-letter">Category talk</namespace>
    </namespaces>
  </siteinfo>
  <page>
    <title>Main Page</title>
    <ns>0</ns>
    <id>2</id>
    <revision>
      <id>259</id>
      <parentid>256</parentid>
      <timestamp>2026-02-27T02:21:08Z</timestamp>
      <contributor>
        <username>Carli</username>
        <id>3</id>
      </contributor>
      <origin>259</origin>
      <model>wikitext</model>
      <format>text/x-wiki</format>
      <text bytes="5907" sha1="765drhjl97ynk40u51037uptkrtx7ns" xml:space="preserve">= MemCP – A Modern In-Memory Columnar Database =

'''MemCP is a high-performance, in-memory, column-oriented database designed for modern workloads.'''  
It provides a lightweight, developer-friendly alternative to traditional relational databases such as MySQL, with a focus on speed, compression, and direct API integration.
[[File:Memcp-Load.png|center|frameless|1600x1600px]]

----

== Key Features ==

* '''High Performance''': NUMA-aware, parallelized query execution optimized for multicore CPUs, large caches, and NVMe SSDs. Handles both OLTP and OLAP workloads efficiently.  
* '''Columnar Storage''': Data is stored by column for improved compression, reduced memory footprint, and faster analytical queries.  
* '''In-Memory Operation''': Designed to keep data in memory, with configurable persistence backends for durability.  
* '''Built-in APIs''': Exposes RESTful endpoints directly from the database, reducing middleware overhead.  
* '''Compression''': Multiple strategies (bit-packing, dictionary encoding, sequence compression) reduce storage by up to 80% compared to MySQL/MariaDB.  
* '''Simple Deployment''': Start with a single &lt;code&gt;docker run&lt;/code&gt; or &lt;code&gt;pm2 start&lt;/code&gt; command. Lightweight footprint (~10MB).  
* '''Extensible''': Written in Go, with pluggable storage backends and custom frontend support (SQL, RDF, REST).  

----

== Why MemCP? ==

Traditional relational databases were designed decades ago, optimized for spinning disks and single-core CPUs.  
MemCP rethinks the core design for today’s hardware and workloads:

* Real-time dashboards and analytics  
* Data-heavy SaaS platforms  
* Embedded systems with limited resources  
* High-throughput OLTP/OLAP hybrids  

----

== Quick Start ==

Clone and build MemCP from source:

&lt;pre&gt;
git clone https://github.com/launix-de/memcp
cd memcp
go get
make
pm2 start ./memcp ./data/
&lt;/pre&gt;

Connect with MySQL tooling:

&lt;pre&gt;
mysql -u root -p -P 3307
Enter password: admin
&lt;/pre&gt;

----

== MemCP vs. MySQL ==

{| class="wikitable"
! Feature
! MySQL
! MemCP
|-
| Storage Model
| Row-based
| Column-based (compressed)
|-
| Performance
| Good
| NUMA-optimized, in-memory
|-
| In-Memory Capable
| Limited
| Yes (default)
|-
| REST API Integration
| External
| Built-in
|-
| Installation Footprint
| ~150MB+
| ~10MB
|-
| Open Source
| ✅
| ✅
|}

----

== Architecture Overview ==

* '''Tables, Schemas, Columns''': Familiar SQL-style structures with a columnar physical layout.  
* '''Transaction Model''': Supports both OLTP and OLAP semantics with delta + main storage.  
* '''Persistence''': Configurable storage backends (filesystem, S3, Ceph).  
* '''Frontends''': Multiple query interfaces:
  - SQL frontend (MySQL wire protocol + SQL over REST)  
  - RDF/graph query engine  
  - Custom APIs via in-database web apps  

----

== Documentation ==

* [[What is OLTP and OLAP]]  
* [[History of the MemCP project]]  
* [[Hardware Requirements]]  
* [[Persistency and Performance Guarantees]]  
* [[Comparison: MemCP vs. MySQL]]  
* [[Install MemCP with Docker|Install with Docker]]  
* [[Compile MemCP from Source|Build from Source]]  
* [[Contributing]]  
* [[SQL over REST]]  
* [[In-Database WebApps|REST &amp; Microservices]]  

----


===Navigation===

====Introduction==== 
*[[What is OLTP and OLAP]]
*[[History of the MemCP project]]
*[[Hardware Requirements]]
*[[Persistency and Performance Guarantees]] 
*[[Current Status and Open Issues]]
*[[Comparison: MemCP vs. MySQL]]

====Getting Started====
*[[Install MemCP with Docker|With Docker]]
*[[With Singularity]]
*[[Compile MemCP from Source|Build from Source]]
*[[Contributing]] 
*[[Introduction to Scheme]]
*[[Full SCM API documentation]]

====Administration====

* [[Deployment]]
* [[Migration from MySQL and PostgreSQL]]
* [[Settings]]
*[[Process Hibernation]]
*[[Performance Measurement]]
*[[MemCP Console]]
*[[Performance Measurement]]

====Frontends====

=====SQL Frontend===== 
*[[Supported SQL]]
*[[Advanced SQL Tutorial]]
*[[SQL over REST]]
*[[Database Tools compatibility with MemCP|Supported Tooling]]
*[[How SQL Operators are implemented on MemCP]]
*[[Add custom SQL operators to MemCP]]

=====RDF Frontend===== 
*[[Introduction to RDF]]
*[[Advanced Graph Querying]]
*[[RDF templating and model driven development]]

=====Custom Frontends=====

*[[In-Database WebApps|In-Database WebApps and REST Services]]
*[[MemCP for Microservices]]
*[[Websockets in MemCP]]

==== Persistency Backends (= Storage) ====

* [[File System]]
* [[S3 Buckets]]
* [[Ceph/Rados]]
* [[Cluster Monitor]]

====Internals====

=====How things work in MemCP===== 

*[[Databases, Tables and Columns]]
*[[Shards, RecordIDs, Main Storage, Delta Storage]]
*[[Columnar Storage]]
*[[Transactions]] 
*[[Full SCM API documentation]] 

===== SCM Documentation =====

* [[SCM Builtins]]
* [[Arithmetic / Logic]]
* [[Strings]]
* [[Streams]]
* [[Lists]]
* [[Associative Lists / Dictionaries]]
* [[Date]]
* [[Vectors]]
* [[Parsers]]
* [[Sync]]
* [[IO]]
* [[Storage]]

=====Optimizations=====
*[[In-Memory Compression, Columnar Compression Techniques]]
*[[Temporary Columns]]
*[[Data Auto Sharding and Auto Indexing]]
* [[Parallel Computing]]


----

== Further Reading ==

* [https://github.org/launix-de/memcp MemCP on GitHub]  
* [https://www.vldb.org/pvldb/vol13/p2649-boncz.pdf VLDB Research Paper]  
* [https://cs.emis.de/LNI/Proceedings/Proceedings241/383.pdf LNI Proceedings Paper]  
* [https://www.dcs.bbk.ac.uk/~dell/teaching/cc/paper/sigmod10/p135-malewicz.pdf Large Graph Algorithms]  

Additional blog posts on design decisions, compression techniques, and performance optimization are available on the [https://launix.de/launix/ Launix blog].

----

== Community ==

MemCP is an open-source project maintained by developers for developers.  
Contributions are welcome — whether in the form of bug reports, feature requests, or pull requests.  

See: [[Contributing]]</text>
      <sha1>765drhjl97ynk40u51037uptkrtx7ns</sha1>
    </revision>
  </page>
</mediawiki>
