Dataset catalog with versioned storage - Python client and optional server
Project description
Bliq
Bliq is a lightweight dataset catalog that provides versioning, efficient storage, and easy querying.
Bliq supports local filesystem, S3 and Azure Blob Storage for data storage, as well as SQLite and PostgreSQL for metadata.
Bliq consists of three principal components:
- client - lightweight CLI and a Python library
- API - a backend server in Python
- UI - a frontend in Node.js
Run in Docker
The simplest way to run API and UI is using Docker image.
-- TODO: publish image, add example
For detaild instructions and examples, see [Docker.md].
Local installation
Client Only (Default)
For users who want to connect to existing Bliq servers:
pip install bliq
This installs only the client library with minimal dependencies (requests, pandas, pyarrow).
With Server
To run your own Bliq server:
pip install bliq[server]
This includes FastAPI, uvicorn, and database management tools.
With Storage Backends
# PostgreSQL support
pip install bliq[server,postgresql]
# S3 support
pip install bliq[server,s3]
# Azure Blob Storage support
pip install bliq[server,azure]
# Everything
pip install bliq[all]
Quick Start
Using the Client
from bliq import BliqClient
import pandas as pd
# Connect to server
client = BliqClient("http://localhost:8000")
# Create a dataset
df = pd.DataFrame({
"id": [1, 2, 3],
"name": ["Alice", "Bob", "Charlie"],
"age": [25, 30, 35]
})
result = client.create("team/users", "User data", df)
print(f"Created: {result}") # team/users/v1
# Load the dataset
df = client.load("team/users/v1")
print(df)
# Add more data (creates new version)
new_data = pd.DataFrame({
"id": [4],
"name": ["David"],
"age": [40]
})
result = client.extend("team/users/v1", new_data)
print(f"Extended: {result}") # team/users/v2
# Query with filtering
df = client.load("team/users/v2",
columns=["name", "age"],
filter="age > 30",
limit=10)
# List all datasets
datasets = client.list(namespace="team")
for ds in datasets:
print(f"{ds["name"]}: {ds["row_count"]} rows")
# Get detailed info
info = client.describe("team/users/v2")
print(info)
# Delete when done
client.erase("team/users/v1") # Delete specific version
client.erase("team/users") # Delete all versions
Running the API
# Start server (runs migrations automatically)
bliq serve
# Custom port
bliq serve --port 9000
# Development mode with auto-reload
bliq serve --reload
The server will be available at http://localhost:8000 with:
- REST API: http://localhost:8000/api/v1/*
- API Docs: http://localhost:8000/docs
- Health Check: http://localhost:8000/health
Configure via environment variables:
# Metadata database (default: SQLite)
export METASTORE_URL="postgresql://user:pass@localhost:5432/bliq"
# Dataset storage (default: local filesystem)
export DATASTORE_URL="s3://my-bucket/datasets"
# For S3
export AWS_ACCESS_KEY_ID="..."
export AWS_SECRET_ACCESS_KEY="..."
# For Azure
export AZURE_STORAGE_CONNECTION_STRING="..."
# Start server
bliq serve
Running the UI
cd frontend
npm run dev
The UI will be available at http://localhost:5173
CLI Commands
# Run database migrations
bliq migrate
# Check migration status
bliq migration-status
# List datasets
bliq list-datasets
bliq list-datasets --namespace team
# Show dataset details
bliq show-dataset team/users/v1
# Start server
bliq serve
Docker Deployment
For production deployments with web UI:
# Build image
docker build -f Dockerfile -t bliq:latest .
# Run with default settings (SQLite + local storage)
docker run -d \
--name bliq \
-p 8000:8000 \
-v bliq-data:/data \
bliq:latest
# Run with PostgreSQL + S3
docker run -d \
--name bliq \
-p 8000:8000 \
-e METASTORE_URL="postgresql://user:pass@postgres:5432/bliq" \
-e DATASTORE_URL="s3://bucket/path" \
-e AWS_ACCESS_KEY_ID="..." \
-e AWS_SECRET_ACCESS_KEY="..." \
bliq:latest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bliq-0.1.0.tar.gz.
File metadata
- Download URL: bliq-0.1.0.tar.gz
- Upload date:
- Size: 15.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bb5545505c47803e60738a37c0e3b9b2dd480ee4daddede01d2179eeb7bb8fe3
|
|
| MD5 |
822f1b0302e6e53111887f351653e7b5
|
|
| BLAKE2b-256 |
86d550c25c822d616dcd09043996647e86da3495a97c6289dd912fc615b68329
|
File details
Details for the file bliq-0.1.0-py3-none-any.whl.
File metadata
- Download URL: bliq-0.1.0-py3-none-any.whl
- Upload date:
- Size: 24.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c337dd6bab3b7fd06025049ecade97f80a901943e1677aaecd86fc837cd4df8f
|
|
| MD5 |
78d82b97ff499b924624a99523d190b3
|
|
| BLAKE2b-256 |
7f74b9493a2baa37cdddf2aa315cdd64f814adaf2e2d30631964c24e588436d2
|