• 1914阅读
  • 10回复

请教一个关于数据库同步的问题 [复制链接]

上一主题 下一主题
离线clickto
 

只看楼主 倒序阅读 楼主  发表于: 2019-10-24
具体情况如下:
1、客户端使用sqlite,服务器使用mysql,两者的表结构完全一致,多客户端;
2、用户按权限分级,数据按组别分组,用户有一般用户和管理用户,一般用户维护自己权限所见的组别数据,本地产生的数据需要同步到远程,其它用户可见,可操作;
3、审定后的数据不允许删除
4、网络暂时不通时,客户数据保存在本地,待网络恢复后,要能够同步到服务器;
5、现在的结构是,所有组别的数据分别放同一张表里。管理用户要能看到所有客户端的数据,同时只有他能审定数据。数据量挺大的。
请问这种情况要怎么进行数据同步?要保证本地新增、删除的数据都要同步到服务器,同时其它客户端能够同步实现这种数据变化体现?
很让人头疼的问题,请各位大侠不吝赐教!!!
离线圣域天子

只看该作者 1楼 发表于: 2019-10-25
试试ETL工具
离线uidab

只看该作者 2楼 发表于: 2019-10-25
倒也不复杂,只是同步策略的问题。确保有字段能表示数据是否同步过。然后和服务端约定一个同步机制。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线clickto

只看该作者 3楼 发表于: 2019-10-25
回 圣域天子 的帖子
圣域天子:试试ETL工具 (2019-10-25 14:45) 

如果能用工具那就好办了。现在领导要求的是Qt内部编程,在客户端完成所有工作。
离线clickto

只看该作者 4楼 发表于: 2019-10-25
回 uidab 的帖子
uidab:倒也不复杂,只是同步策略的问题。确保有字段能表示数据是否同步过。然后和服务端约定一个同步机制。 (2019-10-25 14:47) 

服务器没有程序,仅仅是一个购买的mysql云数据库而已。要求在客户端内编程完成所有逻辑和操作。除了增量数据,还有修改的数据、删除的数据。比如,甲在他本地修改、删除了一些数据,要同步后,其它能看到该类数据的用户也能同步的体现这些变化,头大。
离线clickto

只看该作者 5楼 发表于: 2019-10-25
我现在的做法是
上传:客户端发起同步时,先删除远程允许删除的,再建立本地数据库副本,删除副本中和远程一致的,然后剩下的就是要同步的。但是,如果用Sql语句,数据量太大,光sql语句就好几兆到十来兆,数据库执行超时,如果用QSqlTableModel配合QSqlRecord进行同步,巨慢,1000条记录就要同步十来分钟,不可接受的。。。
离线圣域天子

只看该作者 6楼 发表于: 2019-10-28
回 clickto 的帖子
clickto:我现在的做法是
上传:客户端发起同步时,先删除远程允许删除的,再建立本地数据库副本,删除副本中和远程一致的,然后剩下的就是要同步的。但是,如果用Sql语句,数据量太大,光sql语句就好几兆到十来兆,数据库执行超时,如果用QSqlTableModel配合QSqlRecord进行同步,巨慢,100 .. (2019-10-25 21:52)

我以前做过双向同步的程序,每张表都需要6个SQL进行处理。蛮复杂的
离线uidab

只看该作者 7楼 发表于: 2019-10-28
回 clickto 的帖子
clickto:服务器没有程序,仅仅是一个购买的mysql云数据库而已。要求在客户端内编程完成所有逻辑和操作。除了增量数据,还有修改的数据、删除的数据。比如,甲在他本地修改、删除了一些数据,要同步后,其它能看到该类数据的用户也能同步的体现这些变化,头大。 (2019-10-25 21:35) 

那你要把客户端的数据表和逻辑设计清楚。
有时候为了工作直接获得答案,而我却失去了思考的乐趣!


飘啊飘,何时能安居!
离线clickto

只看该作者 8楼 发表于: 2019-10-29
回 圣域天子 的帖子
圣域天子:我以前做过双向同步的程序,每张表都需要6个SQL进行处理。蛮复杂的
 (2019-10-28 09:35) 

请教具体的方法或思路!
离线clickto

只看该作者 9楼 发表于: 2019-10-29
回 uidab 的帖子
uidab:那你要把客户端的数据表和逻辑设计清楚。 (2019-10-28 09:59) 

已经设计好了,我无法更改,所以头大。
离线clickto

只看该作者 10楼 发表于: 2019-10-29
另外,请教一下,因为数据库的表中字段太多,而且客户端和服务器端表结构一致,所以我尝试着都使用QSqlTableModel的方式打开两端数据库,循环去通过获取和插入QSqlRecord,最后submitAll的方式来进行同步,也对数据库启用了事务,但没想到的是,出人意料的慢。不知道其中有什么原因?
快速回复
限100 字节
 
上一个 下一个