chinaphp 2011-09-29 23:32:19 5833次浏览 6条回复 0 0 0

准备用YII 来开发一个B/S的销售管理系统, 想让在网络不能连接的时候,本地也可以使用,把数据保存在本地的mysql 里或者 sqlite 。怎么样来实现联网成功后的数据库自动同步。各位大侠出出点子看。

征得夜烛黑白 同意, 我把群里的讨论发上来,

咖啡 23:34:49 B/S 结构的销售管理这样的软件 ,我想做本地也有个数据库, 在联网的时候是直接两个数据库同时写入 是同步的,在不连接网络的时候写入本地数据库,这样可以照样操作,在网络恢复的时候再自动同步数据,大家出出点子看
微微灯火(26079288) 23:35:48 用flash吧 夜烛黑白 23:36:04 那么关键就是数据库同步了喽 想好同步方案了么? 咖啡 23:36:26 就是在考虑的 怎么实现这个同步功能 是用MYSQL 提供的主从同步功能 还是在程序里来处理 夜烛黑白 23:37:16 不知道mysql的同步效率如何 咖啡 23:37:45 这个应该没问题 数据不会是很多 从服务器同步到客户机器 比较简单 反过来同步就有很多情况 IP不固定 Satyr(Jay)(475346421) 23:38:46 /coffee 咖啡 23:38:47 有防火墙 路由等 所以不一定可以从服务器连接到客户机的3306 夜烛黑白 23:39:24 ip不固定的问题应该是两种方案都存在的问题吧 咖啡 23:39:30 这个设想能实现 ,应该还是很有用处的 , 服务器的IP 应该是固定的 夜烛黑白 23:40:30 恩 我知道服务器的IP固定 我是说myql主从同步,和程序处理的方案,这个问题都需要解决啊 咖啡 23:41:21 程序可以只考虑连接本地数据库 这样简单清晰点 夜烛黑白 23:42:14 程序只考虑链接本地数据库? 不太明白 两边的数据库不是要相互同步么? 咖啡 23:42:47 只要保证客户机上的数据库是最新的啊 管理客户销售的 大部分数据是在客户机上的 我服务器上的数据库主要是给他做备份 分析用 咖啡 23:43:51 最主要是的在没有网络的情况下 客户机上的管理系统照样可以用 夜烛黑白 23:43:58 哦 明白了 也就是说,客户机上才会产生新数据呗 咖啡 23:44:25 是的 服务器上产生的数据少 所以只要保证两个数据库双向同步 夜烛黑白 23:45:23 哦 其实 我也在做一个项目,也是差不多的问题 涉及到mysql和sqlserver数据同步问题 咖啡 23:45:44 不同数据库同步估计要程序来处理了 夜烛黑白 23:46:00 然后,我设计的解决方案就是每个库加一个操作日志 咖啡 23:46:41 日志里记录SQL 操作记录吗 夜烛黑白 23:46:40 记录所做的更改的元数据的主键 然后同步 咖啡 23:46:59 这个也是一种方法 夜烛黑白 23:47:23 恩差不多吧 就是加一个记录操作的表 这样同步起来效率高一点 夜烛黑白 23:48:36 你可以考虑一下 咖啡 23:49:34 嗯 那您就是用程序来处理同步的数据,先把变动的数据放到一个临时表 再单独吧这个表同步复制过去 夜烛黑白 23:51:48 不是啊 就是往数据库存数据或者更新数据的时候 在日志表中存入更改的表名,所更改的记录的主键,操作的类型(更新,插入,删除) 夜烛黑白 23:53:15 日志表还要有一个字段,表明此条操作是否同步 然后,每隔一段时间,对两个库轮巡一次 看日志中是否有未同步的操作 有的话就同步一下 咖啡 23:54:54 这方法不错 学习了 我整理一下发在论坛里可以吧 夜烛黑白 23:55:34 呵呵 我这边是因为时间要求比较高 所以就这样做了 可以啊

您需要登录后才可以回复。登录 | 立即注册