LightningDB 0.13.0

LightningDB

Install-Package LightningDB -Version 0.13.0
dotnet add package LightningDB --version 0.13.0
<PackageReference Include="LightningDB" Version="0.13.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LightningDB --version 0.13.0
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: LightningDB, 0.13.0"
For F# scripts that support #r syntax, copy this into the source code to reference the package.

Performance Related Improvements

You can see the benchmarks here https://github.com/CoreyKaylor/Lightning.NET/pull/125

  • MDBValue becomes more prominent in the API instead of an internal detail.
    • Exposes an AsSpan and a CopyToNewArray function.
    • AsSpan with a buffer pool can avoid any memory duplication and provides a 0-copy read
    • This is obviously a breaking change, but the changes to your application should be pretty straightforward
  • MDBResultCode is now returned on all signatures where the native counterpart returns a code
    • BREAKING!!! In your code this means that if you were previously relying on LightningException for control flow, your code will now need to adapt. I think in practice this has made the API easier to work with, but every situation might be different. There are now a set of extension methods ThrowOnError and ThrowOnReadError that provide the same behavior if you need it, but now you'll have to be explicit about it.

Cursor API redesign

  • LightningCursor previously took on a .NET api-centric role and there was some lossy translation due to this, in some cases some race conditions that would result in corrupted usage.
Less notable changes

Some improvements were made to rework some of the tests and add some test coverage that was previously lacking. More can be done, but this is a good step forward.

We'll try to be a little more sensitive to breaking changes going forward and hopefully we're through the bulk of them.

Performance Related Improvements

You can see the benchmarks here https://github.com/CoreyKaylor/Lightning.NET/pull/125

  • MDBValue becomes more prominent in the API instead of an internal detail.
    • Exposes an AsSpan and a CopyToNewArray function.
    • AsSpan with a buffer pool can avoid any memory duplication and provides a 0-copy read
    • This is obviously a breaking change, but the changes to your application should be pretty straightforward
  • MDBResultCode is now returned on all signatures where the native counterpart returns a code
    • BREAKING!!! In your code this means that if you were previously relying on LightningException for control flow, your code will now need to adapt. I think in practice this has made the API easier to work with, but every situation might be different. There are now a set of extension methods ThrowOnError and ThrowOnReadError that provide the same behavior if you need it, but now you'll have to be explicit about it.

Cursor API redesign

  • LightningCursor previously took on a .NET api-centric role and there was some lossy translation due to this, in some cases some race conditions that would result in corrupted usage.
Less notable changes

Some improvements were made to rework some of the tests and add some test coverage that was previously lacking. More can be done, but this is a good step forward.

We'll try to be a little more sensitive to breaking changes going forward and hopefully we're through the bulk of them.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on LightningDB:

Package Downloads
HelpMeJesus
Package Description
Akka.DistributedData.LightningDB
Replicated data using CRDT structures
LightningQueues.Storage.LMDB
LightningQueues.Storage.LMDB
YesSql.Storage.LightningDB
Package Description
LightningStore
LightningDb facades to easily build an embedded event stream and a document store. By default JIL serialization is build in.

GitHub repositories (4)

Showing the top 4 popular GitHub repositories that depend on LightningDB:

Repository Stars
akkadotnet/akka.net
Port of Akka actors for .NET
bleroy/lunr-core
A port of LUNR.js to .NET Core
LightningQueues/LightningQueues
Fast persistent queues for .NET
Bobris/BTDB
Key Value Database in .Net with Object DB Layer, RPC, dynamic IL and much more

Version History

Version Downloads Last updated
0.13.0 33,756 7/30/2020
0.12.0 7,431 7/6/2020
0.11.0 24,077 2/20/2020
0.10.0 45,158 11/26/2017
0.9.9 39,075 5/29/2017
0.9.8 23,005 5/2/2017
0.9.7 12,626 9/22/2016
0.9.6 2,464 9/2/2016
0.9.5 1,114 8/29/2016
0.9.4 2,304 6/29/2016
0.9.3 1,167 6/28/2016
0.9.3-rc2-51 1,069 5/22/2016
0.9.3-rc1-45 2,898 2/12/2016
0.9.3-rc1-44 1,003 11/23/2015
0.9.3-rc1-43 1,032 11/20/2015
0.9.2.40 2,154 9/10/2015
0.9.1.35 1,684 8/3/2015
0.9.0.31 1,148 7/30/2015
0.8.14.51400 1,167 5/31/2015
0.8.12.51737 1,047 1/31/2015
0.8.8.52157 992 1/18/2015
0.8.7.52133 899 1/18/2015
0.8.6.51452 895 12/28/2014
0.8.5.51145 903 12/25/2014
0.8.3.52343 1,094 6/4/2014
0.8.2.51054 883 5/9/2014
0.8.1.52127 1,051 2/20/2014
0.8.1.51635 923 12/15/2013
0.8.0.52232 1,025 10/10/2013