首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

matinal:高质量内存数据库技术选型推荐(三)

FastDb 是高效的内存数据库系统,具备实时能力及便利的 C++ 接口。FastDB 不支持 client-server 架构因而所有使用 FastDB 的应 用程序必须运行在同一主机上。FastDB 针对应用程序通过控制读访问模式作了优化。通过降低数据传输的开销和非常有效的锁机制提供了高速的查询。对每一 个使用数据库的应用数据库文件被影射到虚拟内存空间中。因此查询在应用的上下文中执行而不需要切换上下文以及数据传输。fastdb 中并发访问数据库的同 步机制通过原子指令实现,几乎不增加查询的开销。fastdb 假定整个数据库存在于 RAM 中,并且依据这个假定优化了查询算法和接口。此外,fastdb 没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。这就是 fastdb 运行速度明显快于把数据放在缓冲池中的传统数据库的原因。

01

go-mysql-server:基于内存的go实现mysql server

https://github.com/dolthub/go-mysql-server是用golang实现的基于内存的mysql server。主要应用于两个场景:作为golang单测的mysql替换,作为内置的基于内存的数据库。MySQL Fake 常见实现方式有两种:SQLite 以及 go-mysql-server。因为大家都基本遵循了 SQL 92 标准,在没有用到比较复杂的,或者 MySQL 特有的一些语法特性时,我们可以用 SQLite 来作为一个平替。但是SQLite底层是C语言实现的,github.com/mattn/go-sqlite3仅仅做了cgo的一层封装。用 SQLite 来存取数据时,你会发现跟 MySQL 不同,它只依赖一个文件进行读取和写入,非常轻量级。我们可以在单测执行结束的时候清理掉这个文件即可。SQLite 还提供了内存的模式,这样我们就能完全不依赖存储,直接用 SQLite 来验证我们的语句是否正确。

02
领券