簡體   English   中英

有沒有一種方法可以優化此CrateDB關系查詢?

[英]Is there a way to optimize this CrateDB relational query?

我正在使用從Web應用程序發送的8000萬個事件的數據集來測試CrateDB,這既是規范化的關系解決方案,也是非規范化的單個數據庫解決方案。

我將所有8000萬個非規范化事件導入到一個表中,並運行以下聚合查詢:

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支持
  • 在小型數據集上部署關系解決方案的選項(對於在一個DB上實現標准化非常有用,對於知道SQL的開發人員而言,無需進行上下文切換或擴展)。

您正在使用哪個CrateDB版本? 如果它小於3.0,則升級可能會大大提高連接查詢的效率,請參閱https://crate.io/a/lab-notes-how-we-made-joins-23-thousand-times-faster-part-三/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM