56 lines
1.7 KiB
Markdown
56 lines
1.7 KiB
Markdown
CavalliumDB Engine
|
|
==================
|
|
|
|
A very simple wrapper for RocksDB and Lucene, with gRPC and direct connections.
|
|
|
|
This is not a database, but only a wrapper for Lucene Core and RocksDB, with a bit of abstraction.
|
|
|
|
# Features
|
|
## RocksDB Key-Value NoSQL database engine
|
|
- Snapshots
|
|
- Multi-column databases
|
|
- WAL and corruption recovery strategies
|
|
- Multiple data types:
|
|
- Bytes (Singleton)
|
|
- Maps of bytes (Dictionary)
|
|
- Maps of maps of bytes (Deep dictionary)
|
|
- Sets of bytes (Dictionary without values)
|
|
- Maps of sets of bytes (Deep dictionary without values)
|
|
|
|
## Apache Lucene Core indexing library
|
|
- 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
|
|
- Snapshots
|
|
|
|
# F.A.Q.
|
|
## Why is it so difficult?
|
|
This is not a DMBS.
|
|
|
|
This is an engine on which a DBMS can be built upon. For this reason it's very difficult to use it directly without using it through abstraction layers.
|
|
|
|
## Can I use objects in the database?
|
|
Yes you must serialize/deserialize them using a library of your choice.
|
|
|
|
## Why there is a snapshot function for each database part?
|
|
Since RocksDB and lucene indices are different instances, every instance has its own snapshot function.
|
|
|
|
To have a single snapshot you must implement it as a collection of sub-snapshots in your DBMS.
|
|
|
|
## Is CavalliumDB Engine suitable for your project?
|
|
No.
|
|
This engine is largely undocumented, and it doesn't provide extensive tests on its methods.
|