Пишу новую СУБД.
8)
xblogs - остается в силе и нужна для внутреннего представления данных,
а вот файловая организация в xblogs никак не решена, поэтому предлагаю
сам себе и тем кто уже оценил xml+sql следующее решение.
Основой организации файлов является то, что весомая часть информации
должна храниться не в файлах ! а в именах файлов. Имена в linux и
windows могут содержать до 255 символов, как правило это достаточный
объем для хранения всех параметров записей типа сообщения в форуме,
или темы форума. А то еще в имя может влезть и краткое название.
Насколько я знаю эта тема раскрыта не полно, и значит практически мало
применима. Действительно - неудобно читать файлы, когда их длина
превышает пусть даже 80 символов (стандартная ширина текстового
экрана). Однако я заостряю внимание на том что, в именах можно хранить
массу параметров, которые не нужно выносить во внешний файл.
Приведу пример того какие параметры используются одной из наиболее
популярных досок объявлений, и достаточны ли места в имени файла, тобы
поместить туда целое объявление ?
идем на http://demo.hod.ru (коммерческий продукт стоимостью 200 WMZ)
Тема и категория - не представляют собой сложно описанные элементы.
По сути - это лишь название, длинной не превышающее 80 символов.
Сморим на объявления. Параметры:
Тема, Город, Дата
Замечу что длина темы не превышает 100 байт, а значит для включения в
имя файла только этих параметров - мы можем избавиться от чтения
файлов вообще, и в запасе останется еще столько же.
Пример:
----------
КПК, ноутбуки и многое другое по низким ценам с доставкой!
Москва
02.12.2006
----------
Посмотрим само объявление:
----------
КПК, ноутбуки и многое другое по низким ценам с доставкой!
КПК, ноутбуки и многое другое по низким ценам с доставкой! Ноутбуки КПК LG RoverBook ASUS Fujitsu-Siemens
Продажа, доставка на дом,сервис, ремонт, компьютеры, комплектующие, цифровая техника , оргтехника .www.tehudar.ru, 109-72-43, 8-901-519-72-43 Москва и область. Просто сравните цены!
ТЕХУДАР
Город: Москва
Телефон: 1097243
E-mail: info@tehudar.ru
Объявление добавлено: 02.12.2006, 09:35 MSK
----------
Добавились параметры:
Текст сообщения
Телефон
email
Как можно догадаться, текст не влезет в имя. И не надо.
Зато все остальное влезет.
+ Рейтинг, тип и многое другое.
Текст объявления находится внутри файла, и для чтения сообщения надо
будет прочитать файл, а вот для того чтобы отобразить объявление в
списке категории - делать этого не надо.
Тем самым мы значительно ускоряем процесс чтения данных, всего лишь
прочитав список файлов.
Теперь о составе параметров в имени. Раз мы хоти создать СУБД, значит
у нас не должно быть четкой стурктуры. За структуром писатель раздела
должен следить сам, как и за размером.
Тогда мы получаем возможность работать с объявлениями, каталогами
ссылок, форумами и т.п.
Давайте посмотрим на процесс создания записи.
Допустим это функция
CreateFile ( "раздел", date, title, email, fio);
По сути нам эта функция ничего не дает и только мешает.
Зная раздел и все параметры мы можем сами составить имя по внутреннему
правилу раздела.
Правила составления имен для разделов.
Опять же нам не зачем отслеживать правила, у раздела есть лишь
рекомендованный интаксис, как у xblogs набор параметров, лишь
определен в коментариях скприпта, и нигде больше, тем более эта
информация никак не проверяется.
Определение рекомендации примерно такое:
дата8_заголовок100_рейтинг2_мыло20_город10_автор20
Для того чтобы избежать проблемм с кодировками и спец символами, надо
все параметры конвертировать в нужный вид, а так же уметь делать это
обратно
И обязательно необходимо разделение параметров. Это может выполнить
како-то один символ, запрещенный в параметрах, пусть символ '-'
Так нужен ли код СУБД которая будет создавать разделы, проверять
корректность, строить имена файлов. Поверьте- это ни к чему, если
строго придерживаться рекомендаций.
Однако если нам взглянуть на интексис SQL..
get folderlist at 'siteRating'
(получаем список всей иерархии каталогов в хэш)
get filelist at 'siteRating\avto_moto\kuplu_mashinu'
получаем массив массивов со всеми параметрами файлов в этой
директории.