70 lines
2.1 KiB
Markdown
70 lines
2.1 KiB
Markdown
CavalliumDB Engine
|
|
==================
|
|
![Maven Package](https://github.com/Cavallium/CavalliumDBEngine/workflows/Maven%20Package/badge.svg)
|
|
|
|
A very simple reactive wrapper for RocksDB and Lucene.
|
|
|
|
This is not a database, but only a wrapper for Lucene Core and RocksDB, with a bit of abstraction.
|
|
|
|
# Features
|
|
- **RocksDB key-value database engine**
|
|
- Snapshots
|
|
- Multi-column database
|
|
- Write-ahead log and corruption recovery
|
|
- Multiple data types:
|
|
- Single value (Singleton)
|
|
- Map (Dictionary)
|
|
- Composable nested map (Deep dictionary)
|
|
- Customizable data serializers
|
|
- Values codecs
|
|
- Update-on-write value versioning using versioned codecs
|
|
|
|
- **Apache Lucene Core indexing library**
|
|
- Snapshots
|
|
- Documents structure
|
|
- Sorting
|
|
- Ascending and descending
|
|
- Numeric or non-numeric
|
|
- Searching
|
|
- Nested search terms
|
|
- Combined search terms
|
|
- Fuzzy text search
|
|
- Coordinates, integers, longs, strings, text
|
|
- Indicization and analysis
|
|
- N-gram
|
|
- Edge N-gram
|
|
- English words
|
|
- Stemming
|
|
- Stopwords removal
|
|
- Results filtering
|
|
|
|
# F.A.Q.
|
|
- **Why is it so difficult to use?**
|
|
|
|
This is not a DBMS.
|
|
|
|
This is an engine on which a DBMS can be built upon; for this reason it's very difficult to use directly without building another abstraction layer on top.
|
|
|
|
- **Can I use objects instead of byte arrays?**
|
|
|
|
Yes, you must serialize/deserialize them using a library of your choice.
|
|
|
|
CodecSerializer allows you to implement versioned data using a codec for each data version.
|
|
Note that it uses 1 to 4 bytes more for each value to store the version.
|
|
|
|
- **Why there is a snapshot function for each database part?**
|
|
|
|
Since RocksDB and lucene indices are different software, you can't take a snapshot of everything in the same instant.
|
|
|
|
A single snapshot must be implemented as a collection of all the snapshots.
|
|
|
|
- **Is CavalliumDB Engine suitable for your project?**
|
|
|
|
No.
|
|
|
|
This engine is largely undocumented, and it doesn't provide extensive tests.
|
|
|
|
# Examples
|
|
|
|
In `src/example/java` you can find some quick implementations of each core feature.
|