java - 同步访问数据库?

标签 java database jdbc transactions synchronization

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

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

你认为这行得通吗?

最佳答案

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

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

关于java - 同步访问数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8245669/

相关文章:

java - JDBC 连接的 JUNIT 测试用例

java - JDBC 显示语法错误,但查询在 HeidiSQL 中运行正常

java - 尝试通过代码更改类路径?

java - Xades4j 验证签名 Xades - EPES : Bad XML signature

java - 应用关闭时的Android调用功能

java - 获取给定日期的最后一天(日期)

sql - 大事务表是个问题吗?

php - 通过 PHP 从 Mysql 数据库获取大层次结构数据的最佳方法

java - 在 JSTL 中浏览二维数组列

python - 尝试使用 pyodbc 执行查询时出现 "Optional feature not implemented"错误