SlideShare a Scribd company logo
Query Processing in
InfluxDB IOx
SQL, Storge gRPC, Reorganization
2021-10-13
CC BY-SA
Andrew Lamb
© 2021 InfluxData. All rights reserved.
2
Today: IOx Team at InfluxData
Past life 1: Query Optimizer @
Vertica, also on Oracle DB server
Past life 2: Chief Architect + VP
Engineering roles at some ML startups
© 2021 InfluxData. All rights reserved.
3
Talk Outline
‒ Data Model and Storage Review
‒ Query Processing Overview
‒ Frontends
‒ Execution Plans
© 2021 InfluxData. All rights reserved.
4
Data Layout and
Storage
© 2021 InfluxData. All rights reserved.
5
Data Organization: Partitions
Partitions define how data is kept
in separate Chunks in storage.
Each chunk logically stores part of
a partition for one or more
Relational Tables
Partitioning is used for for
1. Data Lifecycle Management
(drop whole partitions by deleting files)
2. Query Performance
(partition pruning)
Each row mapped to a single
Partition based on Partition Rules
cpu table disk table requests table
Jan 1 Jan 2
Jan 3
Jan 1
Jan 3
Jan 1 Jan 2
© 2021 InfluxData. All rights reserved.
6
Data Organization: Chunks
Chunk0
(closed)
Chunk1
(closed)
Chunk4
open
Within each partition within a table,
data is divided into physical
chunks, identified with a chunk id
and a chunk order.
Chunks with lower order have older
(by insert time) data.
There is at most one open chunk
for each partition. All new data
(including deletes + updates) is
written into the open chunk
Once a chunk is closed, it becomes
immutable: rows are never
added/removed. The data is
compacted / persisted over time
into new chunks and the old chunk
dropped
Chunk2
(closed)
Chunk3
(closed)
New data is written into
the open chunk
Closed chunks are
ordered by age of data,
and never modified
© 2021 InfluxData. All rights reserved.
7
Data Model
weather,location=us-east temperature=82,humidity=67 1465839830100400200
weather,location=us-midwest temperature=82,humidity=65 1465839830100400200
weather,location=us-west temperature=70,humidity=54 1465839830100400200
weather,location=us-east temperature=83,humidity=69 1465839830200400200
weather,location=us-midwest temperature=87,humidity=78 1465839830200400200
weather,location=us-west temperature=72,humidity=56 1465839830200400200
weather,location=us-east temperature=84,humidity=67 1465839830300400200
weather,location=us-midwest temperature=90,humidity=82 1465839830400400200
weather,location=us-west temperature=71,humidity=57 1465839830400400200
location
"us-east"
"us-midwest"
"us-west"
"us-east"
"us-midwest"
"us-west"
"us-east"
"us-midwest"
"us-west"
temperature
82
82
70
83
87
72
84
90
71
humidity
67
65
54
69
78
56
67
82
57
timestamp
2016-06-13T17:43:50.1004002Z
2016-06-13T17:43:50.1004002Z
2016-06-13T17:43:50.1004002Z
2016-06-13T17:43:50.2004002Z
2016-06-13T17:43:50.2004002Z
2016-06-13T17:43:50.2004002Z
2016-06-13T17:43:50.3004002Z
2016-06-13T17:43:50.3004002Z
2016-06-13T17:43:50.3004002Z
© 2021 InfluxData. All rights reserved.
8
Query Processing
© 2021 InfluxData. All rights reserved.
9
Design: One Execution Engine
1. Query and Data Reorganization*: two sides of the same coin “moving data around”
2. Reuse as much existing execution machinery (e.g. streaming, segregated worker pool, etc)
3. Amplify investment by leveraging Open Source (and contribute back)
⇒ All queries run through a unified planning system based
on DataFusion + Arrow
Execute as Rust async streams (`RecordBatchStream`)
using tokio executor
* Putting data in physical structures (Chunks)
© 2021 InfluxData. All rights reserved.
10
Query Processing IOx
Storage gRPC
Frontend
SQL Frontend
(from DataFusion)
Optimization
(storage pruning, pushdown,
etc)
Physical Planning
Execution
gRPC output Arrow Flight IPC
Query Input
Client / Language Specific
Frontends
Shared Planning, Execution
Phases, based on DataFusion
Client Specific
Output formats
read_group(.
.)
SELECT … FROM
...
DataFusio
n
LogicalPla
n
Arrow
Record
Batches
Reorg Frontend
compact_plan(..
)
ReadBuffer /
ParquetWriter
SeriesFrame
...
FlightData
Write to
ReadBufer or
Parquet files
DataFusio
n
LogicalPla
n
DataFusion
Physical
Plan
© 2021 InfluxData. All rights reserved.
11
IOx Query Optimization Features
“Classic”: Projection/Filter/Limit pushdown, partial eval, ...
Predicate Evaluation During Scan
Chunk Pruning on predicates
Parquet Row Group Pruning
Grouping/Aggregate Pushdown
Filters pushed down on some
metadata queries, scans in
ReadBuffer
DataFusion IOx
N/A
ReadBuffer has support, but no
query engine support
© 2021 InfluxData. All rights reserved.
12
Front Ends
(Logical Plans)
© 2021 InfluxData. All rights reserved.
13
SQL Frontend
Arrow Flight
client
IOx
Port 8082
Object Store
2. IOx answers
queries by
combining data
from parquet files
+ in memory
cache
1. Flight request sent
3. Response
streamed back
via flight RPC
See DataFusion: An Embeddable Query Engine Written in Rust for more details
© 2021 InfluxData. All rights reserved.
14
SQL: Logical Plan
SELECT cpu, usage_user, time
FROM cpu
WHERE cpu = 'cpu1';
TableScan is accomplished via
IOxReadFilterNode
.
Chunks are presented to as DataFusion
“partitions” (different than IOx partitions)
IOx query engine handles resolving upserts and
deletes
results
Filter:
#cpu Eq Utf8(“cpu1”)
TableScan: cpu
projection= Some([0,1,2,12])
Projection:
#cpu, #usage_user, #time
© 2021 InfluxData. All rights reserved.
15
Reorg / Life Cycle Planner
Chunk2
Chunk1
Chunk3
Compact Plan
resolves upserts /
applies deletes
RecordBatch stream
Compact lifecycle operation
writes Stream to new Read
Buffer (RUB) or Parquet chunk
Chunk2
Chunk1
Chunk3
Split Plan:
resolves upserts /
applies deletes
RecordBatch stream
Persist lifecycle operation writes
streams to Parquet chunk and RUB
respectively
RecordBatch stream
time <= split_time
time > split_time
Compact
Split (split_time)
© 2021 InfluxData. All rights reserved.
16
Reorg / Life Cycle Planner
Compact Plan
TableScan: cpu
Chunks = ...
Split Plan
TableScan: cpu
Chunks = ...
(2 DataFusion partitions)
StreamSplit split_time=1004
DataFusion
extension Node
© 2021 InfluxData. All rights reserved.
17
Storage gRPC frontend: Flux and InfluxQL
Flux
Runtime
InfluxQL
IOx
Port 8082
Object Store
2. IOx answers
queries by
combining data
from parquet files
+ in memory
cache
1. Flux/InfluxQL
send requests
via gRPC
3. Response
streamed back
via gRPC
© 2021 InfluxData. All rights reserved.
18
Storage gRPC Operations
‒ ReadFilter: Scan data out of IOx matching predicates
‒ ReadGroup: Groups/aggregates in IOx returning grouped data
‒ ReadWindowAggregate: Similar to ReadGroup, but windowed by time
‒ TagKeys: tag keys (column names) with data matching predicates.
‒ TagValues: distinct tag values (column values) with data matching predicates for a set
of tag keys (columns).
‒ MeasurementNames: table names that satisfy some provided predicate.
‒ MeasurementTagKeys: Same as TagKeys but limited to a single table.
‒ MeasurementTagValues: Same as TagValues but limited to a single table.
‒ MeasurementFields: field names (column names) with rows matching predicate
DataQuery Returns Time Series MetadataQuery Returns Strings / times
(thanks @e-dard)
© 2021 InfluxData. All rights reserved.
19
Metadata Queries
meta data queries are incredibly common and often done on more recent data
‒ measurement_names(range, predicate)
‒ tag_keys(range, predicate)
‒ tag_values(tag_key, range, predicate)
Metadata Query
Fast path for
predicates
?
* Read Buffer (RUB) in particular is heavily optimized for metadata queries and rarely need general purpose plans.
YES: Answer with optimized*
implementation in chunk.
NO: Run general purpose
(DataFusion) plan
© 2021 InfluxData. All rights reserved.
20
tag_keys (general)
tag_keys
pred: cpu ~= ‘.*total’
ts_range:[1000, 2000]
results
Filter:
#cpu =~ ‘.*total’ AND 1000 < #time
AND #time > 2000
TableScan: cpu
projection= Some([0,1,2,12])
SchemaPivot
DataFusion extension Node
Produces a single output
String column with the
name of any input column
that had a non null value
© 2021 InfluxData. All rights reserved.
21
Handling multiple tables
tag_keys
pred: host = ‘foo’
ts_range:[1000, 2000]
Filter:
1000 < #time AND
#time > 2000 AND host
= ‘foo’
TableScan: cpu
SchemaPivot
SeriesSetPlan for cpu
SeriesSetPlan(LogicalPlan)
Filter:
1000 < #time AND
#time > 2000 AND host
= ‘foo’
TableScan: mem
SchemaPivot
SeriesSetPlan for mem
{}
SeriesSetPlan for host
(no data between 1000 and
2000)
Results from multiple plans and sets are
combined at higher level
© 2021 InfluxData. All rights reserved.
22
read_filter
pred: tag(_m)=”system” AND tag(_f)=”usage_user” AND tag(cpu)=”cpu1”
ts_range: [1000, 2000)
read_filter: Logical Plan
IOx code creates DataFusion
LogicalPlan nodes
Filter:
1000 < #time AND
#time > 2000 AND
#cpu Eq Utf8(“cpu1”)
Sort: (#cpu, #host, #time)
TableScan: system
projection= Some([0,1,2,12])
Projection:
#cpu, #host, #usage_user, #time
TableScan is accomplished via same
IOxReadFilterNode
.
Predicates are applied using a Filter
Sort data in tag key order, as expected by Flux /
InfluxQL
© 2021 InfluxData. All rights reserved.
23
read_filter:
Physical Plan
FilterExec:
1000 < #time AND
#time > 2000 AND
#cpu Eq Utf8(“cpu1”)
Sort: (#cpu, #host, #time)
IOxReadFilterNode
ProjectionExec:
#cpu, #host, #usage_user, #time
CoalescePartitionsExec
CoalescePartitionsExec does
not preserve sort order
Added by DataFusion physical
planning due to requirements from
Sort
FilterExec:
1000 < #time AND
#time > 2000 AND
#cpu Eq Utf8(“cpu1”)
IOxReadFilterNode
FilterExec:
1000 < #time AND
#time > 2000 AND
#cpu Eq Utf8(“cpu1”)
IOxReadFilterNode:
….
Repeated for
each chunk
PartitionChunk
(mutable_buffer)
PartitionChunk
(read_buffer)
PartitionChunk
(read_buffer)
Calls
PartitionChunk::read_filter
During execution to get
results
© 2021 InfluxData. All rights reserved.
24
read_group
read_group
pred: tag(_m)=”cpu”
agg: first
group_keys: “env”
ts_range: [1000, 2000)
Assumes env and cpu are tags
results
Filter:
1000 < #time AND #time > 2000
Sort:
env, cpu, _time, _value
TableScan: cpu
projection= Some([0,1,2,12])
Projection:
env, cpu, _time, _value
GroupBy:
gby: env, cpu
agg: first.time(usage_user, time) as _time
first.value(usage_user, time) as _value
© 2021 InfluxData. All rights reserved.
25
Execution Plans
© 2021 InfluxData. All rights reserved.
26
Table Scan: Reading data from a Chunk
TableScan: cpu
IOxReadFilterNode
chunk_id = 1
LogicalPlan ExecutionPlan SendableRecordBatchStream
SchemaAdapterStream
{MUB,RUB,Parquet}Stream
For a single chunk
* Chunk that has no deletes or possible
updates
© 2021 InfluxData. All rights reserved.
27
Schema Adapter Stream
SchemaAdapterStream
output_schema: {A, B, C}
A C
1 10
2 20
3 30
4 40
Input RecordBatch
A B C
1 NULL 10
2 NULL 20
3 NULL 30
4 NULL 40
Output RecordBatch
Missing columns are padded with
nulls
© 2021 InfluxData. All rights reserved.
28
Read Time Resolution of Updates/Upserts
Chunks that potentially
have updates (overlaps)
to primary keys but
different sort orders
TableScan: cpu
IOxReadFilterNode
chunk_id = 1
LogicalPlan
ExecutionPlan
Simplified -- real
plans handle partial
overlap scenarios;
See source
documentation for
more details
IOxReadFilterNode
chunk_id = 7
UnionExec
SortPreservingMerge
DeduplicateExec
IOx extension that implements tag key
deduplication
SortExec(optional)
Sort_key: tags
SortExec(optional)
Sort_key: tags
May have to resort on
primary key columns
Classic N-way merge
Doesn’t combine any DF partitions
© 2021 InfluxData. All rights reserved.
29
Read Time Resolution of Deletes
IOxReadFilterNode
chunk_id = 1
ExecutionPlan
IOxReadFilterNode
chunk_id = 7
UnionExec
SortPreservingMerge
DeduplicateExec
SortExec(optional)
Sort_key: tags
SortExec(optional)
Sort_key: tags
Deletes can vary across chunks
Any delete predicates are also
applied in these scans (and thus
pushed down to MUB, RUB, etc)
as normal
FilterExec
time < 2021-10-01
Delete where
time < 2021-10-01
Thank You

More Related Content

What's hot

Cost-based Query Optimization in Apache Phoenix using Apache Calcite
Cost-based Query Optimization in Apache Phoenix using Apache CalciteCost-based Query Optimization in Apache Phoenix using Apache Calcite
Cost-based Query Optimization in Apache Phoenix using Apache Calcite
Julian Hyde
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
Databricks
 
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
The Rise of ZStandard: Apache Spark/Parquet/ORC/AvroThe Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
Databricks
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm Chandler Huang
 
Inside the InfluxDB storage engine
Inside the InfluxDB storage engineInside the InfluxDB storage engine
Inside the InfluxDB storage engine
InfluxData
 
How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...
DataWorks Summit/Hadoop Summit
 
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
A Rusty introduction to Apache Arrow and how it applies to a  time series dat...A Rusty introduction to Apache Arrow and how it applies to a  time series dat...
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
Andrew Lamb
 
Hive: Loading Data
Hive: Loading DataHive: Loading Data
Hive: Loading Data
Benjamin Leonhardi
 
Parquet performance tuning: the missing guide
Parquet performance tuning: the missing guideParquet performance tuning: the missing guide
Parquet performance tuning: the missing guide
Ryan Blue
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseenissoz
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detail
MIJIN AN
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
Flink Forward
 
PostgreSQL Deep Internal
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep Internal
EXEM
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...
Flink Forward
 
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiHow to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
Flink Forward
 
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Databricks
 
Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Cloudera, Inc.
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Altinity Ltd
 
Hive 3 - a new horizon
Hive 3 - a new horizonHive 3 - a new horizon
Hive 3 - a new horizon
Thejas Nair
 
Apache HBase Performance Tuning
Apache HBase Performance TuningApache HBase Performance Tuning
Apache HBase Performance Tuning
Lars Hofhansl
 

What's hot (20)

Cost-based Query Optimization in Apache Phoenix using Apache Calcite
Cost-based Query Optimization in Apache Phoenix using Apache CalciteCost-based Query Optimization in Apache Phoenix using Apache Calcite
Cost-based Query Optimization in Apache Phoenix using Apache Calcite
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
 
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
The Rise of ZStandard: Apache Spark/Parquet/ORC/AvroThe Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
The Rise of ZStandard: Apache Spark/Parquet/ORC/Avro
 
Introduction to Storm
Introduction to Storm Introduction to Storm
Introduction to Storm
 
Inside the InfluxDB storage engine
Inside the InfluxDB storage engineInside the InfluxDB storage engine
Inside the InfluxDB storage engine
 
How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...How to understand and analyze Apache Hive query execution plan for performanc...
How to understand and analyze Apache Hive query execution plan for performanc...
 
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
A Rusty introduction to Apache Arrow and how it applies to a  time series dat...A Rusty introduction to Apache Arrow and how it applies to a  time series dat...
A Rusty introduction to Apache Arrow and how it applies to a time series dat...
 
Hive: Loading Data
Hive: Loading DataHive: Loading Data
Hive: Loading Data
 
Parquet performance tuning: the missing guide
Parquet performance tuning: the missing guideParquet performance tuning: the missing guide
Parquet performance tuning: the missing guide
 
HBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBaseHBase and HDFS: Understanding FileSystem Usage in HBase
HBase and HDFS: Understanding FileSystem Usage in HBase
 
RocksDB detail
RocksDB detailRocksDB detail
RocksDB detail
 
Tuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptxTuning Apache Kafka Connectors for Flink.pptx
Tuning Apache Kafka Connectors for Flink.pptx
 
PostgreSQL Deep Internal
PostgreSQL Deep InternalPostgreSQL Deep Internal
PostgreSQL Deep Internal
 
Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...Tame the small files problem and optimize data layout for streaming ingestion...
Tame the small files problem and optimize data layout for streaming ingestion...
 
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and HudiHow to build a streaming Lakehouse with Flink, Kafka, and Hudi
How to build a streaming Lakehouse with Flink, Kafka, and Hudi
 
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
Improving SparkSQL Performance by 30%: How We Optimize Parquet Pushdown and P...
 
Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0Efficient Data Storage for Analytics with Apache Parquet 2.0
Efficient Data Storage for Analytics with Apache Parquet 2.0
 
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdfDeep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
Deep Dive on ClickHouse Sharding and Replication-2202-09-22.pdf
 
Hive 3 - a new horizon
Hive 3 - a new horizonHive 3 - a new horizon
Hive 3 - a new horizon
 
Apache HBase Performance Tuning
Apache HBase Performance TuningApache HBase Performance Tuning
Apache HBase Performance Tuning
 

Similar to InfluxDB IOx Tech Talks: Query Processing in InfluxDB IOx

Exploring Parallel Merging In GPU Based Systems Using CUDA C.
Exploring Parallel Merging In GPU Based Systems Using CUDA C.Exploring Parallel Merging In GPU Based Systems Using CUDA C.
Exploring Parallel Merging In GPU Based Systems Using CUDA C.
Rakib Hossain
 
Beginbackup
BeginbackupBeginbackup
Beginbackup
oracle documents
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01Karam Abuataya
 
11 Things About11g
11 Things About11g11 Things About11g
11 Things About11g
fcamachob
 
Debugging linux issues with eBPF
Debugging linux issues with eBPFDebugging linux issues with eBPF
Debugging linux issues with eBPF
Ivan Babrou
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratop
Sandesh Rao
 
Apache Cassandra at Macys
Apache Cassandra at MacysApache Cassandra at Macys
Apache Cassandra at Macys
DataStax Academy
 
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightMacy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-Flight
DataStax Academy
 
Analyzing and Interpreting AWR
Analyzing and Interpreting AWRAnalyzing and Interpreting AWR
Analyzing and Interpreting AWR
pasalapudi
 
Taming the Tiger: Tips and Tricks for Using Telegraf
Taming the Tiger: Tips and Tricks for Using TelegrafTaming the Tiger: Tips and Tricks for Using Telegraf
Taming the Tiger: Tips and Tricks for Using Telegraf
InfluxData
 
Oracle Basics and Architecture
Oracle Basics and ArchitectureOracle Basics and Architecture
Oracle Basics and ArchitectureSidney Chen
 
IO_Analysis_with_SAR.ppt
IO_Analysis_with_SAR.pptIO_Analysis_with_SAR.ppt
IO_Analysis_with_SAR.ppt
cookie1969
 
Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021
Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021
Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021
InfluxData
 
Oracle ORA Errors
Oracle ORA ErrorsOracle ORA Errors
Oracle ORA Errors
Manish Mudhliyar
 
re:Invent 2019 BPF Performance Analysis at Netflix
re:Invent 2019 BPF Performance Analysis at Netflixre:Invent 2019 BPF Performance Analysis at Netflix
re:Invent 2019 BPF Performance Analysis at Netflix
Brendan Gregg
 
Rac nonrac clone
Rac nonrac cloneRac nonrac clone
Rac nonrac clone
stevejones167
 
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contentionTroubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Tanel Poder
 
Adventures in Dataguard
Adventures in DataguardAdventures in Dataguard
Adventures in DataguardJason Arneil
 
Schema replication using oracle golden gate 12c
Schema replication using oracle golden gate 12cSchema replication using oracle golden gate 12c
Schema replication using oracle golden gate 12c
uzzal basak
 

Similar to InfluxDB IOx Tech Talks: Query Processing in InfluxDB IOx (20)

Exploring Parallel Merging In GPU Based Systems Using CUDA C.
Exploring Parallel Merging In GPU Based Systems Using CUDA C.Exploring Parallel Merging In GPU Based Systems Using CUDA C.
Exploring Parallel Merging In GPU Based Systems Using CUDA C.
 
Beginbackup
BeginbackupBeginbackup
Beginbackup
 
11thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp0111thingsabout11g 12659705398222 Phpapp01
11thingsabout11g 12659705398222 Phpapp01
 
11 Things About11g
11 Things About11g11 Things About11g
11 Things About11g
 
Rmoug ashmaster
Rmoug ashmasterRmoug ashmaster
Rmoug ashmaster
 
Debugging linux issues with eBPF
Debugging linux issues with eBPFDebugging linux issues with eBPF
Debugging linux issues with eBPF
 
Oracle Database performance tuning using oratop
Oracle Database performance tuning using oratopOracle Database performance tuning using oratop
Oracle Database performance tuning using oratop
 
Apache Cassandra at Macys
Apache Cassandra at MacysApache Cassandra at Macys
Apache Cassandra at Macys
 
Macy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-FlightMacy's: Changing Engines in Mid-Flight
Macy's: Changing Engines in Mid-Flight
 
Analyzing and Interpreting AWR
Analyzing and Interpreting AWRAnalyzing and Interpreting AWR
Analyzing and Interpreting AWR
 
Taming the Tiger: Tips and Tricks for Using Telegraf
Taming the Tiger: Tips and Tricks for Using TelegrafTaming the Tiger: Tips and Tricks for Using Telegraf
Taming the Tiger: Tips and Tricks for Using Telegraf
 
Oracle Basics and Architecture
Oracle Basics and ArchitectureOracle Basics and Architecture
Oracle Basics and Architecture
 
IO_Analysis_with_SAR.ppt
IO_Analysis_with_SAR.pptIO_Analysis_with_SAR.ppt
IO_Analysis_with_SAR.ppt
 
Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021
Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021
Anais Dotis-Georgiou [InfluxData] | Learn Flux by Example | InfluxDays NA 2021
 
Oracle ORA Errors
Oracle ORA ErrorsOracle ORA Errors
Oracle ORA Errors
 
re:Invent 2019 BPF Performance Analysis at Netflix
re:Invent 2019 BPF Performance Analysis at Netflixre:Invent 2019 BPF Performance Analysis at Netflix
re:Invent 2019 BPF Performance Analysis at Netflix
 
Rac nonrac clone
Rac nonrac cloneRac nonrac clone
Rac nonrac clone
 
Troubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contentionTroubleshooting Complex Performance issues - Oracle SEG$ contention
Troubleshooting Complex Performance issues - Oracle SEG$ contention
 
Adventures in Dataguard
Adventures in DataguardAdventures in Dataguard
Adventures in Dataguard
 
Schema replication using oracle golden gate 12c
Schema replication using oracle golden gate 12cSchema replication using oracle golden gate 12c
Schema replication using oracle golden gate 12c
 

More from InfluxData

Announcing InfluxDB Clustered
Announcing InfluxDB ClusteredAnnouncing InfluxDB Clustered
Announcing InfluxDB Clustered
InfluxData
 
Best Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow EcosystemBest Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow Ecosystem
InfluxData
 
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
InfluxData
 
Power Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDBPower Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDB
InfluxData
 
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
InfluxData
 
Build an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING StackBuild an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING Stack
InfluxData
 
Meet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using RustMeet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using Rust
InfluxData
 
Introducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud DedicatedIntroducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud Dedicated
InfluxData
 
Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB
InfluxData
 
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
InfluxData
 
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
InfluxData
 
Introducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage EngineIntroducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage Engine
InfluxData
 
Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena
InfluxData
 
Understanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage EngineUnderstanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage Engine
InfluxData
 
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDBStreamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
InfluxData
 
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
InfluxData
 
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
InfluxData
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
InfluxData
 
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
InfluxData
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
InfluxData
 

More from InfluxData (20)

Announcing InfluxDB Clustered
Announcing InfluxDB ClusteredAnnouncing InfluxDB Clustered
Announcing InfluxDB Clustered
 
Best Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow EcosystemBest Practices for Leveraging the Apache Arrow Ecosystem
Best Practices for Leveraging the Apache Arrow Ecosystem
 
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
How Bevi Uses InfluxDB and Grafana to Improve Predictive Maintenance and Redu...
 
Power Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDBPower Your Predictive Analytics with InfluxDB
Power Your Predictive Analytics with InfluxDB
 
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
How Teréga Replaces Legacy Data Historians with InfluxDB, AWS and IO-Base
 
Build an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING StackBuild an Edge-to-Cloud Solution with the MING Stack
Build an Edge-to-Cloud Solution with the MING Stack
 
Meet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using RustMeet the Founders: An Open Discussion About Rewriting Using Rust
Meet the Founders: An Open Discussion About Rewriting Using Rust
 
Introducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud DedicatedIntroducing InfluxDB Cloud Dedicated
Introducing InfluxDB Cloud Dedicated
 
Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB Gain Better Observability with OpenTelemetry and InfluxDB
Gain Better Observability with OpenTelemetry and InfluxDB
 
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
How a Heat Treating Plant Ensures Tight Process Control and Exceptional Quali...
 
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...How Delft University's Engineering Students Make Their EV Formula-Style Race ...
How Delft University's Engineering Students Make Their EV Formula-Style Race ...
 
Introducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage EngineIntroducing InfluxDB’s New Time Series Database Storage Engine
Introducing InfluxDB’s New Time Series Database Storage Engine
 
Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena Start Automating InfluxDB Deployments at the Edge with balena
Start Automating InfluxDB Deployments at the Edge with balena
 
Understanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage EngineUnderstanding InfluxDB’s New Storage Engine
Understanding InfluxDB’s New Storage Engine
 
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDBStreamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
Streamline and Scale Out Data Pipelines with Kubernetes, Telegraf, and InfluxDB
 
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
Ward Bowman [PTC] | ThingWorx Long-Term Data Storage with InfluxDB | InfluxDa...
 
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
Scott Anderson [InfluxData] | New & Upcoming Flux Features | InfluxDays 2022
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts | InfluxDays 2022
 
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
Steinkamp, Clifford [InfluxData] | Welcome to InfluxDays 2022 - Day 2 | Influ...
 
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
Steinkamp, Clifford [InfluxData] | Closing Thoughts Day 1 | InfluxDays 2022
 

Recently uploaded

The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
Alison B. Lowndes
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
James Anderson
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
Bhaskar Mitra
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Inflectra
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
Safe Software
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
Thijs Feryn
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 

Recently uploaded (20)

The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........Bits & Pixels using AI for Good.........
Bits & Pixels using AI for Good.........
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
Search and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical FuturesSearch and Society: Reimagining Information Access for Radical Futures
Search and Society: Reimagining Information Access for Radical Futures
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualitySoftware Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered Quality
 
Essentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with ParametersEssentials of Automations: Optimizing FME Workflows with Parameters
Essentials of Automations: Optimizing FME Workflows with Parameters
 
Accelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish CachingAccelerate your Kubernetes clusters with Varnish Caching
Accelerate your Kubernetes clusters with Varnish Caching
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 

InfluxDB IOx Tech Talks: Query Processing in InfluxDB IOx

  • 1. Query Processing in InfluxDB IOx SQL, Storge gRPC, Reorganization 2021-10-13 CC BY-SA Andrew Lamb
  • 2. © 2021 InfluxData. All rights reserved. 2 Today: IOx Team at InfluxData Past life 1: Query Optimizer @ Vertica, also on Oracle DB server Past life 2: Chief Architect + VP Engineering roles at some ML startups
  • 3. © 2021 InfluxData. All rights reserved. 3 Talk Outline ‒ Data Model and Storage Review ‒ Query Processing Overview ‒ Frontends ‒ Execution Plans
  • 4. © 2021 InfluxData. All rights reserved. 4 Data Layout and Storage
  • 5. © 2021 InfluxData. All rights reserved. 5 Data Organization: Partitions Partitions define how data is kept in separate Chunks in storage. Each chunk logically stores part of a partition for one or more Relational Tables Partitioning is used for for 1. Data Lifecycle Management (drop whole partitions by deleting files) 2. Query Performance (partition pruning) Each row mapped to a single Partition based on Partition Rules cpu table disk table requests table Jan 1 Jan 2 Jan 3 Jan 1 Jan 3 Jan 1 Jan 2
  • 6. © 2021 InfluxData. All rights reserved. 6 Data Organization: Chunks Chunk0 (closed) Chunk1 (closed) Chunk4 open Within each partition within a table, data is divided into physical chunks, identified with a chunk id and a chunk order. Chunks with lower order have older (by insert time) data. There is at most one open chunk for each partition. All new data (including deletes + updates) is written into the open chunk Once a chunk is closed, it becomes immutable: rows are never added/removed. The data is compacted / persisted over time into new chunks and the old chunk dropped Chunk2 (closed) Chunk3 (closed) New data is written into the open chunk Closed chunks are ordered by age of data, and never modified
  • 7. © 2021 InfluxData. All rights reserved. 7 Data Model weather,location=us-east temperature=82,humidity=67 1465839830100400200 weather,location=us-midwest temperature=82,humidity=65 1465839830100400200 weather,location=us-west temperature=70,humidity=54 1465839830100400200 weather,location=us-east temperature=83,humidity=69 1465839830200400200 weather,location=us-midwest temperature=87,humidity=78 1465839830200400200 weather,location=us-west temperature=72,humidity=56 1465839830200400200 weather,location=us-east temperature=84,humidity=67 1465839830300400200 weather,location=us-midwest temperature=90,humidity=82 1465839830400400200 weather,location=us-west temperature=71,humidity=57 1465839830400400200 location "us-east" "us-midwest" "us-west" "us-east" "us-midwest" "us-west" "us-east" "us-midwest" "us-west" temperature 82 82 70 83 87 72 84 90 71 humidity 67 65 54 69 78 56 67 82 57 timestamp 2016-06-13T17:43:50.1004002Z 2016-06-13T17:43:50.1004002Z 2016-06-13T17:43:50.1004002Z 2016-06-13T17:43:50.2004002Z 2016-06-13T17:43:50.2004002Z 2016-06-13T17:43:50.2004002Z 2016-06-13T17:43:50.3004002Z 2016-06-13T17:43:50.3004002Z 2016-06-13T17:43:50.3004002Z
  • 8. © 2021 InfluxData. All rights reserved. 8 Query Processing
  • 9. © 2021 InfluxData. All rights reserved. 9 Design: One Execution Engine 1. Query and Data Reorganization*: two sides of the same coin “moving data around” 2. Reuse as much existing execution machinery (e.g. streaming, segregated worker pool, etc) 3. Amplify investment by leveraging Open Source (and contribute back) ⇒ All queries run through a unified planning system based on DataFusion + Arrow Execute as Rust async streams (`RecordBatchStream`) using tokio executor * Putting data in physical structures (Chunks)
  • 10. © 2021 InfluxData. All rights reserved. 10 Query Processing IOx Storage gRPC Frontend SQL Frontend (from DataFusion) Optimization (storage pruning, pushdown, etc) Physical Planning Execution gRPC output Arrow Flight IPC Query Input Client / Language Specific Frontends Shared Planning, Execution Phases, based on DataFusion Client Specific Output formats read_group(. .) SELECT … FROM ... DataFusio n LogicalPla n Arrow Record Batches Reorg Frontend compact_plan(.. ) ReadBuffer / ParquetWriter SeriesFrame ... FlightData Write to ReadBufer or Parquet files DataFusio n LogicalPla n DataFusion Physical Plan
  • 11. © 2021 InfluxData. All rights reserved. 11 IOx Query Optimization Features “Classic”: Projection/Filter/Limit pushdown, partial eval, ... Predicate Evaluation During Scan Chunk Pruning on predicates Parquet Row Group Pruning Grouping/Aggregate Pushdown Filters pushed down on some metadata queries, scans in ReadBuffer DataFusion IOx N/A ReadBuffer has support, but no query engine support
  • 12. © 2021 InfluxData. All rights reserved. 12 Front Ends (Logical Plans)
  • 13. © 2021 InfluxData. All rights reserved. 13 SQL Frontend Arrow Flight client IOx Port 8082 Object Store 2. IOx answers queries by combining data from parquet files + in memory cache 1. Flight request sent 3. Response streamed back via flight RPC See DataFusion: An Embeddable Query Engine Written in Rust for more details
  • 14. © 2021 InfluxData. All rights reserved. 14 SQL: Logical Plan SELECT cpu, usage_user, time FROM cpu WHERE cpu = 'cpu1'; TableScan is accomplished via IOxReadFilterNode . Chunks are presented to as DataFusion “partitions” (different than IOx partitions) IOx query engine handles resolving upserts and deletes results Filter: #cpu Eq Utf8(“cpu1”) TableScan: cpu projection= Some([0,1,2,12]) Projection: #cpu, #usage_user, #time
  • 15. © 2021 InfluxData. All rights reserved. 15 Reorg / Life Cycle Planner Chunk2 Chunk1 Chunk3 Compact Plan resolves upserts / applies deletes RecordBatch stream Compact lifecycle operation writes Stream to new Read Buffer (RUB) or Parquet chunk Chunk2 Chunk1 Chunk3 Split Plan: resolves upserts / applies deletes RecordBatch stream Persist lifecycle operation writes streams to Parquet chunk and RUB respectively RecordBatch stream time <= split_time time > split_time Compact Split (split_time)
  • 16. © 2021 InfluxData. All rights reserved. 16 Reorg / Life Cycle Planner Compact Plan TableScan: cpu Chunks = ... Split Plan TableScan: cpu Chunks = ... (2 DataFusion partitions) StreamSplit split_time=1004 DataFusion extension Node
  • 17. © 2021 InfluxData. All rights reserved. 17 Storage gRPC frontend: Flux and InfluxQL Flux Runtime InfluxQL IOx Port 8082 Object Store 2. IOx answers queries by combining data from parquet files + in memory cache 1. Flux/InfluxQL send requests via gRPC 3. Response streamed back via gRPC
  • 18. © 2021 InfluxData. All rights reserved. 18 Storage gRPC Operations ‒ ReadFilter: Scan data out of IOx matching predicates ‒ ReadGroup: Groups/aggregates in IOx returning grouped data ‒ ReadWindowAggregate: Similar to ReadGroup, but windowed by time ‒ TagKeys: tag keys (column names) with data matching predicates. ‒ TagValues: distinct tag values (column values) with data matching predicates for a set of tag keys (columns). ‒ MeasurementNames: table names that satisfy some provided predicate. ‒ MeasurementTagKeys: Same as TagKeys but limited to a single table. ‒ MeasurementTagValues: Same as TagValues but limited to a single table. ‒ MeasurementFields: field names (column names) with rows matching predicate DataQuery Returns Time Series MetadataQuery Returns Strings / times (thanks @e-dard)
  • 19. © 2021 InfluxData. All rights reserved. 19 Metadata Queries meta data queries are incredibly common and often done on more recent data ‒ measurement_names(range, predicate) ‒ tag_keys(range, predicate) ‒ tag_values(tag_key, range, predicate) Metadata Query Fast path for predicates ? * Read Buffer (RUB) in particular is heavily optimized for metadata queries and rarely need general purpose plans. YES: Answer with optimized* implementation in chunk. NO: Run general purpose (DataFusion) plan
  • 20. © 2021 InfluxData. All rights reserved. 20 tag_keys (general) tag_keys pred: cpu ~= ‘.*total’ ts_range:[1000, 2000] results Filter: #cpu =~ ‘.*total’ AND 1000 < #time AND #time > 2000 TableScan: cpu projection= Some([0,1,2,12]) SchemaPivot DataFusion extension Node Produces a single output String column with the name of any input column that had a non null value
  • 21. © 2021 InfluxData. All rights reserved. 21 Handling multiple tables tag_keys pred: host = ‘foo’ ts_range:[1000, 2000] Filter: 1000 < #time AND #time > 2000 AND host = ‘foo’ TableScan: cpu SchemaPivot SeriesSetPlan for cpu SeriesSetPlan(LogicalPlan) Filter: 1000 < #time AND #time > 2000 AND host = ‘foo’ TableScan: mem SchemaPivot SeriesSetPlan for mem {} SeriesSetPlan for host (no data between 1000 and 2000) Results from multiple plans and sets are combined at higher level
  • 22. © 2021 InfluxData. All rights reserved. 22 read_filter pred: tag(_m)=”system” AND tag(_f)=”usage_user” AND tag(cpu)=”cpu1” ts_range: [1000, 2000) read_filter: Logical Plan IOx code creates DataFusion LogicalPlan nodes Filter: 1000 < #time AND #time > 2000 AND #cpu Eq Utf8(“cpu1”) Sort: (#cpu, #host, #time) TableScan: system projection= Some([0,1,2,12]) Projection: #cpu, #host, #usage_user, #time TableScan is accomplished via same IOxReadFilterNode . Predicates are applied using a Filter Sort data in tag key order, as expected by Flux / InfluxQL
  • 23. © 2021 InfluxData. All rights reserved. 23 read_filter: Physical Plan FilterExec: 1000 < #time AND #time > 2000 AND #cpu Eq Utf8(“cpu1”) Sort: (#cpu, #host, #time) IOxReadFilterNode ProjectionExec: #cpu, #host, #usage_user, #time CoalescePartitionsExec CoalescePartitionsExec does not preserve sort order Added by DataFusion physical planning due to requirements from Sort FilterExec: 1000 < #time AND #time > 2000 AND #cpu Eq Utf8(“cpu1”) IOxReadFilterNode FilterExec: 1000 < #time AND #time > 2000 AND #cpu Eq Utf8(“cpu1”) IOxReadFilterNode: …. Repeated for each chunk PartitionChunk (mutable_buffer) PartitionChunk (read_buffer) PartitionChunk (read_buffer) Calls PartitionChunk::read_filter During execution to get results
  • 24. © 2021 InfluxData. All rights reserved. 24 read_group read_group pred: tag(_m)=”cpu” agg: first group_keys: “env” ts_range: [1000, 2000) Assumes env and cpu are tags results Filter: 1000 < #time AND #time > 2000 Sort: env, cpu, _time, _value TableScan: cpu projection= Some([0,1,2,12]) Projection: env, cpu, _time, _value GroupBy: gby: env, cpu agg: first.time(usage_user, time) as _time first.value(usage_user, time) as _value
  • 25. © 2021 InfluxData. All rights reserved. 25 Execution Plans
  • 26. © 2021 InfluxData. All rights reserved. 26 Table Scan: Reading data from a Chunk TableScan: cpu IOxReadFilterNode chunk_id = 1 LogicalPlan ExecutionPlan SendableRecordBatchStream SchemaAdapterStream {MUB,RUB,Parquet}Stream For a single chunk * Chunk that has no deletes or possible updates
  • 27. © 2021 InfluxData. All rights reserved. 27 Schema Adapter Stream SchemaAdapterStream output_schema: {A, B, C} A C 1 10 2 20 3 30 4 40 Input RecordBatch A B C 1 NULL 10 2 NULL 20 3 NULL 30 4 NULL 40 Output RecordBatch Missing columns are padded with nulls
  • 28. © 2021 InfluxData. All rights reserved. 28 Read Time Resolution of Updates/Upserts Chunks that potentially have updates (overlaps) to primary keys but different sort orders TableScan: cpu IOxReadFilterNode chunk_id = 1 LogicalPlan ExecutionPlan Simplified -- real plans handle partial overlap scenarios; See source documentation for more details IOxReadFilterNode chunk_id = 7 UnionExec SortPreservingMerge DeduplicateExec IOx extension that implements tag key deduplication SortExec(optional) Sort_key: tags SortExec(optional) Sort_key: tags May have to resort on primary key columns Classic N-way merge Doesn’t combine any DF partitions
  • 29. © 2021 InfluxData. All rights reserved. 29 Read Time Resolution of Deletes IOxReadFilterNode chunk_id = 1 ExecutionPlan IOxReadFilterNode chunk_id = 7 UnionExec SortPreservingMerge DeduplicateExec SortExec(optional) Sort_key: tags SortExec(optional) Sort_key: tags Deletes can vary across chunks Any delete predicates are also applied in these scans (and thus pushed down to MUB, RUB, etc) as normal FilterExec time < 2021-10-01 Delete where time < 2021-10-01