同步访问数据库?

时间:2011-11-23 16:27:55

标签: java database jdbc transactions synchronisation

我正在为叔叔钓鱼店写一个小商店管理软件。它支持访问本地网络中单个数据库的多个客户端。我目前正在寻找一种同步访问数据库的方法。一种解决方案是编写管理数据库访问的服务器程序。但我没有网络编程经验,所以我想找到另一种解决方案。我想出了以下内容:

数据库中的每个条目都有一个时间戳,用于通知上次编辑它的时间。在客户端编辑条目之前,它会读取时间戳以检查该条目是否已被其他客户端修改。如果是这种情况,客户端不会写入数据库,而是通知用户。用户必须将其本地更改与修改的db条目合并。读取时间戳,检查时间戳和写入数据库的过程将作为单个jdbc事务实现。

你觉得怎么样?

1 个答案:

答案 0 :(得分:2)

对于您的应用程序,因为它看起来很小(合理数量的客户端,低并发性......),您应该使用事务感知数据库(和引擎,如MySQL的InnoDB,尽管它& #39;只是一个例子),并在SERIALIZABLE事务隔离中运行。从那时起,您可以确保没有两个人可以在不知情的情况下更新相同的内容,并且您只需要遵循最佳实践。

使用时间戳通常称为"乐观"锁定。基本上阅读,并尝试编写期望的东西不会改变(包括WHERE子句中的时间戳或版本号),它通常是一件好事(至少对你的规模的应用程序,应用程序有很多客户端,高并发性会在某些情况下受到影响)