Есть ли способ оптимизировать этот реляционный запрос CrateDB? - PullRequest
0 голосов
/ 02 сентября 2018

Я тестирую CrateDB с набором данных из 80 миллионов событий, отправленных из веб-приложения, как в виде нормализованного реляционного решения, так и в виде денормализованного решения с одной базой данных.

Я импортировал все 80 миллионов денормализованных событий в таблицу и выполнил следующий запрос агрегации:

select productName, SUM(elapsed)/60 as total_minutes from denormalized
where country_code = 'NL' AND eventType = 'mediaPlay' 
group by productName
order by total_minutes desc
limit 1000;

и запрос занял 0,009 секунды. Wowza! CrateDB горит быстро!

Затем я импортировал документы всей сессии в одну таблицу, называемую «сеансы», и все отдельные документы событий в каждой сессии в другую таблицу, называемую «события», и выполнил следующий запрос:

select e.productName, SUM(e.elapsed)/60 as total_minutes from sessions s
join events e ON e.sessionGroup = s.sessionGroup
where s.country_code = 'NL' AND e.eventType = 'mediaPlay' 
group by e.productName
order by total_minutes desc
limit 1000;

, что заняло 21 секунду.

У меня вопрос: есть ли способ повысить производительность реляции, возможно, путем создания индексов или изменения запроса каким-либо образом?

Тангенциальная мысль: Мы использовали Elasticsearch для аналитики, очевидно, для денормализации данных, и это довольно быстро, но CrateDB, кажется, предлагает все, что делает Elasticsearch (быстрые запросы по денормализованным данным, кластеризация, динамическая схема, полнотекстовый поиск), плюс дополнительные преимущества:

  • улучшенная поддержка SQL
  • возможность развертывания реляционных решений на небольших наборах данных (замечательно стандартизировать на одной БД, без переключения контекста или наращивания для разработчиков, знающих SQL).

1 Ответ

0 голосов
/ 03 сентября 2018

Какую версию CrateDB вы используете? Если это <3.0, то обновление, вероятно, сильно увеличит запрос на соединение, см. <a href="https://crate.io/a/lab-notes-how-we-made-joins-23-thousand-times-faster-part-three/" rel="nofollow noreferrer">https://crate.io/a/lab-notes-how-we-made-joins-23-thousand-times-faster-part-three/.

...