ArrowDb 2.0.0

dotnet add package ArrowDb --version 2.0.0
                    
NuGet\Install-Package ArrowDb -Version 2.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="ArrowDb" Version="2.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ArrowDb" Version="2.0.0" />
                    
Directory.Packages.props
<PackageReference Include="ArrowDb" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add ArrowDb --version 2.0.0
                    
#r "nuget: ArrowDb, 2.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package ArrowDb@2.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=ArrowDb&version=2.0.0
                    
Install as a Cake Addin
#tool nuget:?package=ArrowDb&version=2.0.0
                    
Install as a Cake Tool

ArrowDb

A fast, lightweight, and type-safe key-value database designed for .NET.

  • Super-Lightweight (dll size is ~19KB - approximately 9X smaller than UltraLiteDb)
  • Ultra-Fast (1,000,000 random operations / ~98ms on M2 MacBook Pro)
  • Aggressively Optimized Low-Allocation Persistence
  • Thread-Safe and Concurrent
  • ACID compliant on transaction level
  • Type-Safe (no reflection - compile-time enforced via source-generated JsonSerializerContext)
  • Cross-Platform and Fully AOT-compatible
  • Super-Easy API near mirroring of Dictionary<TKey, TValue>

A Note on null Values

ArrowDb enforces a "no nulls" policy by design. Attempting to Upsert a null value will be rejected and return false. This simplifies the developer experience by guaranteeing that if a key exists, its value is never null. This eliminates the need for null-checking after retrieval, leading to cleaner and more predictable application code.

This policy does not affect value types (structs); their default values (e.g., 0 for an int) are considered valid.

Information on usage can be found in the README.

Concurrency note: GetOrAddAsync

GetOrAddAsync is intentionally not atomic. Under concurrency, the factory may be invoked multiple times for the same key, and the final stored value is last-writer-wins (because the value is persisted via Upsert). If you need single-invocation semantics for the factory (e.g. side-effects/expensive work), guard the call site with a keyed lock.

Cancellation support

ArrowDb 2.0 adds optional CancellationToken parameters to its async APIs, including database initialization, SerializeAsync, RollbackAsync, GetOrAddAsync, and the public IDbSerializer contract. Custom serializer implementations should update their method signatures accordingly.

Hosted dependency injection

Hosted DI integration is provided by the companion package ArrowDb.DependencyInjection. That package exposes IArrowDbProvider, the public generic ArrowDbProvider<TSerializer>, and an optional hosted-service primer for eager startup initialization.

Serializer disposal

IDbSerializer now tracks IsDisposed and implements both IDisposable and IAsyncDisposable. ArrowDb.CreateCustom(...) also has an overload that accepts disposeSerializer so serializer ownership can stay with either the database instance or the surrounding host/integration.

File-backed ownership

The built-in file-backed serializers are single-owner writable. If another process already opened the same database path through ArrowDb's built-in file serializer path, the next writable open fails fast with ArrowDbOwnershipException.

The built-in file-backed serializers also perform true async file I/O internally. Custom types inheriting from BaseFileSerializer should implement the async protected override surface.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0

    • No dependencies.
  • net9.0

    • No dependencies.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on ArrowDb:

Package Downloads
ArrowDb.DependencyInjection

Hosted dependency injection support for ArrowDb

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.0.0 44 4/14/2026
1.6.0 192 12/21/2025
1.5.0 610 7/23/2025
1.5.0-rc.1 555 7/23/2025
1.4.0 255 3/13/2025
1.3.0 189 2/21/2025
1.2.0 202 2/2/2025
1.1.0 173 1/26/2025
1.0.0 163 1/19/2025