Мы думаем о создании системы хранилища данных для загрузки журналов веб-доступа, которые генерируются нашими веб-серверами. Идея состоит в том, чтобы загружать данные в режиме реального времени.
Мы хотим представить пользователю линейный график данных и дать ему возможность детализировать данные с помощью измерений.
Вопрос в том, как сбалансировать и спроектировать систему так, чтобы;
(1) данные могут быть получены и представлены пользователю в режиме реального времени (‹2 секунды),
(2) данные можно агрегировать по часам и дням, и
(2) поскольку на складе все еще может храниться большой объем данных, и
Наша текущая скорость передачи данных составляет примерно ~ 10 обращений в секунду, что дает нам ~ 800 тыс. Строк в день. Мои простые тесты с MySQL и простой звездообразной схемой показывают, что мои запросы начинают занимать более 2 секунд, когда у нас более 8 миллионов строк.
Возможно ли получить производительность запросов в реальном времени из «простого» хранилища данных, подобного этому, и при этом сохранить много данных (было бы неплохо иметь возможность никогда не выбрасывать какие-либо данные )
Есть ли способы агрегировать данные в таблицы с более высоким разрешением?
У меня такое чувство, что это не совсем новый вопрос (хотя я довольно много гуглил). Может ли кто-нибудь дать баллы таким решениям для хранилищ данных? На ум приходит Splunk.
Может, я слишком многого хватаю.
ОБНОВЛЕНИЕ
Моя схема выглядит так:
Габаритные размеры:
- client (ip-address)
- сервер
- url
факты;
- timestamp (in seconds)
- байт передано