1 分•作者: grork•大约 2 个月前•原帖
3 分•作者: askhatsaiapov•大约 2 个月前•原帖
这实际上是一个可索引的 BSON 数组,具有查询监听、复制和基本的崩溃恢复功能。 在我进行小项目时,我总是觉得需要某种简单的存储方式,只需一个文件。然而,SQLite 的模式和迁移总让我感觉不太舒服,像是为了一个单文件数据库而使用一整套迁移文件夹,这显得有些过于复杂。JSON 文件需要一次性加载,对于一些小而厚的微服务来说,它们需要保存自己的状态,这会导致启动时的时间成本。 因此,最初的想法是创建一个“可索引且可部分加载的 JSON 对象数组”。从一开始,我就选择用 Zig 编写它,与我其他项目中频繁更换实现语言不同,原因仅仅是我希望能在尽可能多的地方使用它。因此,它的水平与 C/C++、Rust 和 Zig 相当。C 语言很棒,但我真的不太喜欢它们。经过初步尝试后,Rust 让我感到有些压迫,因此通过排除法,我最终选择了这个蜥蜴语言。 我已经在这个项目上工作了大约一年,期间学习了 Zig,重新学习了内存管理,并添加了新功能。在这段时间里,我主要将其与 SQLite 进行比较,并从中学到了很多。最终,在调优之后,我觉得性能对我来说已经足够接近(至少在我笔记本上的基本基准测试中是这样)。 现在它是我在移动应用中通过 Flutter 插件使用的小引擎,以及在我的小型后端中使用 bun ffi 和 Node 原生模块。如果它能解决其他人的痛点,那就太好了。欢迎提出任何问题。