database - 我应该如何设计多个相同的应用程序更新一个数据库
问题描述
我正在管理一个在线书店网站。为了高可用性,我设置了两个 Tomcat 实例来运行网站应用程序,它们是完全相同的程序,并且它们共享位于另一台服务器中的相同数据库。
我的问题是,当两个应用程序同时对数据库执行相同的更新/插入时,如何避免冲突或脏数据。
例如:update t_sale set total='${num}' where category='cs'
如果有两个进程同时执行上面的sql会导致数据丢失。
解决方案
如果您所说的“数据库”是指在 RDBMS(如 Oracle、DB2 或 SQL Server)上运行的精心设计的模式,那么数据库本身将通过在每次更新期间锁定部分数据库来防止您所谓的“冲突”交易。
您可以通过在数据库本身中添加检查子句和主外键结构等功能来防止“脏数据”进入数据库。
推荐阅读
- c++ - 如何将子类的对象保留在cpp中的另一个类中?基类未定义错误
- python-3.x - 查找 2 个语句之间的语义相似性
- c# - 在 appsettings 中定义身份服务器客户端的未记录方式
- laravel - 如何在 mydomain.com/bookstack 上指向 bookstack (Laravel) 应用程序的公用文件夹
- html - 除非我重命名,否则特定图像不会出现在网站上?
- python - 有没有办法通过 python 套接字连接到 sqlite3 数据库?
- angular - 带有 RxJs 的 Angular 9 - 结合 2 个 observables 会产生数据,但异步管道总是看到空结果
- python - 如何将变量分配给 eval / exec 值?
- javascript - 如何制定功能解决方案?
- docker - 在 Python 中使用网站类型的 URL 连接到 redis-server