
Built a C# embedded database with VECTOR(n), HNSW, and SIMD distance kernels, looking for feedback
Hey r/vectordatabase,
I’m working on DataVo, an embedded relational database engine written in C#. I’d like to get feedback from people who have worked on storage engines, indexing, query execution, or embedded databases.
This project started as a university project in 2023. I’ve been revisiting it as a real research/engineering project because I wanted to explore what an embedded database can look like when it is designed around the .NET runtime instead of sitting behind a native provider boundary.
To be transparent, AI tools helped with boilerplate, docs, test scaffolding, and iteration speed. I still own the design decisions, review the code, run the tests, and maintain the project. I’m not trying to hide that. I’d rather have the work judged on the architecture, tests, benchmarks, and limitations.
The current engine includes:
- SQL-style DDL/DML/query support
- In-memory, disk, and LSM storage modes
- WAL-backed disk and LSM durability modes
- Session-bound transactions
- MVCC snapshot visibility
- Scalar indexes
- INT and GUID index fast paths
- VECTOR(n) columns
- HNSW and flat vector index paths
- SIMD distance kernels
- Roslyn source generators for compiled query paths -> Personally I think this is the most interesting feature of the DB engine, since supported query shapes can move parse/planning/mapper setup ahead of runtime and do less dynamic work when the app is running
- Incremental view maintenance (IVM) / reactive query support -> This is the other big thing i'm exploring that produce very good results as compared to SQLite / DuckDB (however there we are comparing apples to oranges)
- ADO.NET-facing package work
- Early EF integration
The main design goal is a C#-native embedded engine with allocation-aware hot paths. Some internal read/write paths are designed to avoid steady-state allocation, reduce GC pressure, and make performance easier to reason about in local-first .NET apps, game tooling, simulations, and other latency-sensitive workloads.
This is not meant to be a SQLite or Postgres replacement. SQLite is one of the obvious embedded baselines, so I benchmark against it, but the point is not “DataVo beats SQLite overall.” SQLite is mature, extremely reliable, and far ahead on production hardening.
DataVo is alpha software and still has missing features and edge-case bugs.
The benchmark page includes results for several workloads, including flat CRUD, disk CRUD with WAL, thread scaling, YCSB-style mixed reads/writes, vector search, deep document loading, and some comparisons against SQLite, LiteDB, and DuckDB depending on the scenario.
The benchmark results are local/CI measurements, not universal rankings, and the relaxed LSM numbers are not the same durability contract as strict fsync.
I’m mainly looking for feedback on the direction of the project. Does a C#-native embedded database make sense for .NET workloads, or is this solving a problem that people would rather handle with SQLite/Postgres plus libraries?
I’m also interested in what you would want to see next to evaluate it seriously: different benchmarks, durability tests, more SQL coverage, better EF/ADO.NET integration, vector search work, or something else.
Repo: https://github.com/ArintonAkos/DataVo-DBMS
Docs / benchmarks: https://arintonakos.github.io/DataVo-DBMS/manual/performance/benchmarks
Write-up: https://medium.com/p/bfeac66c5cac