Я индексирую много пользователей (более 50 миллионов) и их просмотров страниц в день, например:
{
"id": 123,
"name": "foo bar"
"views_2020_01_01": 1,
"views_2020_01_02": 2,
"views_2020_01_03": 3,
"views_2020_01_04": 4,
"otherfield": "xxx",
"yetanotherfield": "yyy",
"gimmeanotherfield": "zzz",
"otherfields.......": "....."
....
},
{
"id": 124,
"name": "bar baz"
"views_2020_01_01": 4,
"views_2020_01_02": 3,
"views_2020_01_03": 2,
"views_2020_01_04": 1,
"otherfield": "xxx",
"yetanotherfield": "yyy",
"gimmeanotherfield": "zzz",
"otherfields.......": "....."
....
}
Я храню данные о просмотрах за последние 2 года. Наш веб-интерфейс позволяет выбрать диапазон дат (например, 2019-06-01
до 2019-07-22
)
. В этом случае, когда мы фильтруем show me users with more than 5 and less than 20 pageviews
в этом диапазоне дат, я сделаю запрос:
{!frange l=5 u=11} sum(views_2019-06-01,views_2019-06-02,views_2019-06-03,...,views_2019-07-22)
Это довольно медленно. Мне интересно, если это просто плохая практика или у кого-нибудь есть лучший способ сделать это. Спасибо!