Обмен данними (синхронизация бази)

Модератор: Модераторы

Обмен данними (синхронизация бази)

Сообщение kit » 30.09.2017 09:46:03

База в DBF. Как организовать обмен данними между двумя несвязанними компютерами через ел. почту? Типа как в 1С.
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Обмен данними (синхронизация бази)

Сообщение vitaly_l » 30.09.2017 10:34:15

kit писал(а):через ел. почту?

Создаёте дамп файла всей БД (или копируете файл БД) и отправляете его по почте. Программа получатель, должна уметь перемещать этот файл в нужную программе директорию. А дальше она работает с файлом БД, как со своим. Соответственно, если это не полная таблица а её часть, то следует добавить кнопки экспорт(с ограничениями) и импорт.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Обмен данними (синхронизация бази)

Сообщение kit » 01.10.2017 08:19:47

Интересует алгоритм синхронизации.
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Обмен данними (синхронизация бази)

Сообщение olegy123 » 01.10.2017 17:21:24

Нужен почтовый сервер(Свой/Mail.ru/Yandex.ru/Gmail.com..) и клиент (POP3/IMAP) .
http://www.ararat.cz/synapse/doku.php/p ... pop3sample
http://dev-doc.blogspot.ru/2013/02/delp ... -pop3.html

Данные формируются в DBF файл, во временную папку.
Заполняешь email: куда, почтовое сообщение "Обмен данными"
Тело письма:"Контрольная сумма:123456",
Добовляешь DBF файл.
отправляешь письмо..

Проверяешь почту, новое письмо. Проверяешь на сообщение "Обмен данными". Скачиваешь.
Смотришь на добавленный файл. Записываешь во временную папку.. Проверяешь на контрольную сумму, взятую с тела письма.
Контрольная сумма проверена. Подключаешь DBF-файл. Работаешь с данными.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Обмен данними (синхронизация бази)

Сообщение Vadim » 02.10.2017 10:49:43

kit писал(а):Интересует алгоритм синхронизации.

И ещё было бы интересно узнать, что Вы имеете в виду под термином "синхронизация". ;-) Выявление несовпадающих данных между двумя файлами и делание их совпадающими?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Обмен данними (синхронизация бази)

Сообщение olegy123 » 02.10.2017 11:06:59

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

Ждет ответ, в ответ может прийти типа ок(число передачи/контрольная сумма/хеш) - значит на том конце данные были получены и обработаны...

На самом деле именно так устроены передачи в сети.. но нужно учитывать ограничения размера письма, время обмена - письмо может идти несколько суток.

Добавлено спустя 2 минуты 51 секунду:
Можно использовать передачу через мессенжеры(ICQ,Telegram ..), соцсети. Там где есть публичный API.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Обмен данними (синхронизация бази)

Сообщение Снег Север » 02.10.2017 11:56:17

Вообще-то база в DBF и обмен через почту это... что наподобие "как правильно изготовить каменный топор"... :lol:
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Обмен данними (синхронизация бази)

Сообщение kit » 03.10.2017 09:47:11

Vadim писал(а):
kit писал(а):Интересует алгоритм синхронизации.

И ещё было бы интересно узнать, что Вы имеете в виду под термином "синхронизация". ;-) Выявление несовпадающих данных между двумя файлами и делание их совпадающими?

Именно ето меня интересует! Какие дополнительно колонки в таблицу надо добавить?
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Обмен данними (синхронизация бази)

Сообщение vitaly_l » 03.10.2017 10:00:13

kit писал(а):Какие дополнительно колонки в таблицу надо добавить?

Нужно запоминать дату последней синхронизации, а в таблицу добавить время и дату создания записи. Соответственно, всё что после даты последней синхронизации - должно будет быть синхронизировано. А то что создано, до, даты последней синхронизации - считается уже синхронизированным. Дата синхронизации, у каждой базы своя. Эти даты, на всех машинах, должны быть в едином часовом поясе.

А дальше, отправляете дату последней синхронизации + новые данные и мгновенно до-заполняете недостающие данные в синхронизируемой БД, а она в ответ присылает свои данные, которые были созданы в ней после указанной даты последней синхронизации.

.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Обмен данними (синхронизация бази)

Сообщение Vadim » 03.10.2017 10:24:21

kit писал(а): Какие дополнительно колонки в таблицу надо добавить?

А какие уже есть?
Если проверка актуальности данных будет проводится по новым датам, то обязательно должна присутствовать колонка с датой:временем занесения строки (или, если синхронизация идёт раз в сутки - только дата без времени).
Т.е. сначала вам нужно выявить ту колонку, по которой можно судить, нужна синхронизация или не нужна. Или несколько колонок, если условие синхронизации сложное.

Добавлено спустя 3 минуты 23 секунды:
olegy123 писал(а):но нужно учитывать ограничения размера письма

Скорее всего это не нужно, т.к. файлы DBF (по своему опыту с 1С) величиной более 1 ... 1,5 МБайт - это один сплошной геморой, т.к. постоянно рушатся индексы.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Обмен данними (синхронизация бази)

Сообщение kit » 03.10.2017 12:53:13

Что делать если в таблице есть поле ID? Оба клиента добаляют туда записи и ID после синхронизации дублируется.
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Обмен данними (синхронизация бази)

Сообщение vitaly_l » 03.10.2017 13:08:55

kit писал(а):ID после синхронизации дублируется.

Я же написал, с машины №2 направляете новые данные на машину №1 (основной сервер) и записываете недостающие данные. Данным присваиваются новые ID. Потом, все эти данные отправляете обратно, но уже с новыми ID (включая те, данные, которые уже есть на сервере). Соответственно, на машине №2 удаляете все записи с даты последней синхронизации и записываете их же но уже с ID сервера.

Соответственно, теперь: и на сервере и на клиенте, одинаковые синхронизированные данные с одинаковыми ID.

/
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

Re: Обмен данними (синхронизация бази)

Сообщение olegy123 » 03.10.2017 14:17:44

kit писал(а):Что делать если в таблице есть поле ID? Оба клиента добаляют туда записи и ID после синхронизации дублируется.
если есть возможность добавить поле Timestamp и заносить туда текущую дату обновления записи - то фильтровать просто от даты - самый простой способ
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Re: Обмен данними (синхронизация бази)

Сообщение kit » 04.10.2017 08:53:45

vitaly_l писал(а):
kit писал(а):ID после синхронизации дублируется.

Я же написал, с машины №2 направляете новые данные на машину №1 (основной сервер) и записываете недостающие данные. Данным присваиваются новые ID. Потом, все эти данные отправляете обратно, но уже с новыми ID (включая те, данные, которые уже есть на сервере). Соответственно, на машине №2 удаляете все записи с даты последней синхронизации и записываете их же но уже с ID сервера.

Соответственно, теперь: и на сервере и на клиенте, одинаковые синхронизированные данные с одинаковыми ID.
/

А если вместо ID добавить UID - составной индекс с ID записи и ID пользователя. Ето спростит или нет?
kit
постоялец
 
Сообщения: 156
Зарегистрирован: 29.09.2016 09:39:07

Re: Обмен данними (синхронизация бази)

Сообщение Vadim » 04.10.2017 09:21:46

kit
А вообще, поле ID что означает? Если это просто номер записи (ну, типа, искусственный уникальный ключ в одной из таблиц), то его копировать в другую таблицу не стоит, т.к. в другой таблице он никакого смысла не имеет.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

След.

Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5

Рейтинг@Mail.ru