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