У меня есть вопрос относительно двух дополнительных столбцов (timeCreated, timeLastUpdated) для каждой записи, которую мы видим во многих решениях. Мой вопрос: есть ли лучшая альтернатива?
Сценарий: у вас есть огромная БД (с точки зрения таблиц, а не записей), а затем приходит клиент и просит добавить "временную привязку" к 80% ваших таблиц.
Я считаю, что это можно сделать, используя отдельную таблицу (TIMESTAMPS). В этой таблице в дополнение к очевидному столбцу временной метки указывается имя таблицы и первичный ключ для обновляемой таблицы. (Я предполагаю, что для большинства ваших таблиц вы используете int как первичный ключ, но имя таблицы, скорее всего, должно быть строкой).
Чтобы представить это, предположим, этот базовый сценарий. У нас было бы две таблицы:
ОПЛАТА: - (ваши обычные записи)
TIMESTAMP: - {текущая временная метка} + { TABLE_UPDATED
, id_of_entry_updated
, timestamp_type
}
Обратите внимание, что в этом дизайне вам не нужны эти два "дополнительных" столбца в вашем собственном объекте оплаты (который, кстати, может сделать это через ваше решение ORM), поскольку теперь вы индексируете TABLE_UPDATED
и id_of_entry_updated
. Кроме того, timestamp_type
сообщит вам, есть ли запись для вставки (например, "1" ), обновление (например, "2" ) и все, что вы можете добавить, например "удаление".
Я хотел бы знать, что вы думаете об этом дизайне. Меня больше всего интересуют лучшие практики, что работает и масштабируется с течением времени. Ссылки, ссылки, записи в блогах более чем приветствуются. Я знаю, по крайней мере, один патент (в ожидании), который пытается решить эту проблему, но, похоже, детали не являются общедоступными в настоящее время.
Cheers, Эдуардо