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