What to expect for this new version?
Closed this issue · 2 comments
Hi,
First of all, thank you for this awesome library. I used it a lot in my projects, very useful.
I see more activity on this repo than on the other one.
Could I ask what is your plan for the updated version, in terms of functionalities?
Will there be important changes in the database format? If yes, can we expect having a backward compatibility?
Hi @YBAZAN, I'm completely insanse about this new version. 2 weeks non-stoping 😄... but has a long way to release any preview. Now I'm working on base data/index pages structures and how manipulate in another simple/fantastic way... My first ideia now is test this lower engine (ILiteEngine
) before move on...
Let's talk about features confirmed:
- Async by default
- Single file (no more separete log file... will use end-file as log file)
- New AllocationMap for map free space pages
- New smaller Bson-like format
- New Query/Fetch to works with isolated cursors
- No transaction per thread (Stateless)
- Batch operations (Insert/Update/Delete documents in differents collections at same time)
- Lower memory consume (working with
Span<byte>
everywhere + MemoryPool) - Complete refactor in
BsonValue
andBsonExpression
to be faster (8x) and lower memory consume (3x) - New Aggregation framework (aggregations will be removed from GroupBy and add in a new structure)
- Simple and safe way to recovery database (when not call
Dispose
) - New Extend conecpt (8 pages sequencial block) per collection - fast read block pages
- ...
File version will be change to 9, so old versions are not compatible But, before release, I will add Upgrade option to convert to new version.
About API, just minor changes for final user. A migration manual will be made in documentation
The main ideia with this new version is create a simple and solid database engine structure to create another plugins/extensions using this new core engine. I have some projects in my list:
- EntityFramework compatible
- Database data compression
- WebHost: Host LiteDB in WebSocket HTTPS protocol
- WebAdmin: Web admin panel to manage databases
- Javascript client API library to connect to LiteDB using WebSockets
- Autentication/Authorization modules
And so on...