Архивирование является ключевым аспектом корпоративных приложений, но в целом я бы рекомендовал против него, если вам действительно это действительно не нужно.
Архивация означает, что вы либо соглашаетесь с тем, что не можете получить исторические данные до определенной даты, либо что вы создаете некоторую схему для управления «текущими» и «историческими» данными;Ваше решение (архивные таблицы) является одним из решений этой проблемы.
Ни одно из этих решений не так уж и приятно - архивные таблицы означают множество дублированных кодов / данных, сложные архивные процедуры (особенно с отношениями с внешним ключом), много возможностей для ошибок.
Я делаю считаю, что понятие "время" должно быть включено в модель домена и модели для большинства бизнес-приложений, наряду с изменчивостью - вы не сможете изменить заказ один разэто было подтверждено, но вы должны иметь возможность добавлять продукты в новый заказ.
Что касается ваших профи:
В общем, я не думаю, что вы заметите влияние на производительность, если толькоВы говорите об очень, очень крупных предприятиях.Я не думаю, что в современных решениях для SQL-серверов вы заметите разницу в скорости между запросом 10 000 записей клиентов или 1 000 000 записей клиентов.
Определение «исторического» на самом деле довольно сложно - большинство предприятий вынуждены хранить исторические данные для целей регулирования и налогообложения, часто в течение многих лет;они, вероятно, захотят иметь возможность анализировать тенденции за несколько лет и т. д. Если бизнес хочет видеть «сколько виджетов мы продавали в месяц за последние 5 лет», это означает, что вам нужно хранить данные за 5 лет.каким-то образом («сырым» или предварительно агрегированным).
Да, разделение данных будет проще.Сегодня создание функции, которую вы должны поддерживать при каждой смене приложения, для окупаемости через 10 лет, кажется мне плохой инвестицией ...