Базы данных

Как с помощью баз данных можно было бы предотвратить проблему 2000 года


Проблема 2000 года (Y2K) явилась следствием ошибок программного обеспечения, а ее решение стоило правительствам и деловым кругам сотен миллиардов долларов. Предсказываемые катастрофы не произошли, но только благодаря тому, что значительные усилия и денежные средства были затрачены на их предотвращение.

Именно зависимость программ данных привела к тому, что 1 января 2000 года стало датой, вызывающей проблемы. Большая часть вызванных Y2K ошибок происходила вследствие того, что для хранения значения года использовалось двузначное число, а для расчета значения интервала времени, мехзду двумя событиями, применялась операция вычитания значения года начала периода из значения года конца периода. Ниже приведен типичный фрагмент кода такого приложения.

startYear: digit(2);

endYear: digit(2);

read (startYear, endYear) from file;

age = endYear – startYear;

Когда начальная и конечные даты оказываются в разных столетиях1, расчет значения интервала времени становится ошибочным.

В контексте проблемы У2К в приложении базы данных, выполняющем расчет возраста путем вычитания конечной и начальной дат, значения переменных года можно легко трактовать как переменные типа integer (целое). Это показано в следующем фрагменте кода:

startYear: integer;

endYear: integer;

read (startYear, endYear) from file;

age = endYear – startYear;

Когда база данных использует четырехзначные числа (например, 1999 и 2000) для начальной и конечной даты вместо двухзначных (99 и 00), расчет интервала времени будет корректным в смысле проблемы Y2K. Следовательно, для разрешения проблемы Y2K можно было бы просто ограничиться изменением физического представления данных поля года в базе данных до размера 4-х цифр и модифицировать значения существующих дат, добавив соответственно “19” или “20”. Ясно, что приложения, содержащие ошибку Y2K, не обладают свойством независимости программ и данных.

Комментарии закрыты