如何避免sqlite数据库被其他方覆盖

时间:2013-04-30 11:40:20

标签: ios objective-c web-services sqlite

我正在开发一个应用程序,用于处理两方或多方之间的请求。这些请求存储在服务器上的sqlite文件中。当任何一方想要检查他们是否收到任何请求时,他们只需下载数据库并过滤出适合他们的请求。这部分工作正常。

但是,当发送请求并上传修改后的sqlite文件时,我有点困惑,因为我之前没有这样做过。如何避免多方尝试在同一时间更新数据库并覆盖彼此的更新?

我不是在源代码示例之后,而是仅仅是之前做过类似事情的人的想法。

谢谢

2 个答案:

答案 0 :(得分:2)

多个用户不应该通过下载,修改它然后将其重新发送(并覆盖它)来更新服务器上的数据库。这很慢,显然存在并发问题。

您应该考虑将前端应用服务器放在数据库前面。类似于SOAP Web服务或宁静的http服务器。一些webApi服务器选项:Node.js + expressAsp.net webapiRuby on Rails + Active Record - 其他许多服务器。

答案 1 :(得分:0)

SQLite是嵌入式环境中的理想选择。您可以将数据库直接绑定到应用程序以进行设置等。一旦开始使用更加传统的客户端/服务器体系结构(如您所希望的那样),SQLite可能不是理想的解决方案。我可以看到两个选项:

  • 抽象对数据库的调用,以便通过对数据库的SQL调用而不是通过替换数据库文件,以适当的方式进行更新。这可以通过构建导入/导出功能轻松完成。您不希望一直转移整个数据库,因为这首先破坏了拥有数据库的目的。

  • 使用像MySQL这样的实际SQL服务器,并使用它来连接客户端应用程序。您仍然希望在它们之间添加某种层,因为使整个Internet可以访问SQL服务器是一个坏主意。如果这是一个内联网应用程序,你应该没问题。

约翰。