Планирование версии с sql
23.09.2009Помимо еще не закрытого туду листа, потихоньку думаю про версию с бд. С одной стороны бд упрощает поиск данных - появляется возможность иметь большой объем данных, и совершать над ними операции. С другой стороны бд штука весьма неторопливая. Я вот сейчас посмотрел генерация страницы 0.03 секунды в блоголёте, а в бд только один запрос столько идет. Ну ладно, будет чуть тормознутие работать, зато типа почти гарантирована устойчивость (если сам бд сервер не ляжет), а у меня уже случалось, что mysql ложился и соответственно сайты на мускуле тоже лежали.
Собственно я сейчас хочу порассуждать о структуре таблиц и запросах их связующих (почти как в средневековом трактате). Давно я не дергал бд, например думаю про поле даты в посте - делать ли его datetime, что удобно для выборок, а для данных объекта конвертировать в запросе типа следующего
select unix_timestamp(created) as datecreated from posts where...
либо объявить поле в таблице как timestamp - но будут ли подерживвать этот тип данных другие движки, не mysql? Почитал немного доку - ни к какому мнению не пришел. Или взять другой момент - timezone, она есть в блоголёте - устанавливается время в скриптах указанной зоне, и аналогичное есть и в мускуле - следует ли его тоже выставлять? Скорее всего следует, но почему этого я не встречаю в реальных CMS? Кто из нас дурак я не пойму.
Это самые простые вопросы. Порой мне начинает казаться, что затея делать блоголёт еще и на бд нежизнеспособна, в виду элементарного ограничения в структуре данных бд.
Комментарии (22) на запись “Планирование версии с sql”
Оставить комментарий
Очень часто такое с wordpress происходит vds сервер с 512 ram а мускул все равно валится.
Да, у меня именно на vds отваливался mysql - утром только замечал. Было это после ппрогона по каталогам сайта на wp, когда большая нагрузка просто заваливала mysql.
Кстати, заходил по делам на сайт друзей на dreamhost.com - гораздо больше понравилось, чем на моем vds: работает субъективно шшустрее (ftp, ssh), и стоит в два раза дешевле моего vds. Вот теперьи думаю - может прикупить себе еще шаред хостинг? Или может к себе на vds поставить sqlite?
Посмотрел я фрог - кажется я брюзга, но все что написано не мной, мне не нравиться. Дата таам datetime, конвертится при помощи date(mysqlformat, time()), и структура папок как в code igneter, хотел взглянуть на тему - кроме стилей ничего не нашел. Структурабд, как и во многих других случаях калька с wordpress (по мне это нехорошо и не плохо, но скорее плохо, так как демонстрирует отсутствия планирования - посмотрел типа как в wp, и решил сделать лучше, а получилось...).
К бд я приступаю осторожно - вроде как и охота, но не охота быть связанным по рукам и ногам особенностями програмирования в бд. Следует от меня ожидать ряд пространных постов о бд, типа рассуждений вслух, предназначенные исключительно для меня - легче понимать уже когда напишишь. Хотелось бы избежать ошибок планирования - их потом хрен исправишь.
Скорее всего блоголёт с бд будет в комбоверсии - часть данных так и оставлю в файлах, а иммено те данные, которые редко меняются и для работы с ними не требуется выборок бд. Проще сказатьгде треббуется: карта урлов, посты, рубрики и мтки, комментарии. Все остальное спокойно живет в файлах. Можно конечно спросить - а что остается? Остается для файлов много: xmlrpc, админка, классы, настройки, форма комментов, пингер, плагины и настройки к ним, рсс. Сейчас пролистал фалы блоголёта - две трети классов будут по прежнему в файлах. Смысла соватьих в бд нет никакого, хотя можно и вовсе обойтись без файлов - одна таблица для данных, куда классы будут сохранять свои данные вместо файлов - это только даст нагрузку на бд, не давая никких преимуществ.
Как сделать лучше не знаю, главное чтобы было интуитивно понятно что куда вставлять.
С меню как-то запутано, зачем нужно:
[menu]
id = nav
tag = li
и подменю почему-то не выводятся.
А это что за виджет?
submenu = " <div class='widget'>
<h2 class='sidebartitle'>%s</h2>
<ul class='list-page'>"
Не сразу становится понятно за что отвечает
[navilinks]
navi = "<div class='navigation'>%s</div>"
prev = "<span class='previous-entries'>%s</span>"
next = " <span class='next-entries'>%s</span>"
Как-нибудь пометить что это:
;link = "<a href='%1$s'>%2$</a>"
;current = "%2$s"
ссылки для навигации по страницам.
Форму комментирования лучше сделать одним блоком, чтобы можно было изменять расположение элементов и подписей к ним.
Надо будет добавит в туду редактор themeini по полям с комментариями, ну а здесь могу откомментировать:
[menu]
id - нужен для подменю на жаве, если он указан, как в теме по умолчанию, и в админке не стоит галочка "подменю в виджете", то оно будет ввложенным и раскрываться по наведению мышкой, ну аиначе подменю будет в виджете то есть в секциях [widget] [sitebar#] параметр submenu - он появлятся будет только на страницах меню, если оно имеет подменю. Значения в [menu] id и tag нужны жаве скрипту для поиска тегов меню на готовой странице - я не силен в жаве, может как то можно иначе, но я не знаю как найти теги меню на странице. По умолчанию подменю в виджете, и в основном меню подменю не будет.
С формой комментирования тоже не просто - планировался редактор формы, где можно указать, какие поля вклчать, а какие нет, и фора генерировалась бы. ЗЗадумка не реализована и застряла на стадии простой генераци формы, не лучший вариант. Например хотелось бы сделатьформу более управляемой извне - позволить плагинам добавлять свои поля (например капча), какие то поля убирать (сайт), и всякое такое. Не сделано, и неизвестно когда я сделаю.
[navilinks] - долгое время вообще неиспользовалось, а особено next/prev - всего лишь шаблон на две ссылки, когда как запрос был на ссылки на все страницы разом, шаблон на которые был добавлен совсем недавно.
Также планируется изменить внутренний алгоритм построения виджета - для большей части виджетов шапку можно генерировать не в самом виджете - он может возрвращать только контент.
Вообще же говоря меня последнее время удивляет, что блоголёт работает - порой из за обилия багрепортов и запросов на новые функции кажется, что движок только что выпущен...
Меню на яваскрипте не работает. Если убрать "подменю в виджете":
Warning: sprintf() [function.sprintf]: Too few arguments in Z:\home\ee.ru\www\lib\templateclass.php on line 508
Скрипт на страницах появляется, а подменю нет, только <ul></ul>.
ИМХО надо детально проработать систему шаблонов, чтоб потом к ней не возвращаться.
Будет удобнее вставлять в шаблон что-то вроде этого:
$Template->page-navi
$Template->post-rss
$Template->post-comments-rss
$Template->post-next
$Template->post-prev
и прописать шаблоны для этого в theme.ini
навигации по страницам
RSS записи
RSS комментариев к записи
следующий пост
предыдущий пост
В шаблоне на следующую/предыдущую записи должно быть:
$Template->post-next
post-next = "Ранее <a href="next_url">next_title<a>"
$Template->post-prev
post-prev = "| Позже <a href="prev_url">prev_title<a>"
$Template->page-navi
page-navi = "<p>%s</p>", где %s - непосредственно ссылки, для которых уже есть шаблон.
Хорошо, я подумаю как прописатьшаблоны для ссылок - может быть открыть новую секцию в theme.ini, с дргой стороны вообще то гораздо логичнее (и на мой взгляд правильнее) прописать сразу эти ссылки в шаблоне tml, чтобы не перегружать параметрами theme.ini
Сейчас возникли идеи про шаблон комментов - напишу об этом целый пост.
Я выбрал Блоголет именнно за то, что не нужно с БД возиться. А так в топку двиг, я лучше с WP буду морочиться.
Да, кстати. не работает по какой то причине Никс редактор, который втроенный(денвер). Что делать?