StringDB alternatives and similar packages
Based on the "Database" category.
Alternatively, view StringDB alternatives based on common mentions on social networks and blogs.
-
Event Store
EventStoreDB, the event-native database. Designed for Event Sourcing, Event-Driven, and Microservices architectures -
SqlKata Query Builder
SQL query builder, written in c#, helps you build complex queries easily, supports SqlServer, MySql, PostgreSql, Oracle, Sqlite and Firebird -
NReco LambdaParser
Runtime parser for string expressions (formulas, method calls). Builds dynamic LINQ expression tree and compiles it to lambda delegate. -
ZoneTree
ZoneTree is a persistent, high-performance, transactional, and ACID-compliant ordered key-value database for .NET. It operates seamlessly both in-memory and on local/cloud storage, making it an ideal choice for a wide range of applications requiring efficient data management. -
Db4o-gpl
new Db4o GPL Source Code for Java7+ & .netstardard2.0 Android Xamarin..., the best database project to help you to learn how to make databases -
Mailcloud.Hydra
DISCONTINUED. A set of components to take the most advantage of performance and capacity of Azure Storage.
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of StringDB or a related project?
README
StringDB
Introduction
StringDB is a key/value pair store with a friendly API to use as little RAM and space as possible.
Verify the claims for yourself:
Api
Enumerate over a database and it's values, the fastest, by enumerating over it optimally
using var db = new DatabaseBuilder()
.UseIODatabase(StringDBVersion.Latest, "database.db", out var optimalTokenSource)
.WithBuffer(1000)
.WithTranform(StringTransformation.Default, StringTransformation.Default);
foreach (var (key, value) in db.EnumerateOptimally(optimalTokenSource))
{
// do something with the key and value
}
Use fluent extensions to create a database:
using IDatabase<string, string> db = new DatabaseBuilder()
.UseIODatabase(StringDBVersion.Latest, "database.db")
.WithBuffer(1000)
.WithTransform(StringTransformation.Default, StringTransformation.Default);
using IDatabase<int, string> memDb = new DatabaseBuilder()
.UseMemoryDatabase<int, string>();
Use the IDatabase interface to interface with databases
void InsertGreeting(IDatabase<string, string> database, string user)
{
database.Insert(user, $"Greetings, {user}!");
}
And inherit BaseDatabase to create your own IDatabases with minimal effort
public class TestDatabase : BaseDatabase<int, string>
{
private class LazyValue : ILazyLoader<string>
{
private readonly string _value;
public LazyValue(int value) => _value = value.ToString();
public string Load() => _value;
public void Dispose() {}
}
public override void Dispose() {}
protected override void InsertRange(KeyValuePair<int, string>[] items)
{
foreach(var item in items)
{
Console.WriteLine($"{item.Key}: {item.Value}");
}
}
protected override IEnumerable<KeyValuePair<int, ILazyLoader<string>>> Evaluate()
{
for(var i = 0; i < int.MaxValue)
{
yield return KeyValuePair.Create(i, new LazyValue(i));
}
}
}
Tiny [icon_tiny]
StringDB is tiny. Use tiny amounts of RAM, and tiny amounts of space.
[StringDB 10.0.0 file size: single inserts, 128 byte keys, 1024 byte values][source_insert_test]
[Chart][icon_chart_single_inserts]
Inserts | Size (in KB, 1000 bytes) | Absolute Minimum Size Possible | StringDB Overhead Percentage |
---|---|---|---|
1 | 1.172 KB | 1.152 KB | 1.706485% |
50 | 58.208 KB | 57.6 KB | 1.04453% |
100 | 116.408 KB | 115.2 KB | 1.037729% |
This chart shows the size of a StringDB file after multiple single inserts. Every key is 128 bytes long, and every value is 1024 bytes long. By doing single inserts, file size is dramatically affected due to the additional overhead for the index chain.
[StringDB 10.0.0 file size: insert range, 128 byte keys, 1024 byte values][source_insertrange_test]
[Chart][icon_chart_insert_range]
Elements in Insert Range | Size (in KB, 1000 bytes) | Absolute Minimum Size Possible | StringDB Overhead Percentage |
---|---|---|---|
1 | 1.172 KB | 1.152 KB | 1.706485% |
50 | 57.963 KB | 57.6 KB | 0.626262% |
100 | 115.913 KB | 115.2 KB | 0.615117% |
This chart shows the size of a StringDB file after a single insert range with the amount of items specified.
Addons
Official addon support will be maintained for [these libraries.][link_addons]
Issues welcomed!
Don't be afraid to make an issue about anything and everything!
- Is there something weird with how databases are created? Submit an issue!
- Is there something that you wish you could do but can't? Submit an issue!
- Is this library not suitable for your purposes? Submit an isssue!
- Want it to do something? Submit an issue!
It's an honour to have you use this library, and feedback is needed to make this the greatest it can be.
Need immediate assistence? [Join the discord!](discord)