Архив метки: TPS

Драйвер TPS — прикольно!!!

Все таки решил до конца разобраться с работой процесса транзакции на TPS-драйвере.

Сначала некоторые уточнения и дополнения к предыдущим моим письмам по этой теме.

Во время выполнения оператора COMMIT() физическая запись данных в файлы производится поочередно в порядке, обратном порядку их задания в операторе LOGOUT().

Все это происходит в четыре этапа:

Создается TCF-файл и в него записывается информация о таблицах, участвующих в транзакции. Данные, накопленные в транзакционном буфере, записываются во ВСЕ таблицы в резервные(временные) страницы. Некоторые особенности этих страниц будут описаны ниже. Происходит модификация TCF-файла. В чем она заключается — не разбирался, но это — единственная модификация TCF-файла в рамках транзакции. Очевидно, что при этом записывается информация об окончании этапа N2.
Записи из резервных страниц во ВСЕХ таблицах переписываются в нормальные(постоянные) страницы. Резервные страницы при этом не удаляются. Это произойдет лишь во время закрытия таблиц оператором CLOSE(). Читать далее

TopSpeed TPS файл

                       О С Н О В Н О Й   T P S - Ф А Й Л

                             ФИЗИЧЕСКАЯ ОРГАНИЗАЦИЯ

                                    Заголовок

      (+0)       (+4)          (+6)           (+0Ah)          (+0Eh)
  00 00 00 00    00 00      00 05 00 00     00 05 00 00     74 4F 70 53
 UNSIGNED LONG   USHORT    UNSIGNED LONG   UNSIGNED LONG   UNSIGNED LONG
   Смещение      Размер     Длина файла     Длина файла     Метка файла
  заголовка    заголовка                                      TOPSPEED

  (+12h)      (+14h)          (+18h)                (+1Ch)
  00 00     00 00 00 06     07 00 00 00           00 00 00 00
  SHORT    UNSIGNED LONG   UNSIGNED LONG         UNSIGNED LONG
   Нули      Последний   Счетчик изменений     Верхняя управляющая
   (?)         номер           файла        страница (адрес минус 200h,
                                                деленный на 100h)

  Далее следуют 2 массива длиной (длина_заголовка-20h)/2 четырехбайтовых
чисел (ниже порядок байт перевернут):

Читать далее