Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2011, 20:30   #1
kos1nus
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 47
По умолчанию Метод синхронизации

Привет народ, как на счет небольшой порции теории? мой вопрос не относится напрямую к PHP, разве что косвенно - PHP как никак связан с серверами.

Сразу скажу, если вы действительно захотите мне помочь то надо вникать.

Вообщем я пытаюсь придумать рабочий способ синхронизации данных через сервер. Данные представляют из себя список записей. так вот элементы списка мне надо синхронизировать.
Синхронизация происходит раз в N'ное количество времени, ну скажем раз в два часа. так вот за эти два часа данные на сервере и клиенте изменяться. Клиент добавил несколько новых записей и удалил несколько старых, в свою очередь на сервере, благодаря синхронизации с другими клиентами также произошли изменения.

в итоге мы видим что то вроде этого


Я думаю сделать так: каждая запись имеет ID (у меня это A,B,C . . ), который может дать только сервер. Соответственно у Клиента, при появлении новых записей, они не имеют ID. идентификацию новые записи получат только после синхронизации.

Старые записи, которые удалили в Клиентском приложении, на самом деле не удаляются до синхронизации, они просто помечаются как удаленные.

Стадии синхронизации:
1) формируем запрос на сервер с такими параметрами:
удаленные записи: B, C
Новые записи: мы еще не знаем их ID, поэтому грубо говоря 1, 2
2) Сервер приняв эту информацию.
-удаляет записи которые клиент пометил как удаленные (B, C)
-добавляет новые присланные записи и задает им ID (G,H)
- отправляет обратно полный список всех записей
3) приняв ответ от сервера Клиент начинает сверять записи.
- обнаруживает лишнюю запись у себя и удаляет ее (A,E)
- Добавляет недостающие записи (F)
- новым записям, которые до этого не имели ID задает этот параметр (G,H)
4) Сервер и Клиент имеют одинаковый список D,F,G,H

Примерно так. Хотелось бы узнать у более опытных людей насколько адекватный вариант я придумал. конечно с радостью выслушаю советы и предложения (ну если они будут дельные конечно).

Просто я могу в чем то заблуждаться и всегда надо знать взгляд со стороны.
kos1nus вне форума Ответить с цитированием
Старый 07.09.2011, 21:33   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

1. Как быть с записями, которые были просто отредактированы(изменилось само содержимое)?
2. Как планируете решить проблему одновременной синхронизации - нужно смещение какое-то для разных клиентов?
3. Сам процесс синхронизации лучше производить не по времени, а по запросу.
4. Удаление файлов с сервера - стрёмная штука(Вася работает над записью А, синхронизация, Пете не нужна запись А - он её удалил(отредактировал), синхронизация, .... Вася плачет).

IMHO - это велик, да ещё и с кучей граблей.
Cтремление похвально - но если вам для реальной работы и сейчас - то Git, SVN, Mercurial, ...
Собственно - если планируете сделать что-то подобное, но своё - то вам по-любому нужно освоить парочку из них.

Теория для "почитать" - Система Управления Версиями.
По Git есть отличная книга "Магия Git" Ben Lynn, и клевая обучалка - GitHowTo.
Andkorol вне форума Ответить с цитированием
Старый 07.09.2011, 22:56   #3
kos1nus
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
1. Как быть с записями, которые были просто отредактированы(изменилось само содержимое)?
2. Как планируете решить проблему одновременной синхронизации - нужно смещение какое-то для разных клиентов?
3. Сам процесс синхронизации лучше производить не по времени, а по запросу.
4. Удаление файлов с сервера - стрёмная штука(Вася работает над записью А, синхронизация, Пете не нужна запись А - он её удалил(отредактировал), синхронизация, .... Вася плачет).

5. IMHO - это велик, да ещё и с кучей граблей.
Cтремление похвально - но если вам для реальной работы и сейчас - то Git, SVN, Mercurial, ...
1. Дело в том что мой случай не подразумевает редактирование записи вообще. да вот так вот. запись создается, выполняет сою роль и удаляется.

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

3. Да это тоже будет, но лично мне нравится чтоб было как можно больше "автоматизма"

4. как я уже написал выше редактирование записи не подразумевается, поэтому такой вариант, я думаю, не получиться.

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

5. Мне не для реальной работы, мне для собственного развития и опыта. это мое хобби так сказать. У меня есть дома сервер с PHP и SQL и я вот так с ним играюсь.
Поэтому у меня нет нужды делать что то очень серьезное и надежное. может быть позже =)
kos1nus вне форума Ответить с цитированием
Старый 07.09.2011, 23:22   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Цитата:
Сообщение от kos1nus Посмотреть сообщение
Допустим у Пети несколько устройств и надо чтоб все изменения которые он произвел на одном произошли и на других.
Как будет осуществляться доступ к данным на устройствах для синхронизации?
"Список записей" - текстовый файл, что ли?
Или несколько файлов в директории?

Пока вопросов больше, чем ответов...
А вообще - начинайте уже писать код, в процессе сразу появятся новые идеи/способы_реализации/грабли.
Andkorol вне форума Ответить с цитированием
Старый 08.09.2011, 08:42   #5
kos1nus
Пользователь
 
Регистрация: 14.07.2008
Сообщений: 47
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Как будет осуществляться доступ к данным на устройствах для синхронизации?
"Список записей" - текстовый файл, что ли?
Или несколько файлов в директории?
локальное хранилище браузера.
kos1nus вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема синхронизации потоков Teor Общие вопросы .NET 4 17.06.2011 15:50
Контроллер для синхронизации БД Arkuz C# (си шарп) 2 21.04.2011 10:54
Прога для синхронизации каталогов Andr3000 Microsoft Office Excel 4 30.03.2011 14:11
Особенности вертикальной синхронизации Lotles Компьютерное железо 3 14.12.2010 17:48
Проблема синхронизации. beda Microsoft Office Word 3 30.06.2010 13:37