acid-store
is a library for secure, deduplicated, transactional, and verifiable data storage.
This library provides high-level abstractions for data storage over a number of storage backends. The goal is to decouple how you access your data from where you store it. You can access your data as an object store, a virtual file system, a persistent collection, or a content-addressable storage, regardless of where the data is stored. Out of the box, this library supports the local file system, SQLite, Redis, Amazon S3, SFTP, and many cloud providers as storage backends. Storage backends are easy to implement, and this library builds on top of them to provide features like encryption, compression, deduplication, locking, and atomic transactions.
For details and examples, see the documentation.
⚠️ This project is still immature and needs more testing. Testers are always appreciated, but please remember to back up your data! Also keep in mind that this code has not been audited for security. All the usual disclaimers apply.
This library provides the following abstractions for data storage.
This library provides the following storage backends out of the box.
The following results show read and write speeds for an in-memory repository with various configurations. An in-memory
repository is used to make benchmark results more consistent between runs and between machines. You can run the
benchmarks yourself by running cargo bench --all-features
.
Spec | Value --- | --- Processor | Ryzen 5 1600x Memory | 32 GB (3200MHz) OS | Linux 5.11
Chunking | Packing | Encryption | Compression | Read | Write --- | --- | --- | --- | --- | --- Fixed | None | None | None | 6090 MiB/s | 1920 MiB/s ZPAQ | None | None | None | 2670 MiB/s | 520 MiB/s Fixed | Fixed | XChaCha20-Poly1305 | None | 870 MiB/s | 610 MiB/s ZPAQ | Fixed | XChaCha20-Poly1305 | None | 840 MiB/s | 300 MiB/s