ArrowDb 1.6.0
dotnet add package ArrowDb --version 1.6.0
NuGet\Install-Package ArrowDb -Version 1.6.0
<PackageReference Include="ArrowDb" Version="1.6.0" />
<PackageVersion Include="ArrowDb" Version="1.6.0" />
<PackageReference Include="ArrowDb" />
paket add ArrowDb --version 1.6.0
#r "nuget: ArrowDb, 1.6.0"
#:package ArrowDb@1.6.0
#addin nuget:?package=ArrowDb&version=1.6.0
#tool nuget:?package=ArrowDb&version=1.6.0
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)
- Minimal-Allocation (constant ~520 bytes for serialization of any db size)
- 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.
| Product | Versions 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. |
-
net10.0
- No dependencies.
-
net9.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.