Синхронизация: как это делают крутые ребята
medium

Синхронизация: как это делают крутые ребята

Какая бывает синхронизация данных и от чего это зависит

Синхронизация — это когда в нескольких местах лежат одни и те же данные: файлы, папки, записи в базе данных, информация о пользователе и что угодно ещё. Снаружи кажется, что всё просто: указал, что нужно синхронизировать, а дальше оно всё само. Но на самом деле в синхронизации есть много тонких моментов, про которые разработчикам нужно подумать заранее, например:

  • откуда и куда отправлять данные;
  • что синхронизировать, а что нет;
  • что делать с дублями;
  • удалять данные при синхронизации или нет.

Сейчас разберём эти вопросы. Цель — повышение общей компьютерной грамотности и развитие кругозора. 

Направление синхронизации

Есть два вида синхронизации — односторонняя и двусторонняя.

Для бэкапов чаще всего пользуются односторонней синхронизацией, которая работает так:

  • есть две стороны — источник и приёмник данных;
  • источник главный, а задача приёмника — сделать так, чтобы на нём была точная копия данных;
  • если в источнике что-то меняется, это сразу же меняется и в приёмнике;
  • если что-то меняется в приёмнике, источник на это не обращает внимания.

Пример такой синхронизации — синхронизация важных файлов на внешний диск. Системе всё равно, что было на диске до этого, её задача — отправить туда нужные папки и убедиться, что всё скопировалось. Если после этого мы что-то добавим на внешний диск — компьютер никак не отреагирует. А вот если удалим файл из папки с документами, то этот же файл тут же удалится и с внешнего диска.

Синхронизация: как это делают крутые ребята

Двусторонняя синхронизация работает иначе:

  • есть две стороны, у которых одинаковые права;
  • если что-то меняется на одной стороне, то же самое происходит и на другой.

Такая синхронизация чаще всего работает в онлайн-хранилищах типа Яндекс Диска: вы выбираете папки у себя на компьютере и получаете их полную копию в облаке. Если мы что-то удаляем на компьютере, то это удаляется и из облака. Наоборот тоже работает: если мы зайдём из браузера в облачное хранилище и удалим там ненужное, то после синхронизации с компьютера эти данные тоже исчезнут.

Синхронизация: как это делают крутые ребята

Что синхронизировать, а что нет

Бывает так, что нам нужно синхронизировать только определённые данные: фотографии, записи логов или информацию о дате и сумме покупок. Например, в настройках мобильного телефона можно указать, что в облако нужно отправлять только фото, а видео и остальные файлы — нет.

Другой пример — синхронизация кассовых терминалов в магазинах с сервером, который обслуживает продажи. На сервере в базе хранится очень много разной информации о товарах: дата поступления, название поставщика, размер скидки, дата следующей поставки и ещё 50 параметров. Но с терминалом в магазине синхронизируется только часть данных: цена, количество остатка и срок годности товара.

Удалять данные или нет?

Даже если мы настраиваем полную синхронизацию, у нас всегда есть вариант, при котором мы не удаляем данные, даже если их удалили на той стороне. Такое используется в системах бэкапов и в облачных хранилищах, когда удалённые файлы можно восстановить, например, в течение 30 дней. Они складываются в корзину и хранятся там до конца этого срока или пока мы их не восстановим раньше.

Второй вариант — файлы просто помечаются как удалённые и не участвуют в синхронизации. У них, например, меняется иконка, они видны на своём старом месте, но скопировать их можно только вручную. 

Конфликты при синхронизации

Представьте такое: один и тот же документ открыли на разных компьютерах, внесли правки и сохранили в том же месте. Какой файл система возьмёт как основной для синхронизации? А что делать со вторым? А если сохранять два, то как именно?

Все подобные конфликты тоже нужно решить заранее до синхронизации. Например, какой файл сохранили последним — тот и использовать для синхронизации. Или можно сохранить оба файла, но под разными именами, добавив к названиям «-conflict1» и «-conflict2», а исходный файл вообще не трогать.

Или вот ещё вариант: при синхронизации в папке оказывается файл с тем же именем, который там уже есть, — что делать системе в этом случае? Здесь нет правильного ответа, всё будет так, как придумал разработчик или настроил пользователь. Системы поумнее спросят, что делать, а системы попроще просто заменят одно другим.

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
medium