mbdavid/LiteDB-vNext

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 and BsonExpression 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...

Thank you @mbdavid for the time you spent to answer my question.

What a program! I cannot help you on that, but I will continue to have a look on it!

Best of luck!