Администратор
Кому интересно - формирование ленты происходит примерно так.
Идет обращение к базе - выбирается группа тех, кто есть в избранном у данного пользователя (с проверкой права на доступ к дневнику). Причем проверка шарашит по всей базе пользователей.
Затем у обнаруженных избранных выбираются записи, сделанные после даты Х. При этом проверяется еще и право доступа к кажой конкретной записи.
Наконец все это разбивается на страницы (учитывая выбранное число вывода для конкретного юзера).
В часы пик сервер, мягко скажем, не радуется.
Если у кого-то есть внятные мысли по поводу оптимизации запросов - будем рады выслушать.
Идет обращение к базе - выбирается группа тех, кто есть в избранном у данного пользователя (с проверкой права на доступ к дневнику). Причем проверка шарашит по всей базе пользователей.
Затем у обнаруженных избранных выбираются записи, сделанные после даты Х. При этом проверяется еще и право доступа к кажой конкретной записи.
Наконец все это разбивается на страницы (учитывая выбранное число вывода для конкретного юзера).
В часы пик сервер, мягко скажем, не радуется.
Если у кого-то есть внятные мысли по поводу оптимизации запросов - будем рады выслушать.
27.10.2005 в 14:23
Не думаю, что пользователи через каждые пять минут правят свои записи - по одной строчке за раз?
В общем, считаю этот процент приемлемым, а без проверки практикой все равно однозначно сказать нельзя.
27.10.2005 в 14:24
и сдаётся мне, что проверка доступа требует объединения таблиц
забивши на комменты мы должны получить
SELECT
*
FROM
posts
WHERE
poster_id IN (список_избранных) AND
post_id NOT IN (список забаненных постов) AND
post_date >= какая_то_дата
LIMIT начало, количество_постов_на_странице
причём список_избранных тоже берётся запросом из одной таблицы и список_забаненных_постов тоже берётся из одной таблицы
или нет?
27.10.2005 в 14:28
Иногда (лично я) так и делаю =(
А проверка практикой может стоить информации (( Масштабы не те.
27.10.2005 в 14:28
27.10.2005 в 14:32
ну пожааааалуйста
27.10.2005 в 15:41
вот вы всё гадаете на кофейной гуще, а структуру базы так и не предоставили
админы
API клиента должен быть открытым - потому что концепция безопасности-через-незнание себя не оправдывает, вспомните элкомсофт
наверняка вы уже попробовали поднять mysql-кластер, ну и как результат ? какой , кстати, сейчас размер базы ?
27.10.2005 в 16:32
PS: всем тем, кто думает, что у нас full scan по таблице хоть в одном запросе на этом сайте хочу сказать. Мы знаем, что такое индексы, нормальные формы и т.д.
27.10.2005 в 16:37
Для этого когда-то была тестовая версия дневников. Вот на ней и тестить.
27.10.2005 в 16:46
27.10.2005 в 17:05
Dr0n, верю. Потому и надо менять клиентскую сторону - назрело.
27.10.2005 в 17:16
Насколько это необходимо? (это весьма большое коиство лишних запросов, с учетом повторого считывания информации по каждой записи). Достаточно генерировать ленту (требуемой глубины) в момент запроса и работать уже с ней в дальнейшем, а не перегенерировать заново при перемещении по ней.
27.10.2005 в 17:18
27.10.2005 в 17:40
27.10.2005 в 17:46
Не хочу обидеть, но большинство предложений уже не новы, либо описание идеи не является доступным для понимания.
Но т.к. код является закрытым, то и придумывать выход из положения прийдется нам самим. Мы не готовы открыть код в данный момент. Радует то, что несколько человек здесь думают примерно также как и мы, что подтверждает их компетентность в вопросах проектирования и программирования, не смотря на отсутствие у них даже примерной схемы работы сайта. Я уверен, что есть у нас конкретные человеки, у которых и не такие задачи за плечами :-)
Мы все это знаем, помним и стараемся. Если кому-то будет интересно поломать голову над разными задачками типа нашей - сделаем список рассылки и разошлем кому считаем нужно приглашение. Там и увидимся по существу.
27.10.2005 в 17:55
И именно потому что я знаю что такое проектирование и программирование я считаю что оптимизацией серверной стороны программистам дневников проблему совсем решить не удасться.
Нас еще ждет ограничение до 2-х, а затем и одного дня, я думаю. Вопрос времени и популярности. А так как популярность должна расти - иначе не будет ни рекламы ни рейтингов, падать все начнет все равно и не по техническим причинам (это бывает у всех), а из-за просчетов архитектурных.
Но я желаю всем разработчикам удачи, поскольку она им пригодится.
Не делайте сложных запросов пожалуйста - почти все можно сделать проще.
27.10.2005 в 18:09
27.10.2005 в 18:14
27.10.2005 в 18:31
27.10.2005 в 18:33
27.10.2005 в 19:22
27.10.2005 в 19:32
27.10.2005 в 20:51
27.10.2005 в 20:56
28.10.2005 в 00:16
А вот от чего не пострадает никто:
1. Убрать показ избранного избранных - хорошие дневники проще всего искать по качественным комментариям в хороших же дневниках. Особо интересующиеся жмут на ники в профилях.
2. Френд-ленту строго ограничить по времени, показывая только записи текущего и предыдущего дней. Особенно интересующиеся жмут нужный дневник и читают хоть до истоков.
3. Сделайте дневники платными. Если Вас это коробит - сделайте платными для тех, кто согласен платить по собственной инициативе. Я буду в числе первых.
28.10.2005 в 02:52
Не, деньги - не выход!
28.10.2005 в 03:17
По поводу запросов.
Заменить ссылку "Избранное" двумя ссылками:
Избранное(новое)
Избранное(всё)
Первая ссылка отображает Избранное с момента ПОСЛЕДНЕГО просмотра Избранного.
Вторая ссылка отображает всё избранное на х(которое указывается в настройках) дней назад.
То есть, вторая ссылка - это текущая ссылка "Избранное".
А вот над первой придётся поработать =)
28.10.2005 в 03:26
28.10.2005 в 04:03
28.10.2005 в 04:05
28.10.2005 в 04:05
возможно что-то подобное и будет но в несколько другом виде