【问题标题】:best practice: mysql remote mobile devices sync over 3G connection最佳实践:mysql 远程移动设备通过 3G 连接同步
【发布时间】:2011-10-22 08:18:04
【问题描述】:

目前我们有一个主 mysql 服务器,每 1 小时通过 3G 连接连接到 100 台远程移动设备 [车辆] [不太可靠:在少数汽车同步过程中每天断开连接]。通过 .net Windows 服务工具完成同步。检查远程 mysql 状态后,master 开始执行同步。有时同步负载数据约为 6-8 MB。仅使用非事务方法对一个表执行同步。

使用的mysql服务器版本为:4.1.22

问题

  1. 知道只有一个表同步,使同步事务性有用吗?或者没有增值!

  2. 使用mysql语句将同步数据加载到远程机器:

    加载数据本地文件

    文件格式为 CSV。我如何以压缩格式发送数据?无需开发驻留在远程设备上的工具。

  3. 在同步域中部署远程应用程序在发送数据后执行同步是好的做法或架构,还是应该由主控直接完成?我的意思是,如果出现新的需求,将难以更新或修复将驻留在远程机器上的工具。但它会为同步操作节省大量带宽,并且它会消除在同步进行时发生断开连接的情况下实时主同步可能引发的错误。因此,如果建议这样做,那么只会发送压缩数据,然后通过使用某种校验和,我将验证是否发送了整个数据,否则将再次启动请求。

请分享您的想法和经验。

谢谢,

【问题讨论】:

  • 正在使用什么样的设备?
  • 设备是具有工业规格和 MS-Win-XP-Pro 作为操作系统的笔记本电脑。
  • 您的问题不清楚。每个客户端是直接与 mysql 服务器对话,还是每个客户端都使用一种 RESTful 连接到与 mysql 对话的后端服务器(可以是任何东西,php 页面,自定义 python,c++ 服务器)。你到底想完成什么?您是否主要担心发生的错误(数据未正确通过?)。通过后端 RESTful 服务器将消除您的大部分问题,因为您将能够在数据输入数据库之前检查数据是否正确......
  • 另外,看起来服务器正在启动同步,而不是客户端,我会将其更改为客户端启动,仅由服务器处理数据......这是一种更加向前和可扩展的方法。
  • 这只是事情的完成方式...查看几乎所有必须“同步”数据的单一类型的服务器...提供 RSS 提要的网站不会自动将其发送到人,客户端软件出去并ping它以同步客户端软件。 Dropbox 是客户端启动的同步服务的完美示例。服务器初始化是老一套的想法,而不是事情的完成方式。

标签: mysql database synchronization 3g


【解决方案1】:

首先,我将更改客户端启动同步与服务器启动同步的方法。多对一与一对多的方法将比您当前的设置更容易扩展。我上面的 cmets 给出了一些需要客户端到服务器同步的好例子。

其次,开启交易记录输入。没有理由不拥有它。这将保证信息被及时输入,并且可能提供更多的“元数据”(例如哪些客户端更新缓慢等)。

最后,您可以通过不同的视角来“增强”此上传。如果您要在服务器端实现某种服务,该服务通过来自客户端的 POST 接收响应,您将能够毫无问题地将数据发送到服务器端。这就像将文件“上传”到服务器一样。一旦您的 6-8 MB 文件被“上传”,它就会被放入数据库中。这样做的好处是,如果您的服务器是 APACHE(或者甚至在您的情况下是 IIS 服务器),您将能够让每个客户端同时上传数据而不会出现太大问题。那时,通过插入上传到 mysql 服务器几乎不需要任何时间,您的过程将继续进行而不会出现问题。

这就是我处理你的情况的方式......

【讨论】:

    猜你喜欢
    • 2012-11-04
    • 1970-01-01
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多