CavalliumDBEngine/README.md

56 lines
1.7 KiB
Markdown
Raw Normal View History

2020-12-07 22:15:18 +01:00
CavalliumDB Engine
==================
2020-12-07 22:11:36 +01:00
2020-12-07 22:15:18 +01:00
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.