Карта на стене, которая спасает день от суеты
Диспетчер смотрит на огромную карту города, вся она в липких бумажках. На телефоне мигает предупреждение о шторме, водители звонят один за другим. Можно каждый раз снимать все бумажки и собирать карту заново, а можно держать карту на стене и править только то, что изменилось.
Раньше многие большие компьютерные дела жили как тот шкаф с папками. При каждом новом шаге они снова тащили одно и то же из дальнего хранилища, даже если почти всё уже было нужно таким же. Штука в том, что при частых повторах это тянет время, как если бы карту пересобирали из-за каждого звонка.
Потом появилась новая задумка в Spark. Данные стали держать общей кучей, разложенной по разным машинам, и не выбрасывать из быстрой памяти между повторами. На карте это как делить город на районы и оставлять бумажки на стене, чтобы следующий звонок начинался не с нуля. Вывод простой: держи важное под рукой, и повторы идут легче.
Но карта на стене может пострадать: угол отклеился, лист унесло сквозняком. Spark делает так же, как аккуратный диспетчер с блокнотом: хранит не копию всей карты, а запись, откуда взялся каждый кусочек и как его собрать заново. Тогда пропал один район, и восстанавливают только его, а не весь город. Если места мало, часть можно убрать и потом собрать снова.
Ещё помогают две мелочи для повторяющейся работы. Одну и ту же памятку про перекрытия можно раздать всем водителям сразу, чтобы не читать её по телефону каждому. А общий счётчик делают так, чтобы водители только прибавляли, а читает итог один диспетчер, и он не путается даже при повторных звонках.
Польза видна, когда одни и те же данные нужны снова и снова. Первый раз диспетчер тратит время, чтобы аккуратно развесить бумажки. А потом большинство звонков решается парой быстрых перестановок, и даже если кусок карты пропал, не приходится начинать всё заново. Так повторные вопросы и долгие цепочки шагов перестают быть мучением.