如何恢复由于重装系统导致文件丢失的方法
2010-09-06 20:37
531 查看
公司里做的项目, 打算用多个web服务器, 共同连一个DB, 在某个基础表里的数据需要逻辑唯一, 既某对象(attr1="a", attr2="b")在数据库里只能存在一条记录, 由于这个基础表在用户使用中是用户自定义的, 因此有可能a,b2个用户通过web服务器a和web服务器b同时提交对象(attr1="a", attr2="b")...那么在这种情况下如何使DB里面最终只有一条记录?
公司的做法是:
但我觉得这样还是有问题啊, 因为在查数据库完了之后, 有可能另一台服务器正在保存了, 不过他们解释如果另一台服务器如果正在保存, 这边这台锁表不会成功的, 请问一下, 大家遇到这种情况是怎么处理的?
=================================
也许是我没说清楚, 后面有个同学说得对, 说白了就是多服务器下并发插入的问题, 如何能做到并发插入时保证数据唯一
下面是大家的一些方案(排名不分先后
), 看看还有没有其他的方案:
1. 把save交给一台机器处理,然后暴露API给其他机器使用
2. 乐观锁(这个我觉得似乎不能解决并发插入问题啊)
3. 联合主键
4. 唯一索引
5. 直接往数据库里面插数据,加个时间字段,精确到毫秒级就差不多了,取最新的那个时间字段的行
6. 做一个数据库操作锁,方法调用前都要取锁,取到锁的才用执行,否则等待,这个锁可以放在缓存服务器中,集群中的所有节点连上这台缓存服务器
===============================
加说一下: 这个表是有pk的..比如表结构是:A(id pk auto_increment, attr1, attr2, attr3....)
id是数据库自己递增的, 业务要求是:attr1, attr2....任意2条数据不能重复, - -!这样是不是用唯一性索引就能解决了?
公司的做法是:
public synchronized A save(A a){ //查找数据库看有没有a if(没有记录){ //锁表 //插入记录 }else{ //返回数据库记录 } }
但我觉得这样还是有问题啊, 因为在查数据库完了之后, 有可能另一台服务器正在保存了, 不过他们解释如果另一台服务器如果正在保存, 这边这台锁表不会成功的, 请问一下, 大家遇到这种情况是怎么处理的?
=================================
也许是我没说清楚, 后面有个同学说得对, 说白了就是多服务器下并发插入的问题, 如何能做到并发插入时保证数据唯一
下面是大家的一些方案(排名不分先后
), 看看还有没有其他的方案:
1. 把save交给一台机器处理,然后暴露API给其他机器使用
2. 乐观锁(这个我觉得似乎不能解决并发插入问题啊)
3. 联合主键
4. 唯一索引
5. 直接往数据库里面插数据,加个时间字段,精确到毫秒级就差不多了,取最新的那个时间字段的行
6. 做一个数据库操作锁,方法调用前都要取锁,取到锁的才用执行,否则等待,这个锁可以放在缓存服务器中,集群中的所有节点连上这台缓存服务器
===============================
加说一下: 这个表是有pk的..比如表结构是:A(id pk auto_increment, attr1, attr2, attr3....)
id是数据库自己递增的, 业务要求是:attr1, attr2....任意2条数据不能重复, - -!这样是不是用唯一性索引就能解决了?
相关文章推荐
- 系统错误导致文件丢失如何恢复图文教程
- 系统过度导致Chrome图标丢失的恢复方法
- oracle 中数据文件丢失 导致登录不了 如何恢复?
- linux重要文件丢失导致系统故障,修复方法,(以 libc.so.6库损坏,rpm软件包故障为例)
- 重装系统后,mysql数据库无法安装问题(丢失.dll文件或提示你修改计算机名……),请先按以下方法尝试,如果不行,欢迎交流
- Linux系统中fstab文件丢失的恢复方法
- 当重装数系统/数据库之后,如何恢复数据库的账号 登录名/用户名 孤立用户 缩小ldf日志文件 修改sqlserver2000端口
- WINDOWS2003系统文件ntldr丢失使用“恢复控制台:解决方法
- Oracle丢失归档日志文件的数据库恢复方法
- android学习记录(七)R文件clean后丢失无法恢复,个人的解决方法。
- 手机升级系统如何找回丢失的文件
- 丢失归档日志文件的数据库恢复方法
- 如何删除win10旧系统安装文件的方法与步骤
- Win7如何使用系统保护功能恢复删除文件
- 重装系统后ORACLE数据库恢复的方法
- 重装系统后的QQ聊天记录恢复方法与教程
- 由于SSH配置文件的不匹配,导致的Permission denied (publickey)及其解决方法。
- 控制文件丢失,从自动备份中如何恢复?
- 关于如何找到vmx文件(虚拟系统配置文件)的方法
- [LU系统故障]Q02: 如何恢复启动文件?KDE僵死后系统崩溃