лучшие практики: синхронизация удаленных мобильных устройств mysql через 3G - PullRequest
2 голосов
/ 22 октября 2011

в настоящее время у нас есть один главный сервер mysql, который подключается каждые 1 час к 100 удаленным мобильным устройствам [транспортным средствам] через соединение 3G [не очень надежно: получайте отключение ежедневно, пока выполняется синхронизация для нескольких автомобилей].Синхронизация осуществляется через .net Windows Service Tool.после проверки состояния удаленного mysql мастер запуска выполняет синхронизацию.иногда данные синхронизации полезных данных составляют около 6-8 МБ .синхронизация выполняется только для одной таблицы с использованием нетранзакционного подхода.

Используемая версия сервера mysql: 4.1.22

Вопросы :

  1. полезно ли выполнять синхронизацию транзакцийзная, что синхронизируется только одна таблица?или нет добавленной стоимости!

  2. данные синхронизации, загруженные на удаленный компьютер с помощью оператора mysql:

    LOAD DATA LOCAL INFILE

    формат файла - CSV.Как я могу отправить данные в сжатом формате?без разработки инструмента, который находится на удаленном устройстве.

  3. Это хорошая практика или архитектура в домене синхронизации для развертывания удаленного приложения, которое будет выполнять синхронизацию после отправки данных, или это должно быть сделано непосредственно ведущим?Я имею в виду, что разработку инструмента, который будет находиться на удаленной машине, будет сложно обновить или исправить в случае появления новых требований.но это сэкономит большую полосу пропускания для операции синхронизации и устранит ошибки, которые могут возникнуть из-за динамической мастер-синхронизации в случае отключения во время выполнения синхронизации.поэтому, если это рекомендуется, то будут отправлены только сжатые данные, а затем с помощью некоторой контрольной суммы я проверю, что все отправленные данные в противном случае запрос будет инициирован снова.

Пожалуйста, поделитесь своими мыслями и опытом.

спасибо,

1 Ответ

1 голос
/ 27 октября 2011

Во-первых, я бы изменил подход к синхронизации, инициированной клиентом, по сравнению с синхронизацией, инициированной сервером. Подход «многие к одному» и «один ко многим» расширится намного проще, чем ваша текущая установка. Мои комментарии выше дают несколько хороших примеров требуемой синхронизации клиента с сервером.

Во-вторых, включите запись записи транзакции. Нет причин не иметь его. Это гарантирует, что информация будет введена своевременно и, возможно, сможет предоставить еще больше «метаданных» (например, какие клиенты медленно обновляются и т. Д.).

Наконец, вы можете «улучшить» эту загрузку, по-другому взглянув на нее. Если бы вы внедрили на стороне сервера своего рода услугу, которая принимает ответ через POST от клиента, вы сможете отправить данные на сервер без каких-либо проблем. Это было бы похоже на «загрузку» файла на сервер. Как только ваш файл размером 6-8 МБ будет загружен, он будет помещен в базу данных. Самое замечательное в этом заключается в том, что если ваш сервер является APACHE (или даже в вашем случае сервером IIS), вы сможете одновременно загружать данные для каждого клиента без особых проблем. В этот момент загрузка на сервер MySQL через вставку займет практически совсем немного времени, и ваш процесс продолжится без проблем.

Так я справлюсь с твоей ситуацией ...

...