首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQLite -通过Web与Client/Server应用程序进行更新

问SQLite -通过Web与Client/Server应用程序进行更新
EN

Stack Overflow用户
提问于 2011-03-12 00:49:56
回答 2查看 430关注 0票数 0

(1),因为SQLite数据库是一个单一文件,当使用SQLite时,以下两种情况之间是否有区别?

使用应用程序对同一个数据库进行更新的-2用户

案例B -2对同一个数据库进行更新的WinForms应用程序(即Client/Server模型)

在阅读了以下关于SQLite FAQ - http://www.sqlite.org/faq.html#q5的FAQ问题之后,我就想到了这个问题--同一个应用程序的多个应用程序或多个实例可以同时访问单个数据库文件吗?

“多个进程可以同时打开同一个数据库……”

(2)在A (web应用程序)的情况下,连接到数据库的进程数是否= 1?如果是B(客户机/服务器),是2吗?

(3)对于案例A,如果SQLite数据库文件与web服务器位于同一台机器上,而不是在网络共享上的话,会有什么区别吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-12 01:02:43

多个进程可以同时读取数据库,执行查询等,但是写只能是一次一次。通常,打开数据库的第一个进程将写入数据库,而其他试图编写SQLITE_BUSY的进程将得到一个sqlite3_busy_handler()或sqlite3_busy_timeout() API函数。

请注意,在成功地写入sqlite之后,由同一数据库上的其他进程读取的数据现在可能会过时(缓存现在是不连贯的)。你需要处理这种情况。

案例A和B可能都是1或2:这取决于web应用程序和客户端服务器应用程序是并发地还是顺序地访问数据库。由于您不知道会发生什么情况,所以您应该假设并发访问并相应地处理。

sqlite数据库可以是网络共享的,锁定机制是内部的。

票数 1
EN

Stack Overflow用户

发布于 2011-03-13 01:57:17

您还可以考虑使用伯克利数据库。伯克利DB SQL API兼容SQLite,但底层锁定机制允许并发写入器同时共存。与SQLite一样,伯克利DB是一个链接到应用程序的库。BDB还支持访问数据库的并发线程或进程的混合。

有几个有趣的白皮书比较和对比伯克利DB与SQLite。有一个利益与整合白皮书和一个性能比较白皮书,由Mike撰写,他是SQLite最终指南的作者。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5280003

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档