can3p (can3p) wrote,
can3p
can3p

Category:

Временной аспект

При обсуждении моделирования данных очень часто говорят об общей архитектуре, нормализации и т.д., но есть один важный аспект, который присутствует в любой системе и это аспект временной. Что это значит?

Любая система живет во времени. В таблицах хранятся актуальные сущности. Вот у вас пользователь, у него такие-то свойства - имя, теги какие-нибудь. Допустим есть еще другие сущности - покупатели, продавцы, товары. Но есть еще и артефакты, которые эти сущности производят - транзакции, товары и т.д. И для них внезапно оказывается важно знать, в каком состоянии были эти сущности в момент создания артифката. Была ли скидка у пользователя, когда он купил товар? Был ли этот товар в продаже в ринципе?

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

Из этого два следствия - нельзя программировать только для нового состояния, всегда нужно прикидывать, что будет с существующей системой. Второе - при планировании изменений нужно продумывать, как сделать так, чтобы они не затянулись на бесконечность. Пример с api хороший - если оно публичное, то вообще мало шансов, что его получится отключить. Можно просто выключить, но что, если ваши клиенты - банки? Что, если ваши клиенты - не it компании, и интеграцию сделали контракторы, которых уже и след простыл?

Tags: coding
Subscribe

  • Про метро

    Весь год читал про то как в студии Лебедева карпели над напольной навигацией в московском метро. К дизайну и шрифтам претензий нет, но в остальном…

  • Из прочитанного. Выпуск 60

    Добавлю новый тег, т.к. какое-то количество книг я добавил себе в список на прочтение после прослушивания подкастов Юзефоыич на медузе. 1) Midnight…

  • Ссылки и указатели

    Наткнулся на один осмысленный пример применения ссылок вместо указателей. TLDR: указатели могут быть пустыми, а ссылки - нет. Так что ссылка в…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 1 comment