2013-04-30 84 views
0

我正在处理一个应用程序,它是为了处理两方或多方之间的请求。这些请求存储在服务器上的sqlite文件中。当任何一方想要检查他们是否收到任何请求时,他们只需下载数据库并过滤出对他们有意义的请求。这部分工作正常。如何避免sqlite数据库被其他方覆盖

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

我不是源代码后的例子,而是来自任何曾经做过类似事情的人的想法。

谢谢

+2

呃。它并没有比来回传输整个数据库更糟糕。你确定要遵循这条道路吗? – Kai 2013-04-30 11:45:06

+0

将此留作评论,而不是答案,因为我不想提出任何建议我公司产品的积分或赞誉。尽管如此,Zumero(我甚至不会链接它)是用来解决*这种问题,对客户端SQLite代码进行很少或根本没有修改。它处理同步,合并,同步更新等。 – 2013-04-30 13:49:29

+0

Zumero看起来非常酷。我会去尝试一下。谢谢 – YsB 2013-05-01 11:26:47

回答

2

多个用户不应该更新服务器上的数据库,方法是下载该数据库,对其进行修改,然后将其发回(并覆盖它)。这很慢,显然有并发问题。

你应该看看把前端应用服务器放在数据库的前面。像SOAP Web服务或宁静的http服务器。一些webApi服务器选项:Node.js + express,Asp.net webapi,Ruby on Rails + Active Record - 其他许多人在那里。

+0

谢谢。这有很多帮助。我是新手级别的,但真的很喜欢编程。 – YsB 2013-05-01 11:25:35

0

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

  • 摘要调用数据库,这样的更新以适当的方式发生,数据库通过SQL调用,而不是通过更换数据库文件。这可以通过构建导入/导出功能轻松完成。您不希望一直都在传输整个数据库,因为这首先破坏了创建数据库的目的。

  • 使用像MySQL这样的实际SQL服务器,并使用它从您的客户端应用程序进行连接。但是,您仍然希望在两者之间添加某种图层,因为使整个Internet可以访问SQL服务器是个不错的主意。如果这是一个Intranet应用程序,你应该没问题。

Johan。

+0

Johan,谢谢你的回答。它是一个耻辱,我只能接受一个答案,因为你的答案和bryanmac的答案一样有用。 – YsB 2013-05-01 11:24:23

+0

是的,我认为Bryanmac和我都同时发布了。不用担心,很高兴为你解决问题。 – PurpleAlien 2013-05-01 14:01:40