У меня есть сайт объявлений, на котором есть реклама и комментарии. Поскольку трафик вырос до значительного объема, а количество объявлений в системе достигло 1,5 миллиона, из которых почти 250 000 являются активными.
Теперь проблема в том, что система была спроектирована так, чтобы быть очень динамичной с точки зрения категории объявлений и свойств, которые каждый вид рекламы может иметь в зависимости от категории или подкатегории, поэтому для показа рекламы мне нужно объединить почти 4-5 таблиц
Чтобы решить эту проблему, я создал плоскую таблицу (концептуально то, что я называю таблицей публикации) и заполняю эту таблицу заданием SQL каждые 3-4 минуты. Теперь для веб-запросов я запрашиваю эту таблицу, чтобы показать списки объявлений или детали.
Я также ввел кэш данных длительностью около 1 минуты для каждой уникальной комбинации URL для списков объявлений и для каждой детали объявления.
Я делаю то же самое для комментариев к объявлениям (т. Е. Кеширую комментарии и поскольку комментарии являются иерархическими, я также использовал для них модель публикации плоских таблиц, снова заполненную заданием SQL)
Мои вопросы следующие:
- Является ли издательская модель с заданием на задание sql хорошим подходом к дизайну?
- Какой подход вы бы выбрали или люди выбрали для подобных сценариев?
- Как веб-сайт, такой как Facebook, отображает комментарии в реальном времени с миллионами пользователей, следя за тем, чтобы они не теряли данные комментариев, только сохраняя их в кэше и выполняя пакетные обновления?