5 ms·
This is not a good benchmark. There are two problems: 1. It’s a simple GROUP BY on a single table. You’re basically just measuring the scan speed. Real queries
by georgewfraser 9y ago
This is not a good benchmark. There are two problems:
1. It’s a simple GROUP BY on a single table. You’re basically just measuring the scan speed. Real queries are dominated by shuffles and the probe side of joins; these aren’t even present in this benchmark.
2. He runs the query repeatedly and takes the fastest time. This is far too cache-friendly. In this example, the intermediate stages of the query or even the result are probably just sitting in memory on the nodes after the first couple runs.
If you want to measure the performance of a data warehouse, you need to use more complex queries and not run the exact same query repeatedly.
edit: Coincidentally, I am giving a talk about data warehouse benchmarking TONIGHT in NYC. If you’re in NY and interested in this subject, please come! https://www.meetup.com/mysqlnyc/ https://www.meetup.com/mysqlnyc/
- marklit 9y agoThe benchmarks are aimed at OLAP not OLTP workloads. If I had a large query set to run on each vendor I'd be more likely to hit compatibility issues which could mean fewer benchmarks going out. As it is I spend a lot of time getting hardware and software vendors together for these benchmarks. If caches were being hit I'd expect a lot more DBs hitting single millisecond times in my benchmarks but as far as I can see, there is a clear delta between the various setups I've tested: http://tech.marksblogg.com/benchmarks.html http://tech.marksblogg.com/benchmarks.html
- pbecotte 9y agoThis is true, but there are steps between the two. It would certainly be possible to, for each query, record both the first time and the fastest time. You could also add a couple queries that are a little harder- a query with a self-join and a window function would certainly be interesting- without getting too far down the road of building a query set that will be hard to run on different systems. Even without those though, this is a good read, thanks for it!
- georgewfraser 9y agoMy criticisms are specifically about OLAP use cases. Real OLAP queries have joins and subqueries. I hear you about compatibility. I think this benchmark would be greatly improved by rewriting the query to include a subquery and a fact-to-fact join using the same table. For example, you could do a subquery where you find the longest and shortest ride for each driver each day, and then join that back to the full table and calculate something. That would do a much better job of exercising the key features of the query planner, while still being simple and compatible.
- buremba 9y agoReal OLAP queries usually don't have JOINs. Instead, the data is denormalized at ingestion nad WINDOW, CTE ans subqueries are used at query time.
- georgewfraser 9y agoThis was true 10 years ago. Many people building data warehouses today just use a normalized schema and write views with lots of joins. It’s a much simpler workflow and data warehouses have gotten so fast that this actually works.
- buremba 9y agoI don't know any technology that makes the JOINs efficient enough for low latency queries. If you're joining two tables that have billions of rows, you need too much memory and CPU resources in order to be able to map them. Do you know any DBMS that focuses on OLAP systems and suggest normalization?
- StreamBright 9y agoI can just second that. Most DWHs arr denormalized because columnar storage formats love repetition.
- ruw1090 9y agoThe other thing that is misleading about this benchmark is that the comparison page shows results for many different DBs on vastly different hardware without any mention of price. It would be much more valuable if it attempted to normalize performance results by hardware cost.
- marklit 9y agoI've avoided going down this rabbit hole. Staff costs can outweigh software and hardware in some cases. Hiring someone that knows kdb+/q could cost a fair bit more than someone who only has some PostgreSQL experience.
- srcmap 9y ago"There is half a terabyte of DDR4 RAM on each machine." I also wonder how much of the speed up is due to the GPU parallelization vs the DB size seem to fit within the size of DDR4. " 0.005 0.011 0.103 0.188 BrytlytDB 2.1 & 5-node IBM Minsky cluster" NVME "1.034 3.058 5.354 12.748 ClickHouse, Intel Core i5 4670K" SSD The core i5 system only has 16GB of RAM. I love to see what that number would looks like if it also has 512GB or more of DDR4 with NVME drive. Also one can also try increase to data size from 1.1 B -> 1000B and see how it scale on Minsky cluster.
- azureel 9y agoI agree, single node Vertica vs $50k cluster Brytlyt is not really a meaningful versus. http://tech.marksblogg.com/billion-nyc-taxi-vertica.html http://tech.marksblogg.com/billion-nyc-taxi-vertica.html
- richard_heyns 9y agoHi George, these are valid points. I can confirm we don't employ result caching in Brytlyt, if we did; 1) all run times would be identical regardless of query 2) the run times would be an order of magnitude faster I agree there is quite a bit more to a data warehouse performance than table scan speed. There are queries where scan speed is important and in the retail industry, COUNT DISTINCT is one of them. I agree the queries in this benchmark is simple, that doesn't mean they're not significant.