CupidDB

Meet CupidDB

CupidDB is an in-memory columnar database. It not only stores data in columnar format, but also communicates with clients using columnar protocol. This makes CupidDB serialize and deserialize at an unparalleled speed and efficiency. CupidDB is ideal for caching Pandas DataFrame and other Apache Arrow compatible datasets.

Fast

Fast

Designed from the ground up to be faster than all other databases at caching tabular data, CupidDB sends data over the network in a way that is efficient to serialize and deserialize.
Simple

Simple

Easy to get started with a simple Docker container. Simple client API to interact with the server. It just works out of the box.
Free

Free

CupidDB is open-source under the Apache License 2.0. We are committed to keeping it free for the community.

Getting Started

Run CupidDB

docker run --rm -p 5995:5995 cupiddb/cupiddb:latest

Run Client

Install client

$ pip install pycupiddb

Run the client

from pycupiddb import CupidClient, RowFilter
import pandas as pd
 
df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
 
cupid = CupidClient(host='localhost', port=5995)
 
cupid.set(key='key', value=df)
 
df = cupid.get_dataframe(key='key')
 
# Or using filters
 
filters = [
    RowFilter(column='b', logic='gte', value=5, data_type='int')
]
df = cupid.get_dataframe(
    key='key',
    columns=['a'],
    filters=filters,
)

CupidDB

In-memory Key-Value Data Store