是否可以从多个 Flex 客户端应用程序(Web 和 AIR 应用程序)同时访问服务器上的单个 SQLite 数据库?
是否有数据库锁定?
我想做的是,我想将我的数据存储在服务器端的 SQLite 数据库中,并且我希望 web 和 AIR 中的 Flex 应用程序可以同时从服务器上的同一个数据库中获取数据。
这可以通过 SQLite 和 Flex 应用程序实现吗?
在 Flex 中有没有更好的方法来实现这一点?
请您参考如下方法:
我最近一直在努力研究 SQLite 和并发性。这有点糟糕,但它是可行的。
问题是,当您向 SQLite 数据库发出写入操作时,您会锁定整个数据库(与其他解决方案支持的行锁定相比)。如果您从多个位置/线程发出大量写入,当出现“数据库锁定”错误时,您将最终碰壁。
我认为可以增加 SQLite 查询的超时时间,这样这些问题就变得……稍微小一些。尽管如此,它们仍然是问题。
使用 SQLite 时可能遇到的另一个问题是使用 FOR UPDATE。当您需要检索一些行,计算给定数据的东西,然后在没有其他查询同时读取这些行的情况下发出更新时使用。它不支持这样的结构。您可以绕过它,但在执行此更新时必须显式锁定整个 数据库(您会看到有人解决此问题 here)。
并发读取很好,所以也许它适合您。
我想这整个事情的TL;DR 是它取决于您期望在数据库上有多少并发命中。如果您期望很多,也许您应该研究更强大的数据库解决方案,例如 postgresql .
无论如何我都不是数据库专家,但我希望这能为您指明正确的方向。

