用于"Save as"的SQLlite和用于大文件的自动保存功能
SQLlite for "Save as" and Auto-save feature for a LARGE file
我有一个SQLite文件,它可以很容易地达到1GB(可能会变成10GB)。我想为我的桌面应用程序(在C++中)模拟"另存为"和自动保存功能,类似于Office Word。在我看来,每次备份时都要复制整个文件是不切实际的。
我刚开始研究SAVEPOINT。这是解决这个问题的方法吗?但我不清楚保存点是否允许我查询刚刚在保存点之间插入的内容,直到我提交/释放。
我将感谢您的反馈。
此外,退一步来看,我在思考这种保存为/自动保存机制是否是个好主意。我目前正在将每一个SQL命令立即保存到文件中(例如,将用户文本保存到表中的注释字段中)。我确实在应用程序中实现了撤消/重做功能。有人用大型sqlite文件制作桌面应用程序吗?
这取决于您的应用程序在做什么。如果只是插入和删除行,您可以很容易地使它们不可撤消(保留一个历史表——除非您希望它在运行之间保持不变,否则最好作为临时表——并将撤消/重做功能从中删除),但结构更改更难撤消,因为SQLite在创建表后只允许对表进行非常有限的更改(例如,删除一列需要复制表并删除旧表)。也就是说,只要您在每次更改后提交,您就可以拥有一个没有用户可见的保存操作的应用程序:您只需在每次提交时自动将更改持久化到磁盘。
"另存为…"功能会很慢,因为它必须将数据复制到一个新文件中,并且使用多GB需要一些时间,即使您使用的是SSD而不是HDD。真的有必要吗?用户可以自己复制数据库文件(SQLite很好),前提是他们当时没有在应用程序中打开它。
相关文章:
- WinDBG适用于从Visual Studio 2015保存的转储,但不适用于任务管理器。显示异常代码"not found"
- 向量迭代器不兼容的错误,用于保存另一个向量的迭代器的向量
- 用于保存按下的键的动态缓冲区 - c++
- 如何指定用于保存模型的设备
- 一个用于保存模板专业参数的结构
- 用于保存不同值C++的数据类型
- 静态成员函数指针,用于保存非静态成员函数
- 解密不适用于保存的图像,但适用于图像的像素操作矩阵
- GoogleMock SaveArg 用于保存数组?编译器抛出错误,我还没有看到一个好的解决方案
- 叮当完全不适用于未保存的文件
- 用于将枚举元素名称和值保存到文件的 C++ 宏
- 用于"Save as"的SQLlite和用于大文件的自动保存功能
- C#程序,用于使用关闭前事件处理程序自动处理excel,而不保存编辑后的excel文件
- 用于保存多种数据类型C++的数据结构
- C#数组列表的C++等价物,用于保存多个数据类型
- 用于保存一类向量或SQL数据库的简单文件
- 是否存在可用于保存任何枚举值的整型?
- 简单的JPG库(dll),仅用于保存JPG图像
- 如何在Makefile中指定.Am (auto make)用于在编译后将库对象文件(.lo)和对象文件(.o)保存在单独
- 用于保存客户端信息的安全数据结构