Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用SQLite作为文件缓存 我的C++应用程序需要支持从网络下载的文件的缓存。当有人建议我考虑使用SQLite存储ID、文件blob(通常是音频文件)和每个条目的添加/修改日期时间时,我开始编写本机LRU实现_Sqlite - Fatal编程技术网

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

使用SQLite作为文件缓存 我的C++应用程序需要支持从网络下载的文件的缓存。当有人建议我考虑使用SQLite存储ID、文件blob(通常是音频文件)和每个条目的添加/修改日期时间时,我开始编写本机LRU实现,sqlite,Sqlite,对于一个客户端正在访问本地SQLite数据库文件的简单情况,我有一个概念证明 但是,我还需要支持应用程序中不同进程的多个访问,以及支持应用程序的多个实例—所有实例都是从同一数据库读取/写入的 我已经找到了很多文章要调查,但我也想问问这里的专家——这是SQLite的合理使用案例吗?如果是,我应该深入挖掘哪些特性/设置来支持我的多址访问案例 多谢各位 M.大多数文件系统也是有效的数据库,并且大多数文件系统为每个文件存储两个或多个时间戳,即与允许实现LRU缓存的上次修改和上次访问时间相关。直接使用文件

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

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

我已经找到了很多文章要调查,但我也想问问这里的专家——这是SQLite的合理使用案例吗?如果是,我应该深入挖掘哪些特性/设置来支持我的多址访问案例

多谢各位


M.

大多数文件系统也是有效的数据库,并且大多数文件系统为每个文件存储两个或多个时间戳,即与允许实现LRU缓存的上次修改和上次访问时间相关。直接使用文件系统将使存储的使用效率与任何数据库一样高,甚至更高。文件系统也已经面向通过多个进程进行高效和相对安全的访问(假设您遵循文件系统中安全并发访问的规则和算法)


SQLite的主要优点可能是稍微简化了对记录列表排序的支持,尽管这是以使用单独的查询API为代价的。当然,数据库还提供了未来存储附加描述性属性的能力,而无需在文件名或某些附加文件中对这些属性进行编码。

通常,关系数据库设计为供多个进程使用。请确保提交插入/更新/删除事务,并读取提交的行。谢谢Gilbert-您是指在我将SQL语句发送到sqlite3\u exec()之前,将我与
BEGIN\u TRANSACTION
commit
组合在一起的SQL语句括起来吗执行?谢谢你的洞察力Greg同意了第二段。我希望SQLite可以帮助我解决的问题是,必须处理多个线程/进程,试图同时访问文件-如果文件直接存储在文件系统中,我必须自己做这件事,但我希望SQLite能为我做很多工作。正如我所暗示的,有一些相当著名的算法可以安全地允许多个进程/线程同时创建和删除共享文件。SQLite可能有助于降低这里的复杂性,但可能会牺牲一些性能,因为在文件系统中,进行修改的每个进程都是完全独立的,并且不会被DB事务序列化。