LiteDB

LiteDB - A .NET NoSQL Document Store in a single data file

MIT License

Stars
8.2K

Bot releases are visible (Hide)

LiteDB - v5-alpha2

Published by mbdavid about 5 years ago

New

  • Removed LiteDB.Studio (moved to another repo)
  • Added back LiteDB.Shell (netcore tool) for SQL commands
  • Implement Shrink
  • Create MAP and FILTER expression methods:
    • MAP(children => age)
    • FILTER(items => price > 100)
  • Add expression methods: REMOVE_KEYS, OID_CREATIONDATE, TO_LOCAL, TO_UTC, DISTINCT, UNION, EXCEPT, TOP
  • Added support for custom ctor in classes to BsonDocument mapper
    • public People(string name) { this.Name = name; }
  • Remove LINQ GroupBy<T, K> (must use BsonExpression)
  • Added transaction monitor to manage how memory LiteDB pages will use in transactions
  • Implement first SharedConnection to keep database closed after each command (can be used for multiple processes in same machine)
  • BugFixes (see commit log)
LiteDB - v5-alpha

Published by mbdavid about 5 years ago

Here is the new alpha version of LiteDB v5. It's an alpha version, so that means it's not ready for production yet! The API may change and data format can also change before final release. But we would be very pleased if you could test the new version and give feedback or report any issues that you stumble upon.

New major version

  • Complete new engine - WAL (Write Ahead Log)
  • MultiVersion Concurrency Control (Snapshots & Checkpoint)
  • Full transaction support
  • Support for multiple readers without locking
  • Write lock on collection-level instead of database-level
  • Doubled the amount of indexes per collection, now up to 32 indexes per collection
  • New FileStorage with custom Id type
  • New BsonExpressions: transform, filter, map, reduce, ..
  • New Query Pipe inside engine
  • Simple upgrade of existing LiteDB v4 databases (use upgrade=true in connection string)
  • New Linq visitor (with support for more expressions)
  • New fluent Query
  • And more than one year of hard working!!

SQL Support

  • New SQL language support - very similar to ANSI SQL
  • Select, Insert, Update, Delete, Create Index, Drop Index, Drop Collection, Explain
  • Support for GroupBy, Having, Limit, Offset, OrderBy, Includes, ...
  • System collections (get information about the database)
  • Support to system function (import/export CSV/JSON)

LiteDB Studio

  • New GUI for Windows
  • Multi tab, multi thread, multi transactions
  • Interact with your database and collections using SQL statements

Know issues

  • Missing Shrink method and UserVersion property
  • Curretly not completely compatible with LinqKit PredicateBuilder
  • Only single process for now (with multi thread support) - no multi process yet
LiteDB -

Published by mbdavid over 6 years ago

  • Fix IncludeAll missing method
LiteDB -

Published by mbdavid over 6 years ago

  • Added IncludeAll method
  • Added LENGTH method expression
LiteDB -

Published by mbdavid over 6 years ago

Bugfix

  • Index DateTime will use LocalTime #921
LiteDB -

Published by mbdavid over 6 years ago

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)
LiteDB -

Published by mbdavid almost 7 years ago

New

  • New expression ITEMS method (convert array into IEnumerable)
  • New expression ALL method (return true only if all conditions are true) - ALL($.Items[*].Price > 0) = true

Bugfix

  • BSON deserialization bug on hi concurrency access
  • Performance issue about flush on HDD disk #836
  • Remove missing reference in Include #831
LiteDB -

Published by mbdavid almost 7 years ago

News 4.1

  • 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()
LiteDB - v4.0 release

Published by mbdavid about 7 years ago

LiteDB v4 released

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
col.EnsureIndex(x => x.Name, "LOWER($.Name)");
col.EnsureIndex("GrandTotal", "SUM($.Items[*].Qtd * $.Items[*].Price)");
  • Query with Include it´s supported in Engine level with ANY nested includes
col.Include(x => x.Users)
   .Include(x => x.Users[0].Address)
   .Include(x => x.Users[0].Address.City)
   .Find(...)
  • 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)
LiteDB -

Published by mbdavid about 7 years ago

  • Add KEYS, MOD expression function
  • Add support for ( and ) inside expressions
  • Improve expression reader/parser
  • Bugfix: return _id when insert
  • Minor bugfixes
LiteDB - v4 Beta release

Published by mbdavid about 7 years ago

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
LiteDB -

Published by mbdavid about 7 years ago

Fixes

  • Sign dll to use in GAC
  • Fix decimal index #693
LiteDB -

Published by mbdavid about 7 years ago

Bugfix

  • Fix .csproj to compile .NET 4.x to .NET 3.5
LiteDB -

Published by mbdavid about 7 years ago

Bugfix

  • Nuget/Assembly version fixed to 3.1.2

  • Upgrade to VS2017

LiteDB -

Published by mbdavid over 7 years ago

Bugfix

  • Flush journal file #582
  • Implemented BsonDocument#Copy #577
  • Fix data pagesize #533
  • Fix shrink large database

New

  • Insert bulk method with batch size
LiteDB -

Published by mbdavid over 7 years ago

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
LiteDB -

Published by mbdavid over 7 years ago

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
LiteDB - v3.0.0

Published by mbdavid over 7 years ago

New LiteDB v3 release

  • 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)
LiteDB -

Published by mbdavid almost 8 years ago

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
LiteDB -

Published by mbdavid almost 8 years ago

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