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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Текст:

Михаил Полянин

Редактор:

Максим Ильяхов

Художник:

Алексей Сухов

Корректор:

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

Вёрстка:

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

Соцсети:

Виталий Вебер

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

Рассказываем про алгоритмы хинтинга, антиалиасинга и субпиксельное сглаживание

medium
Что такое Linux (и другие вопросы)
Что такое Linux (и другие вопросы)

Быстрое знакомство с самой многогранной операционной системой

medium
Зачем нужны парсеры
Зачем нужны парсеры

И как стащить с сайта что угодно.

medium
Что такое куки

8 вопросов, которые вы всегда хотели задать, но боялись куки.

easy
Что такое SCRUM
Что такое SCRUM

Модное слово в разработке. Нужно ли оно?

easy
Как работает сканер отпечатка пальца
Как работает сканер отпечатка пальца

Удобно, но не всегда безопасно.

medium
Как начать писать программу и не пожалеть
Как начать писать программу и не пожалеть

Простое пошаговое руководство для тех, кто решил написать свой первый полезный софт

easy
10 главных конструкций языка Kotlin
10 главных конструкций языка Kotlin

Почти как Java, но есть отличия.

easy
Как устроены беспилотные автомобили
Как устроены беспилотные автомобили

В них много алгоритмов и датчиков, но водитель всё равно нужен

easy
Двоичное счисление на пальцах

Все знают, что компьютеры состоят из единиц и нулей. Но что это значит на самом деле?

easy
medium