What's new in LiteDB 5.0.0 Alpha
Aug 5, 2019
- New major version:
- Complete new engine - WAL (Write Ahead Log)
- MultiVersion Concurrency Control (Snapshots & Checkpoint)
- Full transaction support
- Multi readers support, no lock
- Write lock per collection
- Up to 32 indexes per collection
- New FileStorage with custom Id type
- New BsonExpressions: transform, filter, map, reduce, ..
- New Query Pipe inside engine
- Upgrade datafile from LiteDB v4 (use upgrade=true in connection string)
- New Linq visitor (with support more expressions)
- New fluent Query
- And more than one year of hard working!!
- SQL Support:
- New SQL language support - very similar with ANSI SQL
- Select, Insert, Update, Delete, Create Index, Drop Index, Drop Collection
- Support GroupBy, Having, Limit, Offset, OrderBy, Includes, ...
- System virtual collection (get information about database)
- Support to system function (import/export CSV/JSON)
- LiteDB Studio:
- New UI for Windows
- Multi tab, multi thread, multi transactions
- New LiteDB.Studio (for Windows) with SQL support
New in LiteDB 4.1.4 (Jun 20, 2018)
- Fix IncludeAll missing method
New in LiteDB 4.1.3 (May 29, 2018)
- Added IncludeAll method
- Added LENGTH method expression
New in LiteDB 4.1.2 (Mar 12, 2018)
- Bugfix:
- Fix DateTime UTC in index Min/Max
- Initial size with encryption #929
- Better message when using OSX about file lock
- Remove System.Threading reference for netstandard
- Fix collection sequence in shrink #899
- Fix shrink lock page #892
- Fix NextIndex dictionary
- New:
- Add "flush" option in connection string (support direct in disk flush after write operation)
New in LiteDB 4.1.0 (Dec 17, 2017)
- Add UTC deserialization support (use utc=true on connection string)
- New FindSort operation with paging (experimental)
- New TempDiskService for temporary database
- New shell detail help help <command>
- Bugfix initial data-size
- Bugfix logger ctor #776 @parabola949
- Expressions:
- Add support to Document syntax: new BsonExpression("{_id: 1, name: 'John'}")
- Add support to Array syntax: new BsonExpression("[1, 'two', false]")
- Add document function: EXTEND()
- Add cast functions: INT(), DOUBLE(), STRING(), DATE() ...
- Add date functions: DATEADD(), DATEDIFF(), YEAR(), MONTH(), DAY()
New in LiteDB 4.0.0 (Oct 20, 2017)
- New Features:
- Add support to NETStandard 2.0 (with support to Shared mode)
- New document Expression parser/executor - see Expression Wiki
- Support index creation with expressions
- Query with Include it´s supported in Engine level with ANY nested includes
- Support complex Linq queries using LinqQuery compiler (works as linq to object)
- col.Find(x => x.Name == "John" && x.Items.Length.ToString().EndsWith == "0")
- Better execution plan (with debug info) in multi query statements
- No more external journal file - use same datafile to store temporary data
- Fixed concurrency problems (keeps thread/process safe)
- Convert Query.And to Query.Between when possible
- Add support to Query.Between open/close interval
- Same datafile from LiteDB v3 (no upgrade needed)
- Shell:
- New UPDATE/SELECT statements in shell
- Shell commands parser/executor are back into LiteDB.dll
- Better shell error messages in parser with position in error
- Print query execution plan in debug
- (Seek([Age] > 10) and Filter([Name] startsWith "John"))
- (preparing to new visual LiteDB database management tool)
- Break changes:
- Remove transactions
- Remove auto-id register function for custom type
- Remove index definitions on mapper (fluent/attribute)
- Remove auto create index on query execution. If the index is not found do full scan search (use EnsureIndex on initialize database)
New in LiteDB 4.0.0 Beta 2 (Oct 3, 2017)
- Add KEYS, MOD expression function
- Add support for ( and ) inside expressions
- Improve expression reader/parser
- Bugfix: return _id when insert
- Minor bugfixes
New in LiteDB 4.0.0 Beta 1 (Sep 12, 2017)
- Break changes:
- Remove transactions
- Remove auto-id register function for custom type
- Remove index definitions on mapper (fluent/attribute)
- Remove auto create index on query execution. If the index is not found do full scan search (use EnsureIndex on initialize database)
- New Features:
- New Expressions/Path
- New shell command: UPDATE fields only
- New shell command: SELECT with transform
- Remove physical journal file (store journal pages after file ends)
- Add auto-id in engine level with pre-defined common types
- Add collection sequence (ulong) to use in engine level auto-id
- Auto-id default true to _id with BsonType = ObjectId, Guid, DateTime, Int32 or Int64
- Add include in engine/document level with any level
- Compiled in NET35 for Unity3D support, NET40 and NETSTANDARD 1.3
- 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 Filter([Name] startsWith "John"))
- Convert Query.And to Query.Between when possible
- Add support to Query.Between open/close interval
- QueryLinq for non resolved linq expression on visitor col.Find(x => x.Id < 10 && x.Name.Length > 10)
- Support index creation with expressions
- Support expression on full searchs
- Better shell error messages in parser with position in error
- Fix simple lock control (multi-read/single write) in thread/process. Removed reserved lock state
- Upgrade to VS2017
- Bugfixes:
- Upload from local disk on storage
- DateTime.Now indexed date (milliseconds problem)
- When query using > or < must use same BsonType (do not returns null values)
- Remove return Duplicate values in MultiKey indexes
New in LiteDB 3.1.4 (Sep 12, 2017)
- Fixes:
- Sign dll to use in GAC
- Fix decimal index #693
New in LiteDB 3.1.3 (Sep 12, 2017)
- Bugfix:
- Fix .csproj to compile .NET 4.x to .NET 3.5
New in LiteDB 3.1.2 (Sep 12, 2017)
- Bugfix:
- Nuget/Assembly version fixed to 3.1.2
- Upgrade to VS2017
New in LiteDB 3.1.1 (Sep 12, 2017)
- Bugfix:
- Flush journal file #582
- Implemented BsonDocument#Copy #577
- Fix data pagesize #533
- Fix shrink large database
- New:
- Insert bulk method with batch size
New in LiteDB 3.1.0 (Sep 12, 2017)
- Added:
- New LiteRepository to access data
- Support NonPublic members to netstandard
- Support sync over async in UWP app (to access any directory)
- Static method do create empty datafile LiteEngine.CreateDatabase
- Named convetion for collection names when null are used (default typeof(T).Name)
- Changes:
- Better way to get id field (preserve precedence order: BsonId, Id or <ClassName>Id)
- Better message to wrong file detection
- Bugfix in recovery lock
- Bugfix that datafile keep opened when an exception occurs during initialize
New in LiteDB 3.0.1 (Sep 12, 2017)
- Bugfix:
- Upgrade from v2
- Changes:
- Shell now are disconected (each command connect, execute, finalize)
- Do not support transaction in FileStoage Read/Write operations
- Better delete operation in FileStorage #483
- Support build connection string object and pass to LiteDatabase.Ctor
- Better invalid datafile exception message
New in LiteDB 3.0.0 (Sep 12, 2017)
- Thread safe AND process safe (support single or multiple instances)
- Multikey index (support array index values)
- Faster than ever - compare with SQLite here
- BsonDocument implements IDictionary, BsonArray implements IList
- New: Upsert, FindIndex, Query.Not(Query), Query.Where(Func<>)
- New BsonMapper class: support Fields and NonPublic members
- Added new LiteEngine class to access data
- LiteStorage now supports OpenWrite() Stream
- Update your datafile from v2 using ;upgrade=true in connection string
- LiteDB support .NET 3.5 and NETStandard 1.4 (Supports UWP, Xamarin, Core, Mono)
New in LiteDB 3.0.0 Beta 3 (Sep 12, 2017)
- News:
- Back support for shared mode - multi process (can open multiple instances) - (not supported in NetStandard)
- Removed checkpoint cache
- Support Include using string path
- Datafile upgrade support from v2
- Support PredicateBuilder
- Bugfixes
New in LiteDB 3.0.0 Beta 2 (Sep 12, 2017)
- News:
- Change compiler do C# 4.0 to be compatible with Unity3D
- Add Upsert in LiteCollection
- Add missing LiteDatabase method (RenameCollection, Shrink, DropCollection, GetCollectionNames)
- BugFix:
- Fix Unbox in NetStandard
New in LiteDB 3.0.0 Beta (Sep 12, 2017)
- New Features:
- Thread Safe - share your LiteDatabase instance across threads
- MultiKey index - support index in array field
- Faster than ever - compare results with SQLite here
- LiteEngine - new simple class to access your documents
- New checkpoint cache to support large transactions using journal file
- BsonDocument implements IDictionary, BsonArray implements IList
- Autocommit disabled support
- Less 96 bytes per document
- New: Upsert, FindIndex, Query.Not(Query), Query.Where(Func<>)
- New BsonMapper class: support Fields and NonPublic members
- FileStorage now supports OpenWrite("fileId")
- Virtual index fields -.Index("total", x => x.Products.Sum(p => p.Price))
- [BsonRefAttribute]
- Shrink with change password
- Open datafile in ReadOnly mode
- LiteDB.Core was removed - LiteDB.dll is now NETStandard 1.4 (Supports UWP, Xamarin, Core, Mono)
- Changes:
- Some methods are moved from LiteDatabase to LiteEngine (GetCollectionNames, CollectionExists, DropCollection, RenameCollection, Shrink). To access, use: db.Engine.GetCollectionNames().
- New datafile version - no update yet
New in LiteDB 2.0.4 (Sep 12, 2017)
- Changes:
- Cache checkpoint removed
- New parser ConnectionString
New in LiteDB 2.0.2 (Sep 12, 2017)
- Bugfix #284 - Revert connection string regex
New in LiteDB 2.0.1 (Sep 12, 2017)
- Bugfixes:
- Better error messages in deserialize #278
- Connection string supports filename with "
- Fix detect old version in shell
- Tests missing password in encrypted datafile
- Fix shrink bug
- Adds FileHandler for UWP for better performance
New in LiteDB 2.0.0 (Sep 12, 2017)
- New features in v2:
- Portable version: LiteDB.Core (Supports UWP 8.1/10, Xaramin.iOS and Xaramin.Android)
- Generic data access layer - can use any Stream or you can write your own disk access layer
- Database encription option (using password= in connection string)
- New memory cache manager (do not consume too memory in large inserts/updates)
- Better mapping class from your entity to BsonDocument (like Configurations in EntityFramework)
- Better cross reference with DbRef mapping (see unit tests examples)
- Lazy engine load (open datafile only when run a command)
- Reduce your database size with shrink()
- Support for Initial Size and Limit Size database (connection string)
- Complete re-write engine classes width full debug logger
- Complete stats about data/index usage
- Dump file to Import/Export your data using shell commands
- Full documentation for v2 on Wiki
- See more examples in http://www.litedb.org/
- Changes:
- New datafile - to update, check here: https://github.com/mbdavid/LiteDB/wiki/Update-Datafile
- Transaction API changes (now transaction is a class, use: using(var transaction = db.BeginTrans()) { ... }
- InsertBulk is only Insert
- No more datafile version control (still have a UserVersion to dev make your own version control)
- Removed DbRef<T> class, see: https://github.com/mbdavid/LiteDB/wiki/DbRef
New in LiteDB 2.0.0 RC2 (Sep 12, 2017)
- New features in RC2:
- Portable version: NuGet package: Lite.Core that support PCL/UWP
- New disk access (for safe concurrency) implementation
- Transactions are back
- No more ThreadSafe (only ProcessSafe). Always create LiteDatabase instances.
- Close datafile after each command execution
- BsonMapper.Global are back
- RegisterAutoId<T> are back
- Changes in RC2:
- To implement new disk read/write access, new datafile version was required.
- Removed OnModelCreating. Use BsonMapper.Global instance
- Removed UserVersion update checking. Now UserVersion is only an int stored in header page (update version must be developed in your solution)
New in LiteDB 2.0.0 Beta (Sep 12, 2017)
- Generic data access layer - can use any Stream or you can write your own disk access layer
- Better mapping class from your entity to BsonDocument (like Configurations in EntityFramework)
- Virtual property (Formula) as index field
- Better cross reference with DbRef mapping (see unit tests examples)
- ThreadSafe / ProcessSafe
- Lazy engine load (open datafile only when run a command)
- Reduce your database size with shrink()
- Support for Initial Size and Limit Size database (connection string)
- Complete re-write engine classes width full debug logger
- See more examples in http://www.litedb.org/
New in LiteDB 1.0.4 (Sep 12, 2017)
- Bugfix #60 - Incorrect BsonIndex ctor
- Bugifx #61 - Deserialize nullable values
- #69 Sign assembly to NuGet
New in LiteDB 1.0.3 (Sep 12, 2017)
New in LiteDB 1.0.1 (Sep 12, 2017)
- Remove full document scan in Find operations - using auto-creation index when there is no field index
- Bugfix #21 and #29
- Implements _type when using interfaces/generic object #32 and #27 - thanks to @francoislg
- Added support to boolean Linq operations, like x => x.IsActive - thanks to Lars Stenberg
New in LiteDB 1.0.0 (Sep 12, 2017)
- New:
- New Wiki documentation !! 😃
- New BsonSerializer removing fastBinaryJson and implement real BSON specification
- New BsonMapper to get more configurable POCO from/to BsonDocument
- BsonMapper supports user custom type converter
- New JsonReader implementation: 4 times faster
- New ObjectId to be used in Id documents
- BsonDocument supports only BSON data types as specification
- Index creation options - remove whitespaces, remove accents, ignore case.
- [BsonIndex] to mark your entity property to auto create index when query
- Autogeneration Id for entity Id property
- Find() can be executed without an index (will execute a full document scan)
- Index use same MongoDB data type order when CompareTo()
- FindAll() supports ascending/descending results
- New Query.Contains
- Min()/Max() value from an index
- DbRef<> - a simple class for reference document
- Changes:
- Drop collection and drop index improved
- Removed _master collection - avoid 1 page read
- Removed WebShell from this repository
- New file format: v4
New in LiteDB 0.9.0 (Sep 12, 2017)
- New:
- New read/write pages to get a very fast disk operations
- Diferent free spaces on diferent page types (DataPage and IndexPage)
- Support for Id and <ClassName>Id identity in POCO class
- New datafile format
- Changes:
- Updates on README
- Bugfix on load ExtendPages
New in LiteDB 0.8.0 (Sep 12, 2017)
- New:
- Improve disk writes. More than 200% performance increase on upload files.
- Improve write ExtendPage - no more recursive
- Improve performance for search available page
- Increase MaxDocumentSize to 1MB
- Static bulk method for insert
- Added and/or operators for query filter in shell
- Added "timer" command on shell
- Minor code fixes
- Changes:
- Removed unfinish code. Will be release in future versions
- Remove MaxFileLength
- Move shell commands to LiteDB project