|
|
|
Лента новостей пользователя на сайте.
|
|||
|---|---|---|---|
|
#18+
Добрый день! Подскажите как лучше на сайте организовать ленту новостей пользователя. В ленте необходимо показывать следующие события: - добавление в друзья - создание записей друзьями (посты, вопросы) - комментарий моей записи - ответ на мой комментарий - комментарий записей, добавленных в избранное Варианты: 1. Создать таблицу UserEvent с полями: - id_user - идентификатор пользователя, для которого выводить событие - actionType - тип действия - id_rec - ссылка на запись-источник события - createDate - дата события - id_author - автор события В эту таблицу писать все события для каждого пользователя. Т.е. создал юзер пост, для каждого друга создалась запись в этой таблице. Выборку по таблице осуществлять с фильтром по полю id_user. Минусы: - нагрузка при создании (для каждого друга создавать записи в UserEvent. если будет 2000 друзей, то при каждом создании поста создавать 2000 записей в UserEvent?) - быстрый рост размера БД Плюс: - простая выборка, более быстрая 2. Создать таблицу UserEvent с полями: - actionType - тип действия - id_rec - ссылка на запись-источник события - createDate - дата события - id_author - автор события В таблице создавать одну запись на одно событие. Выборку осуществлять по двум таблицам UserEvent + таблица с данными о друзьях и данными об избранных постах и вопросах. Минусы: - более сложная выборка Плюс: - БД относительно не быстро растет - нет нагрузки при создании записи ( не нужно создавать для каждого юзера запись в таблице UserEvent) Посоветуйте, как оптимальнее с точки зрения производительности? Может есть какой-нибудь еще вариант? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 08:12 |
|
||
|
Лента новостей пользователя на сайте.
|
|||
|---|---|---|---|
|
#18+
Добавлю СУБД MS SQL 2008 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 08:15 |
|
||
|
Лента новостей пользователя на сайте.
|
|||
|---|---|---|---|
|
#18+
В варианте 2 не совсем понятно, зачем вообще таблица UserEvent - она просто копирует часть полей из оригинальной записи (на которую ссылка ID_rec). И автор, и время создания, и тип там ведь наверняка есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 10:32 |
|
||
|
Лента новостей пользователя на сайте.
|
|||
|---|---|---|---|
|
#18+
Кот МатроскинВ варианте 2 не совсем понятно, зачем вообще таблица UserEvent Это не самое забавное. В этом варианте, когда пользователь отписывается от получения событий или разрывает дружбу, из его ленты новостей исчезают старые записи, как будто их никогда и не было. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 10:38 |
|
||
|
Лента новостей пользователя на сайте.
|
|||
|---|---|---|---|
|
#18+
Кот Матроскин, Она нужна лишь для того, чтобы выводить в хронологическом порядке события (использовать PK с типом int) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 10:58 |
|
||
|
Лента новостей пользователя на сайте.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Так оно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 10:59 |
|
||
|
Лента новостей пользователя на сайте.
|
|||
|---|---|---|---|
|
#18+
Также нужно отслеживать комментирование собственных записей. Думаю, как вот такой запрос будет отрабатывать: Код: sql 1. 2. 3. 4. 5. 6. Т.е. вроде запрос по двум таблицам, но при этом, также необходимо выбрать записи, которых нет userLink… ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2012, 15:44 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37928217&tid=1541573]: |
0ms |
get settings: |
8ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
138ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 209ms |
| total: | 408ms |

| 0 / 0 |
