Conflict-free Replicated Document Store
Project description
Credos: Conflict-free Replicated Document Store
This is a work-in-progress package and not yet functional. (Popping a squat in the namespace real quick.)
The goal of this project is to create a replicated storage package using CRDTs and sqlite3 via the crdts and sqloquent packages, respectively. Using CRDTs, any number of updates can be made to a local replica without the need for any consensus or commitment mechanism -- so long as all updates (state deltas) are eventually applied by all replicas, all replicas will converge to the same state. Additionally, authorization will use tapescript, and serialization will probably use packify in early dev stages.
Ever want to have a replicated database with sub millisecond reads and writes that did not cost a fortune in dedicated database hosting costs? This should allow for applications to be built using an entirely new database model that requires only a few bootstrap nodes to connect application servers for blazingly bonkers fasterest databaseness.
Goals
The following are what will comprise the base system:
- Base models: LWWRegister/LWWMap + sqloquent
- Replicated key-value/document store
- Synchronization worker
- Auth system for sync protocol messages
Stretch Goals
The following are ideas I am contemplating once the base system is done:
- Sharded key-value/document store using Highest Random Weight/Rendezvous Hashing
- Record-level ACL
ISC License
Copyright (c) 2024 Jonathan Voss (k98kurz)
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyleft notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
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
File details
Details for the file credos-0.0.1.tar.gz
.
File metadata
- Download URL: credos-0.0.1.tar.gz
- Upload date:
- Size: 2.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8c729b99fcb66a985958358bb652eeb2a80d4c080801911be064a5bd1f5ee6c9 |
|
MD5 | ddd2d15a3f4f14e7fd63f55658f6f896 |
|
BLAKE2b-256 | 5b8f55d01afab727ec65178b098939492082b9ff9fcdeeabcced1be74c85abe9 |
File details
Details for the file credos-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: credos-0.0.1-py3-none-any.whl
- Upload date:
- Size: 2.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.0.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd4465280927f2783dcc4b1b35ca4e655804c0a18a106f7f667108152bf7c453 |
|
MD5 | 211a66281c3a8946637d7c5c5062d6e1 |
|
BLAKE2b-256 | 197ca775791644bf3b2ff2c96d9133730bdf5c69e3ff551ebb47172976880205 |