小公司数据一致性问题与效率平衡的解决方案

小公司数据一致性问题与效率平衡的解决方案

客户(远程)计算机:203
公司计算机:1.11、1.20
数据库:WE、PM、EL

程序开发:A同学

数据库表结构维护和数据导入:B同学

《在203WE无客户增删改操作的前提下,公司内部避免203和1.11数据库不一致问题且保持效率解决方案》
方案一:保证1.11单向覆盖203,反之不成立;
1.11 服务器安装 sqlserver 2017 ,与203数据库版本保持一致。
前提1:远程增删改前先用1.11去覆盖203,远程增删改完成后,马上用203数据库覆盖1.11;(目前只有图片关系表)
A同学操作前必须通知B同学不要对1.11进行增删改操作,直到操作通知B同学可以增删改,若A同学忘记通知,B同学必须寻问。
前提2:不能再用自己电脑数据库覆盖1.11;B同学 测试时增删改链接自己电脑,测试成功后链接1.11增删改;(目前只有表和数据)
注意必须保持PowerDesigner与1.11一致,也就是说,除了极少量增删改手动修改PowerDesigner与1.11数据库,其它都必须用PowerDesigner链接1.11数据库后生成的语句去更新)
前提3:不能再用自己电脑数据库覆盖1.11;A同学 测试时增删改链接自己电脑,测试成功后链接1.11增删改;(目前只有视图)
前提4:A同学每次在203发布程序时,用1.11数据库覆盖203;

方案二: B同学全权管理数据库并维护一致性,A同学只对数据库进行查询操作,不做表结构和数据的增删改操作;

情况一:1.20没有建立外网映射前
0 可以不用1.11,也不用1.20
1A同学本地对数据库的修改都保存为sql 然后给B同学;(同步任务)
2A同学在203发布数据时,让B同学自己电脑上的数据库更新到203数据库;(同步任务)
3A同学对203数据库增删改前,寻问B同学203数据是否是最新的,不是则B同学马上更新;
更新后A同学对203数据库增删改操作,然后复制到A同学电脑;(目前只有导入图片) (同步任务)
这是当时疫情临时方案,但是的前端程序也是直接发布到203上的;
让B同学给自己一个WE数据库,然后A同学放到自己电脑调试程序看效果;
这种方案虽然避免了两人同时增删改的冲突,但导致了很多的必须同步任务,沟通成本高。(由于A同学当时办公效率低,问题还不突出)

情况二:受疫情影响在家办公,1.20建立外网映射后(向日葵)

当时还没有1.11计算机,只有1.20,但后来1.20没有空间了;
B同学Excel数据先导入自己电脑,然后覆盖到1.20;
A同学用1.20覆盖本机;
发布前必须A同学先把自己对数据库表结构和数据的修改更新到1.20,然后用1.20去覆盖203;
(这一步A同学做了,但忘记提前让B同学马上用自己sqlserver2008覆盖1.20,先保证数据一致) (交叉任务)
同时让B同学用1.20覆盖自己电脑的sqlserver2008和2017的两个库;
(这一步A同学忘记提醒B同学,B同学也没有问) (交叉任务)
这两步导致了数据不一致,因为存在较多交叉任务,沟通成本高,若沟通不充分容易出问题;
而方案一中只有“前提1”交叉,其它并不交叉,沟通成本低;
当时出现一个问题就是,但是由于sqlserver版本问题,最终数据出现混乱。


综上所述,目前选择方案一。

 

《203WE有客户增删改操作的前提下,只能203数据单向覆盖1.11,反之不成立》
一、若用户数据操作频率非常小且数据量非常小,且我们知道客户增删改的时间段和表范围;
仍然可以采用《在203WE无客户增删改操作的前提下,公司内部避免203和1.11数据库不一致问题且保持效率解决方案》的方案一;
一般这种情况只存在于
1程序开发的前期,客户没有增删改操作;
2这个程序对客户是只读的,例如El;
(El之所以没能保持一致性,是因为当时本地数据库没有安装sqlserver2017)
二、若用户数据操作频率较大或数据量较大,或增删改的时间段和表范围我们无法知道;
公司对203数据库表结构和数据的所有增删改操作都必须保存为文档(sql语句、程序、Excel、图片等),然后在远程执行;
1表结构增删改:
若改动很小,手动修改PowerDesigner和数据库;
若改动较大,本地测试无误后,在远程执行pd生成的sql语句;
2表数据增删改
若数据量小,用sql语句;
若数据量大,在本地测试无误后,把Excel和导入程序复制到203执行;
3图片导入MongoDB,记录添加到WE关系表
图片导入:在本地测试无误后,把图片和导入程序复制到203执行;

注意:在远程确实无法操作时,偷鸡取巧的方法是三更半夜更新(停用程序,203复制到1.11,更新数据,覆盖到203,恢复程序),但必须提前做好数据备份工作。
但这毕竟是小公司为了效率投机取巧的方法,如迫不得已要不要这么做,且大公司客观上不存在这种操作的条件。
对数据库进行覆盖、批量增删改之前一定先备份,此举关键时刻可以力挽狂澜。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章