使用 SQLite 作为文件缓存

Mol*_*irk 5 sqlite

我的 C++ 应用程序需要支持缓存从网络下载的文件。当有人建议我考虑使用 SQLite 来存储 ID、文件 blob(通常是音频文件)以及每个条目的添加/修改日期时间时,我开始编写本机 LRU 实现。

我有一个概念证明,适用于一个客户端访问本地 SQLite 数据库文件的简单情况。

但是,我还需要支持应用程序中不同进程的多次访问,以及支持应用程序的多个实例 - 所有对同一数据库的读取/写入。

我找到了很多要调查的帖子,但我也想询问这里的专家 - 这是 SQLite 的合理用例吗?如果是,我应该深入研究哪些功能/设置以支持我的多访问案例。

谢谢。

M。

Yaw*_*war 1

但是,我还需要支持应用程序中不同进程的多次访问,以及支持应用程序的多个实例 - 所有对同一数据库的读取/写入。

SQLite 绝对可以支持这个用例。这里的要点是你有多个读者和作者。SQLite 的WAL 模式支持并发的多个读取器和单个写入器。因此,在您的应用程序中,只需确保有一个专用于写入的连接,以及一个或多个专用于读取的连接(即连接池)。即使对于可扩展的复制数据库服务器来说,这实际上也是一种非常常见的模式。

唯一真正的争论点是应用程序的多个正在运行的实例都尝试同时写入。如果您可以将单个实例指定为“编写器”并将所有写入请求路由到该实例,它将解决该问题。