r/unity,
我正在工作于DataVo,一个嵌入式关系数据库引擎,使用C#编写。它起源于2023年的大学项目,我一直在重温它,因为我想在.NET/Unity风格的工作负载下找到一个比原生提供者边界更合适的引擎。
为了透明,我使用了AI工具,主要是Claude,进行了boilerplate、文档、测试框架和迭代速度的工作。架构、约束、检查、基准测试和维护仍然是我自己的。
我不想“替代SQLite”,SQLite是成熟且经过打磨的。DataVo是alpha软件。但我想探索的是,如果引擎围绕C#热路径、分配感知存储、向量搜索和反应式查询维护而构建会发生什么。
有趣的两个部分是:
- 原生向量搜索
DataVo支持VECTOR(n)、HNSW和平面向量索引路径,Plus SIMD距离内核。我的用例是NPC内存、AI工具、语义资产查找、局部原型等的局部嵌入式搜索。Unity中的一个原因是避免每个目标平台都进行原生扩展的跨平台编译。
https://preview.redd.it/4qq3azgximbh1.png?width=2774&format=png&auto=webp&s=2572c0b02129336c5d3f1637ba26dac7d3dcbb8d
https://preview.redd.it/vwrqtd30jmbh1.png?width=1200&format=png&auto=webp&s=eccb83847ec448b93dc7ececadb18e7bac9cd731
- 增量视图维护/反应式查询
相反,每一帧都需要重新计算相同的查询,而是可以维护增量的选定查询结果。对于像库存、积分榜、实时经济状态、调试覆盖、工具窗口等模型,感觉更接近于游戏通常需要的东西。
我在一项基准测试中使用了10,000条基准行,随后是50,000条插入+读取迭代。
https://preview.redd.it/vwrqtd30jmbh1.png?width=1200&format=png&auto=webp&s=eccb83847ec448b93dc7ececadb18e7bac9cd731
在复杂的VIP连接+组合聚合负载下,DataVo在macOS arm64上的完整循环时间为485.5毫秒。SQLite在同一基准测试套件中花费了401.8秒,DuckDB花费了43.0秒。
https://preview.redd.it/x8byz871jmbh1.png?width=1200&format=png&auto=webp&s=4eeb16b3a22498534615e38655e11b4e2d82bf00
请注意,这不是一个类似素材的原始比较。DataVo正在维护选定的结果增量,而SQLite/DuckDB正在运行基准查询路径。我仍然认为,如果应用程序要求“在写入后保持此派生的结果存活”,这是一个有用的端到端比较。
我并不是试图将其作为生产就绪的项目。这个项目是alpha状态,目前不适合用于生产数据。
我的实际问题是:Unity开发者认为,是否会在Unity工具/游戏工作流中使用C#原生嵌入式数据库、向量搜索和反应式查询结果有用,还是您更愿意将这种东西留在SQLite中加上自定义C#系统?
我可以分享仓库和基准测试页面,如果允许。
https://preview.redd.it/2mamt40fjmbh1.png?width=3997&format=png&auto=webp&s=8f57922235305e02aff7b7617d13248c5d92ba25
https://preview.redd.it/qv0cw3bfjmbh1.png?width=2736&format=png&auto=webp&s=d8cd7c518ab9e85051b0341f22b2a2a2c3c9e46a
https://preview.redd.it/3sdq1djfjmbh1.png?width=4499&format=png&auto=webp&s=c2b0c569622b0e8330c29171d4b70bdc6941fed4
评论 (0)