Сразу скажу, что задача написать простой «блог про себя», но мне нравится смотреть в сторону высокой нагрузки и производительности, поэтому затупил на первом этапе обдумывая стуктуры базы. Текстовой базы на файлах.
База хранится как массивы, в serialize формате, в файле с расширением .php (ниже узнаете зачем). Для чтения/записи написал две простые функции:
function array_get_contents($file) {
if (file_exists($file)) {
return unserialize(substr(file_get_contents($file), strlen('<?php exit; ?>')));
}
return NULL;
}
function array_put_contents($file, $data) {
return file_put_contents($file, '<?php exit; ?>'.serialize($data), LOCK_EX);
}
А теперь главное: посоветуйте, как лучше организовать структуру базы? Задачи: регистрация пользователей, добавление записей, к ним могут оставлять комментарии, имеется облако тэгов.
И сделать это хочу с учетом, что есть «мистический лимит» на количество файлов в одной директории (32000) (а есть ли на самом деле?), и что размер одного файла базы не должен превышать 2мб, т.к. боюсь, что постоянные записи/чтения файла чуть больших размеров php-скриптом не пойдут на пользу производительности.
Самое простое, что можно сделать, забив на лимиты:
array_put_contents(
'data/notes/list.php', // список всех записок, простое ID
array(
0
)
);
array_put_contents(
'data/notes/0.php', // записка с ID 0
array(
'topic' => 'заголовок',
'notes' => 'содержание',
)
);
P.S. В сторону SQL смотреть не буду - те же файлы, только в профиль. Впрочем вопрос не об этом, а о том, как стуктуировать базу, чтобы любой ее элемент можно было легко (с точки зрения производительности) достать, и она была максимум безлимитна. Как хранить файлы и т.д...