Быстрее и в реальном времени: почему мы перестроили движок данных
16 июля 2025 · Steve Berry, N1EZ
Этот пост — о «сантехнике», и извиняться за это я не собираюсь. Самая неприметная часть нашей работы — движок, который синхронизирует ваши связи, — это то, на чём держится всё остальное в DxQSO. Если он медленный или ненадёжный, то медленными и ненадёжными становятся и уведомления, и достижения, и совместная работа, которые мы строим поверх него. Поэтому мы вернулись к нему и перестроили его.
Реальное время — в этом вся суть
Вспомните, чем на самом деле является DxQSO: это не аппаратный журнал, а система, которая связывает журналы, которыми вы уже пользуетесь, с телефоном в вашем кармане и почтой в вашем ящике. Это работает, только если ваш журнал действительно живой. Подтверждение, пришедшее в LoTW®, бесполезно как уведомление, если оно доходит до вас через несколько часов. Новый квадрат, который вы только что сработали, не появится в ваших достижениях или в общей активности клуба, если данные устарели. Реальное время здесь — не приятное дополнение. Это и есть продукт.
Поначалу, когда журналы разрослись до десятков тысяч связей, наш исходный механизм синхронизации начал скрипеть. Открыть журнал на телефоне при слабой связи в парке — задача совсем иная, чем открыть его дома на мощном компьютере, а первый движок не был рассчитан на такие условия. Поэтому мы с нуля переписали то, как DxQSO загружает, кэширует и обновляет ваши связи.
Что изменилось внутри
Если просто — три вещи. Во-первых, синхронизация теперь инкрементальная — система запрашивает только то, что изменилось с прошлой проверки, а не тащит весь журнал каждый раз. Во-вторых, данные на каждом устройстве хранятся умнее, так что просмотр и поиск связей больше не ждут сети. В-третьих, мы уточнили временные метки и учёт, которые определяют, что действительно новое, — неприметная деталь, благодаря которой «что изменилось с прошлого раза» становится достаточно надёжным основанием для уведомления, на которое можно положиться.
Ничего из этого не выглядит как кнопка. Это проявляется в том, что система ощущается мгновенной, а подтверждения и активность доходят до вас почти в реальном времени, а не тогда, когда приложение наконец соизволит их заметить.
Создано для слабой связи, а не для лаборатории
Настоящая проверка для движка синхронизации — не быстрый компьютер на домашнем оптоволокне. Это телефон с двумя делениями в дальнем конце парковой дороги, на батарее, которую вы стараетесь беречь, когда вы просто хотите убедиться, что журнал загрузился, прежде чем сворачивать позицию. Именно под такие условия мы и оптимизировали. Инкрементальная синхронизация означает, что проверка при слабом сигнале передаёт несколько килобайт, а не всю историю ваших связей. Более умное хранение на устройстве означает, что уже загруженный журнал остаётся под рукой для прокрутки и поиска, даже если связь пропадёт совсем.
Тот же подход окупается и дома. Когда в журнале десятки тысяч связей, разница между «запросить изменения» и «снова загрузить всё» — это разница между журналом, который открывается мгновенно, и журналом, открывать который вы начинаете бояться. Теперь движок одинаково ведёт себя и на огромном журнале, и на маленьком, — только так инструмент остаётся удобным, пока ваша работа в эфире растёт годами.
Достаточно надёжно, чтобы строить на этом уведомления
Скорость — только половина дела. Система уведомлений надёжна ровно настолько, насколько надёжны временные метки под ней. Если система не может уверенно сказать, что действительно новое, она либо пропускает подтверждения, либо поднимает ложную тревогу — и то и другое быстро подрывает доверие. Пропущенное уведомление о новой стране DXCC — разочарование; поток ложных ещё хуже, потому что вы привыкаете не обращать внимания на сигнал, и тогда мимо проскальзывает и то, что было важно. Наведение порядка в этом учёте — невидимая работа, но именно на ней держится уведомление, на которое вы действительно отреагируете.
Вот почему мы отнеслись к вопросу «что изменилось с прошлого раза» как к первоочередной задаче, а не как к второстепенной. Каждое подтверждение, каждый новый квадрат, каждый шаг к диплому, о которых DxQSO обещает вам сообщить, зависят от того, знает ли система точно, что это новое. Сделайте это правильно — и уведомления кажутся волшебством. Ошибитесь — и вся идея рассыпается.
Фундамент для всего, что будет дальше
Я рассказываю о перестройке, о которой большинство компаний даже не упомянули бы, потому что она тихо делает возможными функции, которые мне больше всего хочется выпустить в ближайший год. Автоматический захват связей в поле и в шеке. Мгновенные уведомления о QSL на телефон и почту. Достижения, которые обновляются в момент прихода подтверждения. Клубы и команды, видящие активность друг друга вживую. Всё это зависит от движка синхронизации, достаточно быстрого и надёжного, чтобы успевать за тем, как вы на самом деле работаете в эфире.
Вы не увидите в списке изменений записи «мы переписали движок данных». Вы просто заметите, что ваш журнал актуален, когда он вам нужен, что уведомления приходят вовремя и что система вам не мешает. В этом и был весь смысл — создать фундамент реального времени, на котором стоит весь остальной DxQSO.


