PoloDB is an embedded JSON-based database

Simple/Lightweight/Easy to learn and use

PoloDB

PoloDB is an embedded JSON-based database.

中文版

Features

  • Simple/Lightweight/Easy to learn and use
  • Various language bindings
  • Embedded (No standalone processes, no cross-process calls)
  • No runtime dependency
  • NoSQL
  • MongoDB-like API
  • Cross-Platform
  • Store data in ONE file

Introduction

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

PoloDB has no dependency(except for libc), so it can be easily run on most platforms (thanks for Rust Language).

The data of PoloDB is stored in a file. The file format is stable, cross-platform, and backwards compatible.

The API of PoloDB is very similar to MongoDB. It's very easy to learn and use.

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

  • Rust
  • Node.js
  • Python

Developing Plan

The features will be implemented one by one in order.

  • Basic database API
    • CURD
    • Transactions
    • Indexes
    • Aggregation
  • Command line Tools
  • Language bindings
    • C/C++
    • Go
    • Python (Doc)
    • Node.js (Doc)
    • Java/Kotlin
    • Dart
  • Tons of tests
  • Multi-threads support
  • Extension API
    • Data Encryption
    • JavaScript Engine
  • Visualization Tools

Contribute

Module Path Description
Core src/polodb_core The core implementation of the Database
C Library src/polodb_clib The C FFI implementation of PoloDB
CLI tool src/polodb_cli The command line tool of PoloDB
Node.js bindings polodb.js The Node.js binding using N-API
Python bindings pypolodb The CPython binding using Extension API
Issues

Collection of the latest Issues

whizsid

whizsid

2

Since bson crate have all functionalities that you implemented in polodb_bson crate. And it have additional features such as serde , chrono. Do you have a plan to use bson crate in this project? If you like, then I can work on it. Because I am working on a project that need to use mongodb and polodb in same time.

peepopoggers

peepopoggers

10

When the collection.update runs in the below snippet (after debug:update), it fails to update the value in the database.

referenced to update by using:

when collection.find_one("_key": "bybit_default_pair") is ran, it returns the first inserted value. like the update never happened.

peepopoggers

peepopoggers

1

It would be useful to have some examples for this module, such as in an examples/ folder.

vincentdchan

vincentdchan

enhancement
0

Currently, I wrote some macro for user to generate json structures friendly

But it's not friendly enough for nested structures:

I think this way would be more elegant:

Information - Updated Mar 28, 2022

Stars: 351
Forks: 20
Issues: 7

A cross-platform GUI library for Rust focused on simplicity and type-safety

Cross-platform support (Windows, macOS, Linux, and text inputs, Debug overlay with performance metrics

A cross-platform GUI library for Rust focused on simplicity and type-safety
Misc

248

A CLI tool to easily get a new project up and running by using pre-made...

A rust cross platform rust boilerplate template to get up and running quickly

A CLI tool to easily get a new project up and running by using pre-made...

HAL : Hyper Adaptive Learning

Rust based Cross-GPU Machine Learning

HAL : Hyper Adaptive Learning

A crossplatform Rust bindings for the soloud audio engine library

Supported formats: wav, mp3, ogg, flac

A crossplatform Rust bindings for the soloud audio engine library

Safe wrapper around SPIR-V Cross

Safe wrapper around SPIRV-Cross for use with Rust

Safe wrapper around SPIR-V Cross

🐏 rpmalloc-rs

Cross-platform Rust global memory allocator using rpmalloc README for a detailed description of how the allocator works, peforms, and compares with other allocators

🐏 rpmalloc-rs

Rust crate providing cross-platform information about the notebook batteries

battery provides a cross-platform unified API to a notebook batteries state

Rust crate providing cross-platform information about the notebook batteries

rust-clipboard is a cross-platform library for getting and setting the contents of the OS-level clipboard

It has been tested on Windows, Mac OSX, GNU/Linux, and FreeBSD

rust-clipboard is a cross-platform library for getting and setting the contents of the OS-level clipboard

A cross-platform GUI library for Rust focused on simplicity and type-safety

Cross-platform support (Windows, macOS, Linux, and text inputs, Debug overlay with performance metrics

A cross-platform GUI library for Rust focused on simplicity and type-safety

A cross platform Rust library for efficiently walking a directory recursively

Comes with support for following symbolic links, controlling the number of

A cross platform Rust library for efficiently walking a directory recursively

debug-here: a cross platform rust debugger hook

Debuggers are a great way to examine the state of a program

debug-here: a cross platform rust debugger hook
Facebook Instagram Twitter GitHub Dribbble
Privacy