纯SQL打造的DOOM多人射击游戏:DOOMQL

2025-09-10
纯SQL打造的DOOM多人射击游戏:DOOMQL

一位开发者利用CedarDB数据库,纯用SQL语言编写了一个类似DOOM的在线多人射击游戏DOOMQL。游戏将地图、玩家、敌人等所有游戏数据都存储在数据库中,利用SQL视图实现光线追踪和精灵投影等渲染功能,游戏循环则由一个简单的shell脚本驱动。令人惊讶的是,这种方法不仅可行,而且性能出奇地好,每秒30帧,并且轻松实现了多人游戏功能,这得益于数据库本身的并发控制机制。虽然维护和调试起来可能很困难,但这项实验展现了SQL在游戏开发领域的潜在可能性,以及CedarDB数据库的高效能。

阅读更多
游戏

CedarDB:乐观锁耦合的B树,如何在现代硬件上闪耀?

2025-03-07
CedarDB:乐观锁耦合的B树,如何在现代硬件上闪耀?

B树,这个50多岁的“老家伙”,在CedarDB数据库中焕发了青春。文章深入探讨了B树如何在现代多核处理器和庞大缓存架构下保持高效。其优秀的缓存利用率和乐观锁耦合机制,使B树在处理海量数据时,依然能实现低延迟、高并发访问。即使面对上亿行数据的ClickBench数据集,B树也能凭借其高扇出特性,将数据访问控制在短短三层,有效利用CPU缓存层次结构。乐观锁耦合策略则巧妙地减少了锁竞争,使得读写操作都近乎无锁状态,性能媲美无同步读取。总而言之,B树凭借其出色的适应性和优化策略,在现代数据库中依然占据着不可替代的地位。

阅读更多
开发 并发控制

如何正确地对数字求和

2024-11-03
如何正确地对数字求和

本文探讨了编程中数字求和的常见问题,特别是数值溢出的处理。文章指出,简单的累加方法在处理大数据或数据库系统时存在溢出风险,并解释了不同编程语言(C++、Rust、Python)如何处理溢出。文章强调了数据库系统中溢出处理的重要性,以CedarDB为例,说明其如何通过硬件层面的溢出标志位进行高效的溢出检测,并与其他数据库系统如ClickHouse的处理方式进行了比较。最后,文章总结了如何使用更大类型中间结果、检查溢出等方法来避免和处理数值溢出问题。

阅读更多
未分类 数值溢出

为什么不能忘记优化数据布局?

2024-10-15
为什么不能忘记优化数据布局?

本文探讨了数据布局对程序性能的影响,特别是AoS(结构数组)和SoA(数组结构)两种数据存储方式的比较。AoS将每个对象的所有属性存储在一起,方便对象级操作,但读取性能较差;SoA将相同属性存储在一起,更利于缓存优化和向量化计算,读取性能更佳,并更易于压缩。文章通过实验数据说明了SoA在读取和分析大量数据时的优势,同时也指出了AoS在频繁更新数据时的适用性。

阅读更多
未分类 数据布局 AoS SoA

为什么你的固态硬盘可能很糟糕,以及你的数据库可以做些什么

2024-06-19

文章分析了固态硬盘在数据库系统中的应用,指出虽然固态硬盘拥有极高的读写吞吐量,但在数据持久化方面存在着延迟问题。文章深入探讨了数据库系统如何通过分组提交、异步处理以及使用企业级固态硬盘等方法来缓解这一问题,并以MongoDB和PostgreSQL为例,阐述了不同数据库系统如何处理固态硬盘延迟问题。最后文章指出,对于普通用户来说,固态硬盘的延迟问题并不会造成严重影响,而对于生产环境,使用企业级固态硬盘是更优的选择。

阅读更多
未分类 固态硬盘

简单、高效且强大的连接处理哈希表

2024-06-08

本文介绍了 CedarDB 数据库中用于连接处理的哈希表实现。该实现针对数据库系统的独特需求进行了优化,例如并行数据处理、高效过滤不匹配行以及对重复数据倾斜的鲁棒性。文章详细解释了如何利用并行构建、Bloom 过滤器和无链布局等技术来实现这些目标。最后,通过与其他哈希表实现的比较,展示了该方法在图形和关系工作负载上的性能优势。

阅读更多
未分类 连接处理