What Game Engines Know About Data That Databases Forgot
9 days ago
- #database-design
- #game-servers
- #entity-component-system
- Typhon 是一个嵌入式的持久化 ACID 数据库引擎,专为 .NET 游戏服务器和实时模拟设计,采用实体、组件和系统架构。
- 它结合了 ECS(实体-组件-系统)架构与数据库特性,如支持亚微秒级延迟的 MVCC 快照隔离、缓存行感知存储和零拷贝访问。
- Typhon 汲取了游戏引擎的经验教训:通过连续存储组件实现缓存局部性、从固定内存进行零拷贝读取,并将实体视为纯标识(ID)。
- 它还引入了数据库能力:支持按组件进行 MVCC 的 ACID 事务、通过 B+树和空间索引进行选择性索引访问、基于 WAL 的恢复持久性,以及查询规划。
- Typhon 中的组件支持不同的存储模式(版本化、单版本、临时性),以优化不同类型的数据,如库存(持久性)与位置(频繁更新)。
- Typhon 中的视图通过基于变更进行增量刷新,避免了全表扫描,从而桥接了 ECS 系统和数据库查询。
- 其权衡包括仅支持可直接内存复制的组件、以实体为中心的关系(而非 SQL JOIN),以及通过代码(C# 结构体)而非 SQL 定义模式。
- Typhon 专为游戏服务器打造,允许按操作选择持久性级别,并为不同数据需求提供专门的存储方案。