Мне нужно внедрить специально разработанную службу веб-аналитики для большого количества веб-сайтов. Ключевыми объектами здесь являются:
- Сайт
- для посетителей
Каждый уникальный посетитель будет иметь одну строку в базе данных с информацией, такой как целевая страница, время суток, ОС, браузер, реферер, IP и т.д.
Мне нужно будет делать агрегированные запросы в этой базе данных, такие как "COUNT" всех посетителей, у которых есть ОС Windows, и вышла из Bing.com "
У меня есть сотни сайтов для отслеживания, а количество посетителей для этих веб-сайтов варьируется от нескольких сотен в день до нескольких миллионов в день. В целом, я ожидаю, что эта база данных вырастет примерно на миллион строк в день.
Мои вопросы:
1) Является ли MySQL хорошей базой данных для этой цели?
2) Что может быть хорошей архитектурой? Я думаю о создании новой таблицы для каждого веб-сайта. Или, возможно, начните с одной таблицы, а затем создайте новую таблицу (ежедневно), если количество строк в существующей таблице превышает 1 миллион (это мое предположение правильно). Мое единственное беспокойство заключается в том, что, если таблица становится слишком большой, SQL-запросы могут значительно замедляться. Итак, каково максимальное количество строк, которые я должен хранить в таблице? Более того, существует ли ограничение на количество таблиц, которые может обрабатывать MySQL.
3) Целесообразно ли выполнять агрегированные запросы по миллионам строк? Я готов подождать пару секунд, чтобы получить результаты для таких запросов. Является ли это хорошей практикой или существует какой-либо другой способ выполнения агрегированных запросов?
В двух словах, Я пытаюсь создать крупномасштабный тип хранилища данных, который будет писать тяжелый. Если вы знаете о каких-либо опубликованных тематических исследованиях или отчетах, это будет здорово!