Home
Softono
PoloDB

PoloDB

Open source Apache-2.0 Rust
1.2K
Stars
58
Forks
36
Issues
14
Watchers
1 month
Last Commit

About PoloDB

PoloDB is an embedded document database.

Platforms

Web Self-hosted

Languages

Rust

Crates.io Discord docs.rs License

PoloDB is an embedded document database.

| Documentations |

Introduction

PoloDB is a library written in Rust that implements a lightweight MongoDB.

Why

PoloDB aims to offer a modern alternative to SQLite, which is currently the almost exclusive option for client-side data storage. Although SQLite is an old and stable software, it lacks some modern features. That's why we developed PoloDB, which is NoSQL, supports multi-threading and multi-sessions, and retains the embedded and lightweight features of SQLite.

Features

  • Simple and Lightweight
    • can be embedded library or a standalone server
  • Easy to learn and use
    • NoSQL
    • MongoDB-like API
  • Cross-Platform

Quick start

PoloDB is easy to learn and use:

use polodb_core::Database;
use serde::{Serialize, Deserialize};

#[derive(Debug, Serialize, Deserialize)]
struct Book {
    title: String,
    author: String,
}

let db = Database::open_path(db_path)?;
let collection = db.collection::<Book>("books");
collection.insert_one(Book {
    title: "The Three-Body Problem".to_string(),
    author: "Liu Cixin".to_string(),
})?;

Packages

  • polodb: The standalone server of PoloDB, which is compatible with MongoDB's wire protocol.
  • polodb_core: The core library of PoloDB, which can be embedded in your application.

Platform

Theoretically, PoloDB supports all platforms that the Rust compiler supports. But PoloDB is a personal project currently. Limited by my time, I have only compiled and tested on the following platforms:

  • macOS Big Sur x64
  • Linux x64 (Tested on Fedora 32)
  • Windows 10 x64

Manual

Roadmap

The features will be implemented one by one in order.

  • [x] Basic database API
    • [x] CRUD
    • [x] Transactions
    • [x] Serde
    • [x] Indexes(Alpha)
    • [x] Aggregation(Alpha)
  • [x] Command line Tools
  • [ ] Platforms
    • [x] MacOS
    • [x] Linux
    • [x] Windows
    • [ ] iOS
    • [ ] Android
  • [ ] Languages
    • [ ] Python
    • [ ] JavaScript