Начальная страница

Николай Жарких (Киев)

Персональный сайт

?

Таблицы

Важных таблиц в Смереке всего две – Вершины и Атрибуты. Еще две таблицы используются для кэширования страниц (см. раздел «Смерека»), И еще одна – для организации внешнего перенаправления.

Вершины (nodes)

Таблица состоит из следующих полей:

id – 4-байтовое целое число без знака. Это первичный ключ таблицы.

parent – 4-байтовое целое число без знака. Это указатель на родительскую вершину данной вершины.

seqpos – 4-байтовое целое число без знака. Задает последовательность вершин с одинаковой иерархической позицией (равных вершин, sibling nodes).

class – 4-байтовое целое число без знака. Задает класс вершины, фактически является указателем на вершину метакласса данной вершины. См. раздел Классы вершин.

accesslevel – 1-байтовое целое число без знака. Задает уровень доступа для вершины. См. раздел Права доступа.

link – 4-байтовое целое число без знака. Содержит ссылку на другую вершину в дереве, по умолчанию 0 – нет ссылки.

zone – 4-байтовое целое число без знака. Определяет зону администрирования, к которой принадлежит вершина. См. раздел Права доступа.

symbname – строка переменной длины, до 32 символов. Содержит символическое имя вершины для вычисления ее URL.

lastupdate – дата последней модификации вершины.

Вершины Смереки образуют дерево, организованное с помощью полей parent и seqpos. Это дерево в простейшем случае непосредственно отражается в дереве документов сайта. Например, если корневая вершина сайта example.com имеет подчиненную вершину Shop, а эта последняя – подчиненную вершину Mercedes, то для покупки Мерседеса надо ввести example.com/Shop/Mercedes.html.

Атрибуты (attrs)

Смерека хранит все атрибуты в одной таблице. Таблица состоит из следующих полей:

id – 4-байтовое целое число без знака. Это первичный ключ таблицы.

nodeid – 4-байтовое целое число без знака. Указатель на вершину, к которой принадлежит данный атрибут. Должен содержать значения какого первичного ключа из таблицы вершин.

name – строка переменной длины, до 32 символов. Обозначает внутреннее имя данного атрибута. Смерека использует это имя для идентификации атрибута, но само это имя на веб-страницах обычно не появляется.

datatype – 1-байтовое целое число, которое определяет тип данных атрибута. Допустимые значения:

1 – целое число (со знаком)

2 – целое число (без знака)

3 – ссылка на вершину

4 – строка

5 – текст (до 16 Мб)

6 – календарная дата (и время)

7 – файл (в том числе изображение)

8 – вещественное число (с плавающей точкой)

lang – поле на 2 символа, которое определяет языковую версию атрибута; языково-независимые атрибуты содержат здесь NULL.

dwvalue – 4-байтовое целое число без знака (double word). Способ использования определяется типом данных атрибута:

2 – целое число (без знака) – значение атрибута;

3 – ссылка на вершину – указатель на другую вершину дерева Смереки. Итак, допустимыми являются значения 0 или ид существующей вершины. Это позволяет контролировать целостность ссылок. Когда вершина удаляется безвозвратно, все указатели на нее также удаляются, каким бы вершинам они не принадлежали.

dblvalue – 8-байтовое число с плавающей точкой. Используется для атрибутов типа «Действительное число».

datevalue – 8-байтовое поле даты. Используется для атрибутов типа «Календарная дата».

strvalue – строка переменной длины, до 512 символов. Способ использования определяется типом данных атрибута:

4 – строка – значение атрибута;

7 – файл (в том числе изображения) – список атрибутов файла в формате name = "value", разделенных пробелами. См. далее «Файловые атрибуты».

txtvalue – текстовое поле размером до 16 мегабайт, которое является значением атрибута типа текст.

Файловые атрибуты

Атрибут типа файл – пример структурного атрибута, значение которого – не просто число или строка, а коллекция примитивных типов данных. Атрибуты такого типа описывают внешние файлы, в том числе изображения. Но они не содержат самих данных, которые хранятся как отдельные файлы в серверной ОС. Смерека сохраняет все элементы файлового атрибута в виде строки.

fname – Строка, содержащая имя файла. Если файл не подлежит кэшированию, fname содержит полный путь и имя файла на сервере. Если файл только кэшируется на сервере, а постоянно сохраняется в другом месте (хранилище), то fname содержит полный путь и имя файла в хранилище. На сервере кэшированные файлы находятся на определенном фиксированном каталоге.

casheable – логическое поле, которое позволяет кэширование файла. По умолчанию false, файл не кэшируется.