46787fa353
A test function was not tested, causing the uneffectiveness of some tests that were passing when they should have not. New tests to test the test function have been written, making sure to avoid false negatives. Add editorconfig, add documentation of MetricUtils |
||
---|---|---|
.github/workflows | ||
src | ||
.editorconfig | ||
.gitignore | ||
LICENSE | ||
pom.xml | ||
README.md |
CavalliumDB Engine
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.