Diary Spirit @дневники: изнутри

четверг, 27 октября 2005

Администратор

10:50 И еще немного о ленте избранного
Кому интересно - формирование ленты происходит примерно так.



Идет обращение к базе - выбирается группа тех, кто есть в избранном у данного пользователя (с проверкой права на доступ к дневнику). Причем проверка шарашит по всей базе пользователей.

Затем у обнаруженных избранных выбираются записи, сделанные после даты Х. При этом проверяется еще и право доступа к кажой конкретной записи.

Наконец все это разбивается на страницы (учитывая выбранное число вывода для конкретного юзера).



В часы пик сервер, мягко скажем, не радуется.



Если у кого-то есть внятные мысли по поводу оптимизации запросов - будем рады выслушать.
URL

27.10.2005 в 14:23

27.10.2005 в 14:23
DoC

Не думаю, что пользователи через каждые пять минут правят свои записи - по одной строчке за раз? ;-)

В общем, считаю этот процент приемлемым, а без проверки практикой все равно однозначно сказать нельзя.
URL

27.10.2005 в 14:24

27.10.2005 в 14:24
как я понимаю, выборка записей из одной таблицы, без объединений, много ресурсов не съест?

и сдаётся мне, что проверка доступа требует объединения таблиц



забивши на комменты мы должны получить

SELECT

*

FROM

posts

WHERE

poster_id IN (список_избранных) AND

post_id NOT IN (список забаненных постов) AND

post_date >= какая_то_дата

LIMIT начало, количество_постов_на_странице



причём список_избранных тоже берётся запросом из одной таблицы и список_забаненных_постов тоже берётся из одной таблицы



или нет?
URL

27.10.2005 в 14:28

27.10.2005 в 14:28
Topu

Иногда (лично я) так и делаю =(

А проверка практикой может стоить информации (( Масштабы не те.
URL

27.10.2005 в 14:28

27.10.2005 в 14:28
Loss, говорят, что у нас так и есть, только в базе записей 8 Гб это выполняется все равно долго.

URL

27.10.2005 в 14:32

27.10.2005 в 14:32
нос а можно explain? для примера?

ну пожааааалуйста
URL

27.10.2005 в 15:41

27.10.2005 в 15:41
all

вот вы всё гадаете на кофейной гуще, а структуру базы так и не предоставили



админы

API клиента должен быть открытым - потому что концепция безопасности-через-незнание себя не оправдывает, вспомните элкомсофт :)



наверняка вы уже попробовали поднять mysql-кластер, ну и как результат ? какой , кстати, сейчас размер базы ?
URL

27.10.2005 в 16:32

27.10.2005 в 16:32
Loss, все нормально с explain. Ключи расставлены правильно. Вот только многие не понимают, что увеличивая кол-во ключей, усложняем вставки и апдейты - а при такой большой базе (ну хотя бы таблице постов в 8Г данных и 1Г индексов) да 10% update insert delete и т.п. от общего кол-ва select - уже неподъемная вещь для RAID-0 на 3 SCSI дисках (с нормальным контроллером) и на 2 серверах таких с поднятой репликацией (которая однопотоковая, кстати, без конкуретных обновлений).



PS: всем тем, кто думает, что у нас full scan по таблице хоть в одном запросе на этом сайте хочу сказать. Мы знаем, что такое индексы, нормальные формы и т.д.
URL

27.10.2005 в 16:37

27.10.2005 в 16:37
DoC А проверка практикой может стоить информации (( Масштабы не те.



Для этого когда-то была тестовая версия дневников. Вот на ней и тестить.
URL

27.10.2005 в 16:46

27.10.2005 в 16:46
rushills *шепотом* А так ли нужно смотреть избранных своих избранных и других авторов? может эту функцию нах - и проверку можно не производить?..говорила уже - плохая идея, наверно...
URL

27.10.2005 в 17:05

27.10.2005 в 17:05
Merrybran Brandybuck, я не готов от неё отказываться - так проще нормальные, а не случайные дневники искать. ;)



Dr0n, верю. Потому и надо менять клиентскую сторону - назрело.
URL

27.10.2005 в 17:16

27.10.2005 в 17:16
Насколько я понимаю лента избранного генерируется ЗАНОВО (?!) не только при нажатии кнопки "Избранное", но и при переходе по самой ленте на ее следующую страницу.

Насколько это необходимо? (это весьма большое коиство лишних запросов, с учетом повторого считывания информации по каждой записи). Достаточно генерировать ленту (требуемой глубины) в момент запроса и работать уже с ней в дальнейшем, а не перегенерировать заново при перемещении по ней.

URL

27.10.2005 в 17:18

27.10.2005 в 17:18
Завулон, а где прикажете хранить эту ленту между переходами? Для 3-х тысяч пользователей...
URL

27.10.2005 в 17:40

27.10.2005 в 17:40
rushills Но ведь можно залезть в профиль твоего ПЧ и почитать его избранных по отдельности, а не скопом:). Разве нет? Это, конечно, гораздо более муторно, - но разве не менее напряжно, чем таким же способом читать собственное избранное? :)
URL

27.10.2005 в 17:46

27.10.2005 в 17:46
Дорогие наши пользователи, лично я, как имеющий отношение к разработке сайта, по мере своих возможностей читаю все, что вы пишите.

Не хочу обидеть, но большинство предложений уже не новы, либо описание идеи не является доступным для понимания.

Но т.к. код является закрытым, то и придумывать выход из положения прийдется нам самим. Мы не готовы открыть код в данный момент. Радует то, что несколько человек здесь думают примерно также как и мы, что подтверждает их компетентность в вопросах проектирования и программирования, не смотря на отсутствие у них даже примерной схемы работы сайта. Я уверен, что есть у нас конкретные человеки, у которых и не такие задачи за плечами :-)

Мы все это знаем, помним и стараемся. Если кому-то будет интересно поломать голову над разными задачками типа нашей - сделаем список рассылки и разошлем кому считаем нужно приглашение. Там и увидимся по существу.
URL

27.10.2005 в 17:55

27.10.2005 в 17:55
Merrybran Brandybuck, это неудобно мне. Потому я не хотел бы отсутствия такой возможности.



И именно потому что я знаю что такое проектирование и программирование я считаю что оптимизацией серверной стороны программистам дневников проблему совсем решить не удасться.



Нас еще ждет ограничение до 2-х, а затем и одного дня, я думаю. Вопрос времени и популярности. А так как популярность должна расти - иначе не будет ни рекламы ни рейтингов, падать все начнет все равно и не по техническим причинам (это бывает у всех), а из-за просчетов архитектурных.



Но я желаю всем разработчикам удачи, поскольку она им пригодится.



Не делайте сложных запросов пожалуйста - почти все можно сделать проще.
URL

27.10.2005 в 18:09

27.10.2005 в 18:09
Вообще, есть мысль, что настоящая база типа того же postgress'а может дать ЛУЧШИЙ результат. В частности, некоторые сортировки mysql совершенно отвратно оптимизирует
URL

27.10.2005 в 18:14

27.10.2005 в 18:14
tarkhil например? Какие именно сортировки и если можно - ссылки на бенчмарки.
URL

27.10.2005 в 18:31

27.10.2005 в 18:31
Почитай доку..
URL

27.10.2005 в 18:33

27.10.2005 в 18:33
Не сожрал сервер цитату из документации
URL

27.10.2005 в 19:22

27.10.2005 в 19:22
... вопреки всему ЖЖ замечательно работает на mysql ...
URL

27.10.2005 в 19:32

27.10.2005 в 19:32
Оранжевый Удав : а сколько там серверов?
URL

27.10.2005 в 20:51

27.10.2005 в 20:51
Хм. А из-под клиента планируется сделать доступной возможность чтения чужого Избранного? Если нет, то, может, действительно попросту отключить ее здесь?
URL

27.10.2005 в 20:56

27.10.2005 в 20:56
tarkhil ~100
URL

28.10.2005 в 00:16

28.10.2005 в 00:16
Позвольте вставить свои пять копеек. Я - среднестатистический чайник. Зато примерный. В Избранное тыкаю от силы дважды в день. Не нагружаю Ваш сервер даже такими мелочами, как эпиграф и аватар - у меня их нет. Зато у меня есть черепаший Инет. И если не будет френд-ленты - мне придет на дайри капец. Поверьте, я не исключение, пострадают очень многие.

А вот от чего не пострадает никто:

1. Убрать показ избранного избранных - хорошие дневники проще всего искать по качественным комментариям в хороших же дневниках. Особо интересующиеся жмут на ники в профилях.

2. Френд-ленту строго ограничить по времени, показывая только записи текущего и предыдущего дней. Особенно интересующиеся жмут нужный дневник и читают хоть до истоков.

3. Сделайте дневники платными. Если Вас это коробит - сделайте платными для тех, кто согласен платить по собственной инициативе. Я буду в числе первых.
URL

28.10.2005 в 02:52

28.10.2005 в 02:52
Scorpio А как же те, кому и на Инет едва хватает? Какая оплата. Здесь есть и те, кому 12 лет, и за таких крокодители могут и не заплатить, тип прогорит и остынет.

Не, деньги - не выход! :ass:
URL

28.10.2005 в 03:17

28.10.2005 в 03:17
Внятная мысль.




По поводу запросов.




Заменить ссылку "Избранное" двумя ссылками:



Избранное(новое)

Избранное(всё)





Первая ссылка отображает Избранное с момента ПОСЛЕДНЕГО просмотра Избранного.



Вторая ссылка отображает всё избранное на х(которое указывается в настройках) дней назад.



То есть, вторая ссылка - это текущая ссылка "Избранное".

А вот над первой придётся поработать =)

URL

28.10.2005 в 03:26

28.10.2005 в 03:26
Neo[RAGE] Полностью согласна и поддерживаю!
URL

28.10.2005 в 04:03

28.10.2005 в 04:03
rushills есть такая наука защита информации :) (ну или тапа того) так вот один из методов защиты это сокрытие структуры и способов доступа к ней (ну как например грабить банк если не знаешь где у него вход и где расположено в нем хранилище)
URL

28.10.2005 в 04:05

28.10.2005 в 04:05
gluker, плохой способ как единственный ;), если честно признаться. К тому же я, как и другие, не просил структуру БД, но публичный API - набор функций какого угодно вида (POST-handlers, Web-services, etc), которые можно дернуть для результата.
URL

28.10.2005 в 04:05

28.10.2005 в 04:05
Караидель: Хотелось бы всё-таки услышать авторитетное мнение на предмет таблиц с индексами постов за последнюю неделю...



возможно что-то подобное и будет но в несколько другом виде
URL