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.

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.
    • Now API is much closer to the native lib counterpart
    • There is now an AsEnumerable extension method as an alternative to the cursor itself being enumerable.
    • You can track the method name changes here https://github.com/CoreyKaylor/Lightning.NET/commit/3528a884bf0a421d7d65df92fdbbd89badcacac2
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.
    • Now API is much closer to the native lib counterpart
    • There is now an AsEnumerable extension method as an alternative to the cursor itself being enumerable.
    • You can track the method name changes here https://github.com/CoreyKaylor/Lightning.NET/commit/3528a884bf0a421d7d65df92fdbbd89badcacac2
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
LightningQueues.Storage.LMDB
LightningQueues.Storage.LMDB
Akka.DistributedData.LightningDB
Replicated data using CRDT structures
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 (3)

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

Repository Stars
akkadotnet/akka.net
Port of Akka actors for .NET
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 88 7/30/2020
0.12.0 1,975 7/6/2020
0.11.0 11,685 2/20/2020
0.10.0 36,261 11/26/2017
0.9.9 38,555 5/29/2017
0.9.8 20,243 5/2/2017
0.9.7 11,011 9/22/2016
0.9.6 2,068 9/2/2016
0.9.5 911 8/29/2016
0.9.4 1,836 6/29/2016
0.9.3 951 6/28/2016
0.9.3-rc2-51 924 5/22/2016
0.9.3-rc1-45 2,727 2/12/2016
0.9.3-rc1-44 865 11/23/2015
0.9.3-rc1-43 887 11/20/2015
0.9.2.40 1,993 9/10/2015
0.9.1.35 1,550 8/3/2015
0.9.0.31 1,004 7/30/2015
0.8.14.51400 1,023 5/31/2015
0.8.12.51737 902 1/31/2015
0.8.8.52157 850 1/18/2015
0.8.7.52133 754 1/18/2015
0.8.6.51452 755 12/28/2014
0.8.5.51145 763 12/25/2014
0.8.3.52343 950 6/4/2014
0.8.2.51054 743 5/9/2014
0.8.1.52127 922 2/20/2014
0.8.1.51635 786 12/15/2013
0.8.0.52232 884 10/10/2013