Предложения для пользовательской системы уведомления в MySql и PHP

git reset --soft HEAD^ сворачивает ваш коммит, и когда вы набираете git status, он говорит вам, что делать:

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)
9
задан Peter Craig 25 July 2009 в 08:08
поделиться

2 ответа

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

100k записей - это не очень много. Не беспокойтесь о размере, пока вы не достигнете хотя бы 10 миллионов записей. При необходимости заархивируйте их в какой-то момент. Но вы должны сделать некоторые оценки того, как быстро вы создадите 10 миллионов записей. Если это 3 дня, то да, у вас проблема. Если это 3 года, то вы этого не сделаете.

У этой опции, конечно, есть текст уведомления в отдельной таблице.

Это также должно очень хорошо масштабироваться с еще большим количеством сообщений, поскольку вы выбираете непрочитанные сообщения для пользователя (индексируются) и можете присоединиться, чтобы получить текст уведомления (если размер вашей таблицы составляет десятки миллионов записей) или выберите их, а затем отдельно выберите сообщения.

Разделить таблицу (пользователь, уведомление) легко: вы основываете ее на диапазонах пользователей.

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

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

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

13
ответ дан 4 December 2019 в 11:07
поделиться

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

1
ответ дан 4 December 2019 в 11:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: