Что лучше всего подходит для представления временных интервалов в хранилище данных?

В частности, я имею дело с медленно изменяющимся измерением типа 2 , и мне нужно представить временной интервал, в течение которого была активна конкретная запись, т.е. для каждой записи у меня есть StartDate и EndDate . Мой вопрос заключается в том, использовать ли закрытый ( [StartDate, EndDate] ) или полуоткрытый ( [StartDate, EndDate) ) интервал для представления этого, т.е. включать ли последнюю дату в интервал или нет. В качестве конкретного примера предположим, что запись 1 была активна с 1 по 5 день, а с 6 дня и далее стала активной запись 2. Сделать EndDate для записи 1 равной 5 или 6?

Недавно я пришел к мысли, согласно которой полуоткрытые интервалы лучше всего основаны, среди прочего, на Дейкстра: Почему нумерация должна начинаться с ноль , а также соглашения о нарезке массива и функции range () в Python. Применяя это в контексте хранилища данных, я бы увидел следующие преимущества соглашения о полуоткрытом интервале:

  • EndDate-StartDate дает время, когда запись была активна
  • Проверка: StartDate следующей записи будет равняться EndDate предыдущей записи, которую легко проверить.
  • Future Proofing: если я позже решу изменить свою детализацию с ежедневной на что-то короче, чем дата переключения, остается точной. Если я использую закрытый интервал и сохраняю EndDate с отметкой о полночь, мне придется скорректировать эти записи, чтобы учесть это.

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

Заранее спасибо за любые идеи или комментарии.

9
задан snth 24 November 2010 в 08:57
поделиться