New version - v3.5 beta
See original GitHub issueHi guys, after some weeks of hard work I got a beta version of LiteDB v3.5. I’m not releasing on nuget yet because I will do more tests on changes. This new version has some break changes (all source are in dev
branch).
The main goal of this version is fix concurrency problems that LiteDB has in v2.x and v3.x. In order to do this I had to change some features.
Changes
- Remove transactions (break-api)
- Remove physical journal file (store journal pages after file ends)
- Remove auto-id register function for custom type (break-api)
- Remove index definitions on mapper (fluent/attribute) (mark as obsolete)
- Remove auto create index on query execution. If the index is not found do full scan search (use
EnsureIndex
on initialize database is better solution) - NET45 compiles as NET35
- Update to VS2017
Features
- Add auto-id in engine level with pre-defined common types
- Add collection sequence (
ulong
) to use in engine level auto-id - Implement FilterDocument option in all query implementations (full scan document)
- In
Query.And
use only one index side with full scan on other - Print query execution plan in Query.ToString()
Seek([Age] > 10) and Scan([Name] startsWith "John")
- Convert
Query.And
toQuery.Between
when possible - Add support to
Query.Between
open/close interval QueryLinq
for non resolved linq expression on visitorcol.Find(x => x.Id < 10 && x.Name.Length > 10)
will works usingId
index and linq expression execution ofName.Length > 10
Also, I added a new LiteDB.Perf to test concurrency problems.
If you want contribute, fork my dev
branch and change LiteDB.Perf to try get concurrency this error: Unable to cast object of type ‘LiteDB.EmptyPage’ to type ‘LiteDB.HeaderPage’. Tell me here in this issue that I will investigate.
Let’s turn LiteDB into a rock solid database 😄 🎉
Here, some issues that refer this concurrency problem: #641 #650 #619 #639 #592
Thanks!
Issue Analytics
- State:
- Created 6 years ago
- Comments:26 (11 by maintainers)
Top GitHub Comments
Ok, created a CRUD webapi example and run over stress tool. All operations (Find, Insert, Update, Delete) and until now no problems. Tested over multi process and multi thread.
https://github.com/mbdavid/LiteDB.WebApi
Multi thread are 5 times faster than multi process (avoid open/close file + cache)
Hi! With the objective of organizing our issues, we are closing old unsolved issues. Please check the latest version of LiteDB and open a new issue if your problem/question/suggestion still applies. Thanks!