我们可以从多个Flex应用程序访问单个SQLite数据库吗?

时间:2011-08-19 05:47:38

标签: flex sqlite flex4

是否可以从Flex的多个客户端应用程序(Web和AIR应用程序)同时访问服务器上的单个SQLite数据库?

是否有数据库锁定?

我想要的是,我想将我的数据存储在服务器端的SQLite数据库中,我希望Web和AIR中的Flex应用程序可以同时从服务器上的同一数据库中获取数据。

使用SQLite和Flex应用程序可以实现吗?

在Flex中有没有更好的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

我最近一直在与SQLite和并发进行相当多的摔跤。这是一种婊子,但它是可行的。

问题是,当您向SQLite数据库发出写入时,您将锁定整个事物(与行锁定相比,其他解决方案支持)。如果您从多个位置/线程发出大量写入内容,那么当“数据库锁定”错误出现时,您将最终敲击墙壁。

我认为可以增加SQLite查询的超时时间,这些问题会变成......稍微小一点的问题。尽管如此,它们仍然存在问题。

您可能遇到的另一个问题是使用FOR UPDATE。当您需要检索某些行,计算给定数据的内容,然后在没有其他查询同时读取这些行的情况下发出更新时,可以使用此方法。它不支持这样的结构。您可以绕过它,但在进行此更新时必须明确锁定整个数据库(您将看到有人解决此问题here)。

并发读取没问题,所以它可能适合你。

我认为整个事情的 TL; DR 取决于您希望在数据库上有多少并发命中。如果您期望很多,也许您应该研究一个更强大的数据库解决方案,如postgresql

我无论如何都不是数据库专家,但我希望能指出你正确的方向。