All Projects → simvux → sfsdb

simvux / sfsdb

Licence: MIT license
Simple yet extensible database you already know how to use

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to sfsdb

loQL
loQL is a lightweight, open source npm package that caches API requests with service workers, unlocking performance gains and enabling offline use.
Stars: ✭ 49 (+36.11%)
Mutual labels:  caching, indexeddb
Elasticsearch
The missing elasticsearch ORM for Laravel, Lumen and Native php applications
Stars: ✭ 375 (+941.67%)
Mutual labels:  caching, indexing
cms
A general purpose java cms
Stars: ✭ 23 (-36.11%)
Mutual labels:  caching
pony-ssh
vscode plugin for fast remote editing over ssh
Stars: ✭ 26 (-27.78%)
Mutual labels:  caching
gdrive-index
An index server for Google Drive
Stars: ✭ 107 (+197.22%)
Mutual labels:  indexing
hazelcast-csharp-client
Hazelcast .NET Client
Stars: ✭ 98 (+172.22%)
Mutual labels:  caching
extension
web scraping extension
Stars: ✭ 28 (-22.22%)
Mutual labels:  indexeddb
btree
A persistent B+Tree (clustered index) implementation in Rust.
Stars: ✭ 167 (+363.89%)
Mutual labels:  indexing
PHP-File-Cache
Light, simple and standalone PHP in-file caching class
Stars: ✭ 34 (-5.56%)
Mutual labels:  caching
http-server-pwa
👾 http-server alike but for serving and rendering PWA: pwa-server
Stars: ✭ 14 (-61.11%)
Mutual labels:  indexing
secondary
Redis Secondary Indexing Module, been suspended see: https://github.com/RediSearch/RediSearch/
Stars: ✭ 33 (-8.33%)
Mutual labels:  indexing
acebase
A fast, low memory, transactional, index & query enabled NoSQL database engine and server for node.js and browser with realtime data change notifications
Stars: ✭ 288 (+700%)
Mutual labels:  indexeddb
quranize
transform transliteration to Quran text
Stars: ✭ 13 (-63.89%)
Mutual labels:  indexing
kvs
Lightweight key-value storage library for Browser, Node.js, and In-Memory.
Stars: ✭ 126 (+250%)
Mutual labels:  indexeddb
shortcut
Rust crate providing an indexed, queryable column-based storage system
Stars: ✭ 28 (-22.22%)
Mutual labels:  indexing
cachecontrol
Minimal HTTP cache management library in Scala
Stars: ✭ 13 (-63.89%)
Mutual labels:  caching
performance-dashboard
Magento 2 Performance Dashboard
Stars: ✭ 60 (+66.67%)
Mutual labels:  caching
infinispan-spring-boot
Infinispan Spring Boot starter. Use this starter in your Spring Boot applications to help you use Infinispan+Spring integration in embedded and client/server mode
Stars: ✭ 61 (+69.44%)
Mutual labels:  caching
TheLastTime
C# .NET 5 Blazor WebAssembly Progressive Web Application that tracks when was the last time you did something
Stars: ✭ 23 (-36.11%)
Mutual labels:  indexeddb
indexeddb-orm
Indexed DB ORM
Stars: ✭ 53 (+47.22%)
Mutual labels:  indexeddb

Simple File-System Database

Why another database?

The problem with existing databases is that you have to learn them. Sfsdb is a high performance, incredibly simple yet extensible database, made to feel as native to the language as possible. If you know Rust, you can already use Sfsdb. Saving and Loading data is rather simple, so why is putting it in a database so complicated?

Meet Sfsdb

Features

  • No runtime dependencies or external configuration
  • High performance, Just run the benchmarks!
  • Optional caching, Automatically managed for a free performance boost at no usage cost
  • Optional indexing, Bundle index data together with your saves and query them with the Rust language itself

Status

Some concerns have been raised about how redundency is handled during concurrent access. This has made me rethink some of the design decision and some internal drastic changes will be made. For these reasons I cannot recommend using Sfsdb in production yet.

Usage

At it's core the only required functions are new(location), save(key, value) and <T>::load(key). However there's more abstractions using closures if you're using the Indexed version. The goal is to have a simple core that's extensible through intergrations of the Rust language itself.

Documentation

API Documentation

Or, use the examples.
$ git clone https://github.com/AlmightyFloppyFish/sfsdb; cd sfsdb
$ cargo run --release --example simple
$ cargo run --release --example cached
$ cargo run --release --example indexed
$ cargo run --release --example benchmark

Benchmarks

Don't want to compile the benchmark example? Well here's my results

(Simple) Saving justin 1000 times took: 40.561932ms
(Simple) Loading justin (with key '400') 1000 times took: 3.490118ms

(Cached) Saving justin 1000 times took: 44.653967ms
(Cached) Loading justin (with key '400') 1000 times took: 776.095µs

(Indexed + Cached) Saving justin 1000 times took: 85.815535ms
(Indexed + Cached) Loading justin (with key '400') 1000 times took: 662.987µs
(Indexed + Cached) Querying for all logged-in users (which yielded 500 results) took: 44.308µs
(Indexed + Cached) Querying for all locked-out users (which yielded 179 results) took: 24.893µs
Intel i7-6600U (4) @ 3.400GHz
SATA SSD
16GB RAM

Cross-language support

There's an experimental Golang version and plans for a Haskell version.
They might take some time however since they aren't just ports. But full rewrites made to feel as native to the languages as possible.

Contributing

Code contributions are absolutely welcomed! Just put in a pull-request and make sure you format with rustfmt

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].