База данных для запуска микроблогов
-
11-09-2019 - |
Вопрос
Я создам веб-сервис микроблогов (для школы, так что не обвиняйте меня в отсутствии новой идеи), и я беспокоюсь, что база данных может часто перегружаться (пользователь может подписываться на других пользователей или даже помечать, поэтому я предполагаю, что SELECT
будет тяжелым - проверьте 20 последних сообщений, которые содержат все теги наблюдения и пользователя).
Моя идея состоит в том, чтобы создать другую таблицу и сохранить в ней только StatusID и userId (кто должен получить сообщение).Опасность этого заключается в том, что если у какого-то тега или пользователя много подписчиков, то будет много записей с этим идентификатором статуса.Итак, это хорошая идея?Или, может быть, лучше использовать отношение M2M?(один статус -> много получателей)
Решение
Я думаю, что большинство баз данных могут легко обрабатывать большие наборы записей.Ответственность за его предварительную форму лежит на вашем дизайне с правильной настройкой индексов.Если вы создадите правильные индексы, предложения select должны работать действительно хорошо.
Другие советы
Я бы пошел с Пользователи таблица, таблица для установления отношений m2m между пользователями и Сообщения таблица.
Затем вы можете выполнить один выбор, чтобы найти всех пользователей, за которыми следит пользователь, а затем второй выберите в чтобы получить все интересующие сообщения (сортируя и ограничивая результаты соответствующим образом).Распространить это на пометку должно быть довольно просто.
Такой дизайн должен подходить для большого количества пользователей и сообщений при условии, что вы индексируете правильные столбцы.Если вы приобрели massive, то вы также могли бы запускать таблицы users и messages на разных серверах или иметь копии только для чтения.Я бы даже не стал беспокоиться об этом в данный момент - вам нужно быть огромным.
При внедрении Collabinate (http://www.collabinate.com), основанный на сервисе движок для ведения микроблогов и общих потоков активности, я использовал базу данных graph.Тот факт, что люди создают посты и подписываются на других людей, согласуется с графической структурой.При правильных взаимосвязях и алгоритмах это может быть очень эффективным и производительным решением.