SlideShare une entreprise Scribd logo
1  sur  52
Télécharger pour lire hors ligne
This is not a contribution
FiloDB:
Reactive, Real-time, In-Memory 

Time Series at Scale
Evan Chan ( @evanfchan)
Apple
October 2018
This is not a contribution
Solving The Time
Series Problem
This is not a contribution
Operational Metrics
This is not a contribution
Requirements
• Massive scale, billions of metrics
• Resiliency and maximum uptime
• Real time (seconds, not minutes)
• Low latency querying
• High concurrency (thousands of dashboards, alerts)
• Easy debugging - flexible ad-hoc queries
This is not a contribution
What Users Wanted
• Flexible data model and queries, tag-based querying
• User-defined “tags” on metrics and data
• Prevents abuse of hierarchical system
• Can query across regions, other boundaries
• Flexible rollups
• Longer views of fine grained data
• or flexible retention policies
This is not a contribution
Design for the
• Internal cloud @Apple similar to public cloud
• Containers and “stateless” apps
• Use of Docker, etc. promotes more containers = more metrics
• Stateless = more frequent restarts, more UUIDs => more
metrics
• Leverage hosted cloud services
• Hosted Cassandra, Kafka, other data services
• Let someone else manage persistent storage
Where are we going?
Dashboards
Real-time
Debugging
Events
Metrics
Tracing
???
Real-time ML/
AI
Actionable
Insights
This is not a contribution
(Re)Introducing FiloDB
A Prometheus-compatible, Distributed, In-Memory
Time Series Database
OPEN SOURCE!
http://www.github.com/filodb/FiloDB
Built on the proven reactive SMACK stack.
This is not a contribution
Core Principles
Designed for Cloud
Infrastructure
Built for Scale and
Resiliency
Flexible
Data
Model
Multi-Tenant
This is not a contribution
Proudly built on the
Reactive Stack
This is not a contribution
In-Memory 

Time Series
This is not a contribution
This is not a contribution
Facebook Gorilla
• Keep most recent time series data IN MEMORY,
stored using efficient time series encoding
techniques
• Serve queries using separate process
• Allows dense, massively scalable TS storage +
very fast, rich queries of recent data
• https://github.com/facebookarchive/beringei
Operational Metrics Flow
Kafka
FiloDB Node
Cassandra
Dashboards
Real-time
Debugging
HTTP
Gateway
Gateway
Gateway
App
App
App
Collector
App
This is not a contribution
Shard 1
Shard 0
Data Flow on a NodeRecords
Records
Records
Monix / RX ingestion / back pressure
Index
Write buffers
Write buffers
Write buffers
Chunks
Chunks
Chunks
Index
Write buffers
Write buffers
Write buffers
Chunks
Chunks
Chunks
Encoding
Encoding
This is not a contribution
Columnar Compression
timestamp value
Row-based
timestamp value
timestamp value
timestamp value
timestamp value
t1 t2 t3 t4 t5 t6 t7 t8
Column-based
v1 v2 v3 v4 v5 v6 v7 v8
• Compressing all timestamps together is much
more efficient
This is not a contribution
Delta-Delta Encoding
• Encode increasing numbers (timestamps,
counters) as deltas from slope
This is not a contribution
Results
• Millions of time series and billions of samples per
node
• Up to 1 million samples/sec per node ingestion rate
peak (measured during recovery)
• Up to 8x better than previous system (Storm/HBase)
• Storage density of ~3 bytes per metric sample
• About 10x better than previous system (HBase)
This is not a contribution
Tackling Heap Issues
• 60+ second GC pauses / OOM
• Filled up old gen, GC stuck finding tiny bit of free space
• Solution: move as many permanent objects offheap as
possible
• Too high rate of allocation on ingest
• Temporary objects only, but producing too many
• Solution: Switch from Protobuf to custom, no-allocation
BinaryRecord
This is not a contribution
Off-heap Data Structures
• BinaryVector - one compressed column of
data (say timestamps, or values)
• BinaryRecord - one ingestion data record,
variable schema
• OffheapLFSortedIDMap - offheap lightweight
sorted map
This is not a contribution
Block
Moving Object Graphs
OffHeap
Write buffer
Chunks Chunks
OffheapOnheap
TSPartition
WriteBufferObject
ConcurrentSkipListMap
ID ChunkSetInfo
ID ChunkSetInfo
ID ChunkSetInfo
ID ChunkSetInfo
VectorObject
VectorObject
This is not a contribution
Block
Moving Object Graphs
OffHeap
Write buffer
Chunks Chunks
ChunkMap
OffheapOnheap
TSPartitionTSPartition
WriteBufferObject
ChunkSetInfoPartID
ChunkSetInfo
ConcurrentSkipListMap
ID ChunkSetInfo
ID ChunkSetInfo
ID ChunkSetInfo
ID ChunkSetInfo
VectorObject
VectorObject
Ptr Ptr Ptr Ptr
This is not a contribution
Flexible Distributed
Queries
This is not a contribution
Prometheus Compatible
• Don’t reinvent a popular time series query language
• Prom HTTP API gives out of box Grafana support
sum(http_requests{partition=“P2”,dc="DC0",job="A0"}) by (host)
• Filtering/indexing on many time series
• Time windowing-based aggregation with multiple windows
• Group by
This is not a contribution
Queries to Logical Plan
sum(http_requests{partition=“P2”,dc="DC0",job="A0"}) by (host)
Aggregate(Sum,

PeriodicSeries(

RawSeries(

IntervalSelector(t1, t2, step),

List(ColumnFilter(partition,Equals(P2)),

ColumnFilter(dc,Equals(DC0)),

ColumnFilter(job,Equals(A0)),

ColumnFilter(__name__,Equals(http_requests))
AST
This is not a contribution
Shard 0
Physical Plan Execution
• Location transparency of Akka actors is crucial here
ReduceAggregateExec
Sum
SelectRawPartitionsExec
AggregateMapReduce
PeriodicSamplesMapper
SelectRawPartitionsExec
AggregateMapReduce
PeriodicSamplesMapper
Chunks
Chunks
Chunks
Chunks
Shard 1
This is not a contribution
Shard 0
Physical Plan Execution
• Look ma, plan change, no code changes!
ReduceAggregateExec
Sum
SelectRawPartitionsExec
AggregateMapReduce
PeriodicSamplesMapper
SelectRawPartitionsExec
AggregateMapReduce
PeriodicSamplesMapper
Chunks
Chunks
Chunks
Chunks
Shard 1
Query Service
This is not a contribution
Node 2Node 1
Actor Hierarchy
NodeCoordinator
Actor
IngestionActor QueryActor
MemStore
HTTP
NodeCoordinator
Actor
IngestionActor QueryActor
MemStore
HTTP
CLI / Akka Remote
This is not a contribution
Comparisons
• Queries possible on FiloDB and not on old system:
• Tag-based querying (filter, group by etc based on
flexible tags)
• Histograms and quantiles
• Group by and topK queries
• Flexible time series joins
• 100’s millions samples queried/sec
This is not a contribution
Datasets and Data
Model
This is not a contribution
What Kind of Data Works?
• High cardinality of individual time series (operational metrics,
devices, business metrics)
• Many data points in each series, append only
Series1 {k1=v1, k2=v2}
Time
Series2 {k1=v3, k2=v4}
Series3 {k1=v5, k2=v6}
This is not a contribution
Flexible Tags
• Each time series is defined by a metric name and
a unique combination of keys-values
• Index on tags allows filter/search by combo of tags
memstore_partitions_queried {
dataset=timeseries,
host=MacBook-Pro-229.local,
shard=0
}
memstore_partitions_queried {
dataset=timeseries,
host=MacBook-Pro-229.local,
shard=1
}
This is not a contribution
Flexible Schemas and
Datasets
• Datasets allow for namespacing different schemas, ingestion
sources, SLAs, # shards, and offheap memory isolation
• Main dataset with 2-day retention
• Pre-aggregates dataset with 1 week retention
• Histograms dataset with schema for efficient histogram storage
• OpenTracing dataset — start, end, span duration, etc.
• Historical data using different schema
This is not a contribution
The Hard Stuff: Recovery
and Persistence
This is not a contribution
What is persisted?
• Raw time series data - using a custom format
designed for efficient ingestion & recovery - is
stored using and ingested from Apache Kafka
• Compressed, columnar time series data is written
periodically to a ColumnStore, typically
Cassandra
• Time series metadata for reconstructing each
node’s index is persisted as well
Akka Cluster
Ingestion and Sharding
Kafka
Shard0 Shard1 Shard2 Shard3 Shard4
FiloDB
Node
FiloDB
Node
FiloDB
Node
FiloDB
Node
Gateway
S0 S1 S2 S3 S4
Recovery
Kafka
Shard0 Shard1 Shard2 Shard3 Shard4
FiloDB
Node
FAILU
RE
FiloDB
Node
FiloDB
Node
S0 S1 S2 S3 S4
New
Filo
Node
S2
CassandraChunkSink
On-demand paging
FiloDB
Node
S2
Queries
to other DC
This is not a contribution
Recovery
• The most recent raw data - before encoding - is
recovered by replaying Apache Kafka partitions
• Index metadata is recovered
• Compressed data is loaded on-demand from
Cassandra. This works because most data
written is never queried.
This is not a contribution
FiloDB vs Alternatives
This is not a contribution
vs Prometheus
• FiloDB supports PromQL, HTTP query API
• Prometheus is single-node only
• FiloDB is multi-schema and multi-tenant
• FiloDB designed to run as a resilient, distributed,
high-uptime cloud service
• FiloDB open source not as rich feature-wise (yet)
This is not a contribution
vs InfluxDB
• FiloDB data model is very close to Influx: multi-
schema, multiple columns, namespaces, tags on
series
FiloDB InfluxDB
Clustering Peer to peer distributed
Single node (OSS),

clustered ($$)
Query language PromQL SQL (PromQL coming)
Maturity New Established
This is not a contribution
vs Cassandra
• C*: Very well established and widely used, robust
• Like FiloDB: real time, distributed, low-latency
• C*: Very simple queries ideally to one partition
• FiloDB: complex PromQL queries, topK,
groupBy, time series joins and windowing
• FiloDB: much higher storage density and
ingestion throughput for time series
This is not a contribution
vs Druid
• Druid and FiloDB have different data models
• Druid is an OLAP database with an explicit time
dimension. Dimensions are fixed.
• FiloDB supports millions/billions of time series
with flexible tags
• FiloDB stores raw data, Druid stores roll ups
This is not a contribution
Tradeoffs and Lessons
This is not a contribution
Tradeoffs of using the JVM
• Pluses: solid, proven libraries for building
distributed and data systems
• Apache Lucene
• Akka Cluster
• Minuses: Lack of low-level memory layout and
control
• The devil you know best
This is not a contribution
JVM Production Tips
• Get to know different GCs, Eden, OldGen, G1GC, etc.
really really well
• SJK (https://github.com/aragozin/jvm-tools)
• Runtime visibility
• Multiple APIs to access cluster state
• JMXbeans
• Measure measure measure!! (Use JMH)
This is not a contribution
Current Status
• Development at github.com/filodb/FiloDB
• Time/value schema ingestion and querying is
stable
• Looking for partners to work together, add
integrations, etc.
This is not a contribution
Try it out today
• Ingest data using https://github.com/influxdata/
telegraf
• Expose a Prometheus HTTP read endpoint in
your apps
• Use Grafana to visualize metrics
This is not a contribution
Roadmap
• Speed and efficiency improvements in core FiloDB
database
• Histogram optimizations
• Improved cluster state management
• Support for Spark/ML/AI jobs and metrics. How can we
improve observability for data engineers?
• Support for non-metrics schemas
• Long term storage
This is not a contribution
Thank you!
• Note: We are hiring! If you love reactive systems,
distributed systems, love to push the performance
envelope…. there’s a place for you.
This is not a contribution
Extra Slides
This is not a contribution
On Heap vs Off HeapRecords
Records
Records
Index
Write buffers
Write buffers
Write buffers
Chunks
Chunks
Chunks
Chunks
Chunks
Chunks
ChunkMap
ChunkMap
ChunkMap
OffheapOnheap
TSPartition
TSPartition
TSPartition
PartitionMap
Lucene MMap
Index Files

Contenu connexe

Tendances

Streaming SQL (at FlinkForward, Berlin, 2016/09/12)
Streaming SQL (at FlinkForward, Berlin, 2016/09/12)Streaming SQL (at FlinkForward, Berlin, 2016/09/12)
Streaming SQL (at FlinkForward, Berlin, 2016/09/12)Julian Hyde
 
Apache Flink internals
Apache Flink internalsApache Flink internals
Apache Flink internalsKostas Tzoumas
 
Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow
Flink Forward SF 2017: Eron Wright - Introducing Flink TensorflowFlink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow
Flink Forward SF 2017: Eron Wright - Introducing Flink TensorflowFlink Forward
 
Flink Streaming @BudapestData
Flink Streaming @BudapestDataFlink Streaming @BudapestData
Flink Streaming @BudapestDataGyula Fóra
 
Ufuc Celebi – Stream & Batch Processing in one System
Ufuc Celebi – Stream & Batch Processing in one SystemUfuc Celebi – Stream & Batch Processing in one System
Ufuc Celebi – Stream & Batch Processing in one SystemFlink Forward
 
Albert Bifet – Apache Samoa: Mining Big Data Streams with Apache Flink
Albert Bifet – Apache Samoa: Mining Big Data Streams with Apache FlinkAlbert Bifet – Apache Samoa: Mining Big Data Streams with Apache Flink
Albert Bifet – Apache Samoa: Mining Big Data Streams with Apache FlinkFlink Forward
 
Stateful Distributed Stream Processing
Stateful Distributed Stream ProcessingStateful Distributed Stream Processing
Stateful Distributed Stream ProcessingGyula Fóra
 
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkArbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkDatabricks
 
Apache Flink: API, runtime, and project roadmap
Apache Flink: API, runtime, and project roadmapApache Flink: API, runtime, and project roadmap
Apache Flink: API, runtime, and project roadmapKostas Tzoumas
 
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-timeChris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-timeFlink Forward
 
Large-Scale Stream Processing in the Hadoop Ecosystem
Large-Scale Stream Processing in the Hadoop EcosystemLarge-Scale Stream Processing in the Hadoop Ecosystem
Large-Scale Stream Processing in the Hadoop EcosystemGyula Fóra
 
Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15
Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15
Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15Vasia Kalavri
 
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016Gyula Fóra
 
Flink Forward SF 2017: James Malone - Make The Cloud Work For You
Flink Forward SF 2017: James Malone - Make The Cloud Work For YouFlink Forward SF 2017: James Malone - Make The Cloud Work For You
Flink Forward SF 2017: James Malone - Make The Cloud Work For YouFlink Forward
 
Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)
Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)
Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)ucelebi
 
Marton Balassi – Stateful Stream Processing
Marton Balassi – Stateful Stream ProcessingMarton Balassi – Stateful Stream Processing
Marton Balassi – Stateful Stream ProcessingFlink Forward
 
S. Bartoli & F. Pompermaier – A Semantic Big Data Companion
S. Bartoli & F. Pompermaier – A Semantic Big Data CompanionS. Bartoli & F. Pompermaier – A Semantic Big Data Companion
S. Bartoli & F. Pompermaier – A Semantic Big Data CompanionFlink Forward
 
Data Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkData Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkFabian Hueske
 
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache Flink
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache FlinkUnifying Stream, SWL and CEP for Declarative Stream Processing with Apache Flink
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache FlinkDataWorks Summit/Hadoop Summit
 

Tendances (20)

Streaming SQL (at FlinkForward, Berlin, 2016/09/12)
Streaming SQL (at FlinkForward, Berlin, 2016/09/12)Streaming SQL (at FlinkForward, Berlin, 2016/09/12)
Streaming SQL (at FlinkForward, Berlin, 2016/09/12)
 
Apache Flink internals
Apache Flink internalsApache Flink internals
Apache Flink internals
 
Streaming SQL
Streaming SQLStreaming SQL
Streaming SQL
 
Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow
Flink Forward SF 2017: Eron Wright - Introducing Flink TensorflowFlink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow
Flink Forward SF 2017: Eron Wright - Introducing Flink Tensorflow
 
Flink Streaming @BudapestData
Flink Streaming @BudapestDataFlink Streaming @BudapestData
Flink Streaming @BudapestData
 
Ufuc Celebi – Stream & Batch Processing in one System
Ufuc Celebi – Stream & Batch Processing in one SystemUfuc Celebi – Stream & Batch Processing in one System
Ufuc Celebi – Stream & Batch Processing in one System
 
Albert Bifet – Apache Samoa: Mining Big Data Streams with Apache Flink
Albert Bifet – Apache Samoa: Mining Big Data Streams with Apache FlinkAlbert Bifet – Apache Samoa: Mining Big Data Streams with Apache Flink
Albert Bifet – Apache Samoa: Mining Big Data Streams with Apache Flink
 
Stateful Distributed Stream Processing
Stateful Distributed Stream ProcessingStateful Distributed Stream Processing
Stateful Distributed Stream Processing
 
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache SparkArbitrary Stateful Aggregations using Structured Streaming in Apache Spark
Arbitrary Stateful Aggregations using Structured Streaming in Apache Spark
 
Apache Flink: API, runtime, and project roadmap
Apache Flink: API, runtime, and project roadmapApache Flink: API, runtime, and project roadmap
Apache Flink: API, runtime, and project roadmap
 
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-timeChris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
Chris Hillman – Beyond Mapreduce Scientific Data Processing in Real-time
 
Large-Scale Stream Processing in the Hadoop Ecosystem
Large-Scale Stream Processing in the Hadoop EcosystemLarge-Scale Stream Processing in the Hadoop Ecosystem
Large-Scale Stream Processing in the Hadoop Ecosystem
 
Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15
Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15
Large-scale graph processing with Apache Flink @GraphDevroom FOSDEM'15
 
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
Large-Scale Stream Processing in the Hadoop Ecosystem - Hadoop Summit 2016
 
Flink Forward SF 2017: James Malone - Make The Cloud Work For You
Flink Forward SF 2017: James Malone - Make The Cloud Work For YouFlink Forward SF 2017: James Malone - Make The Cloud Work For You
Flink Forward SF 2017: James Malone - Make The Cloud Work For You
 
Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)
Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)
Unified Stream & Batch Processing with Apache Flink (Hadoop Summit Dublin 2016)
 
Marton Balassi – Stateful Stream Processing
Marton Balassi – Stateful Stream ProcessingMarton Balassi – Stateful Stream Processing
Marton Balassi – Stateful Stream Processing
 
S. Bartoli & F. Pompermaier – A Semantic Big Data Companion
S. Bartoli & F. Pompermaier – A Semantic Big Data CompanionS. Bartoli & F. Pompermaier – A Semantic Big Data Companion
S. Bartoli & F. Pompermaier – A Semantic Big Data Companion
 
Data Stream Processing with Apache Flink
Data Stream Processing with Apache FlinkData Stream Processing with Apache Flink
Data Stream Processing with Apache Flink
 
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache Flink
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache FlinkUnifying Stream, SWL and CEP for Declarative Stream Processing with Apache Flink
Unifying Stream, SWL and CEP for Declarative Stream Processing with Apache Flink
 

Similaire à FiloDB: Reactive, Real-Time, In-Memory Time Series at Scale

Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...Fwdays
 
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibaba
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibabahbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibaba
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at AlibabaMichael Stack
 
Tech-Spark: Exploring the Cosmos DB
Tech-Spark: Exploring the Cosmos DBTech-Spark: Exploring the Cosmos DB
Tech-Spark: Exploring the Cosmos DBRalph Attard
 
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)Amazon Web Services
 
Building Big Data Streaming Architectures
Building Big Data Streaming ArchitecturesBuilding Big Data Streaming Architectures
Building Big Data Streaming ArchitecturesDavid Martínez Rego
 
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena EdelsonStreaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena EdelsonSpark Summit
 
InfluxDB Internals
InfluxDB InternalsInfluxDB Internals
InfluxDB InternalsInfluxData
 
Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...
Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...
Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...Databricks
 
Suburface 2021 IBM Cloud Data Lake
Suburface 2021 IBM Cloud Data LakeSuburface 2021 IBM Cloud Data Lake
Suburface 2021 IBM Cloud Data LakeTorsten Steinbach
 
Intro to InfluxDB
Intro to InfluxDBIntro to InfluxDB
Intro to InfluxDBInfluxData
 
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...Amazon Web Services
 
Need for Time series Database
Need for Time series DatabaseNeed for Time series Database
Need for Time series DatabasePramit Choudhary
 
Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.Mydbops
 
Big Data Architecture Workshop - Vahid Amiri
Big Data Architecture Workshop -  Vahid AmiriBig Data Architecture Workshop -  Vahid Amiri
Big Data Architecture Workshop - Vahid Amiridatastack
 
Realtime Analytics on AWS
Realtime Analytics on AWSRealtime Analytics on AWS
Realtime Analytics on AWSSungmin Kim
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersSATOSHI TAGOMORI
 
Dynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the flyDynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the flyDataWorks Summit
 

Similaire à FiloDB: Reactive, Real-Time, In-Memory Time Series at Scale (20)

Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
Виталий Бондаренко "Fast Data Platform for Real-Time Analytics. Architecture ...
 
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibaba
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibabahbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibaba
hbaseconasia2019 Phoenix Improvements and Practices on Cloud HBase at Alibaba
 
Tech-Spark: Exploring the Cosmos DB
Tech-Spark: Exploring the Cosmos DBTech-Spark: Exploring the Cosmos DB
Tech-Spark: Exploring the Cosmos DB
 
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
AWS re:Invent 2016: Streaming ETL for RDS and DynamoDB (DAT315)
 
Building Big Data Streaming Architectures
Building Big Data Streaming ArchitecturesBuilding Big Data Streaming Architectures
Building Big Data Streaming Architectures
 
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena EdelsonStreaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
Streaming Analytics with Spark, Kafka, Cassandra and Akka by Helena Edelson
 
Internals of Presto Service
Internals of Presto ServiceInternals of Presto Service
Internals of Presto Service
 
InfluxDB Internals
InfluxDB InternalsInfluxDB Internals
InfluxDB Internals
 
Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...
Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...
Dynamic DDL: Adding Structure to Streaming Data on the Fly with David Winters...
 
Suburface 2021 IBM Cloud Data Lake
Suburface 2021 IBM Cloud Data LakeSuburface 2021 IBM Cloud Data Lake
Suburface 2021 IBM Cloud Data Lake
 
Intro to InfluxDB
Intro to InfluxDBIntro to InfluxDB
Intro to InfluxDB
 
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
AWS re:Invent 2016| DAT318 | Migrating from RDBMS to NoSQL: How Sony Moved fr...
 
Need for Time series Database
Need for Time series DatabaseNeed for Time series Database
Need for Time series Database
 
Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.Modern MySQL Monitoring and Dashboards.
Modern MySQL Monitoring and Dashboards.
 
Cassandra training
Cassandra trainingCassandra training
Cassandra training
 
Big Data Architecture Workshop - Vahid Amiri
Big Data Architecture Workshop -  Vahid AmiriBig Data Architecture Workshop -  Vahid Amiri
Big Data Architecture Workshop - Vahid Amiri
 
Realtime Analytics on AWS
Realtime Analytics on AWSRealtime Analytics on AWS
Realtime Analytics on AWS
 
Elasticsearch Introduction at BigData meetup
Elasticsearch Introduction at BigData meetupElasticsearch Introduction at BigData meetup
Elasticsearch Introduction at BigData meetup
 
The Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and ContainersThe Patterns of Distributed Logging and Containers
The Patterns of Distributed Logging and Containers
 
Dynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the flyDynamic DDL: Adding structure to streaming IoT data on the fly
Dynamic DDL: Adding structure to streaming IoT data on the fly
 

Plus de Evan Chan

Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustEvan Chan
 
Designing Stateful Apps for Cloud and Kubernetes
Designing Stateful Apps for Cloud and KubernetesDesigning Stateful Apps for Cloud and Kubernetes
Designing Stateful Apps for Cloud and KubernetesEvan Chan
 
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkBuilding a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkEvan Chan
 
700 Updatable Queries Per Second: Spark as a Real-Time Web Service
700 Updatable Queries Per Second: Spark as a Real-Time Web Service700 Updatable Queries Per Second: Spark as a Real-Time Web Service
700 Updatable Queries Per Second: Spark as a Real-Time Web ServiceEvan Chan
 
Building Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza SeattleBuilding Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza SeattleEvan Chan
 
FiloDB - Breakthrough OLAP Performance with Cassandra and Spark
FiloDB - Breakthrough OLAP Performance with Cassandra and SparkFiloDB - Breakthrough OLAP Performance with Cassandra and Spark
FiloDB - Breakthrough OLAP Performance with Cassandra and SparkEvan Chan
 
Breakthrough OLAP performance with Cassandra and Spark
Breakthrough OLAP performance with Cassandra and SparkBreakthrough OLAP performance with Cassandra and Spark
Breakthrough OLAP performance with Cassandra and SparkEvan Chan
 
Productionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerProductionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerEvan Chan
 
Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Evan Chan
 
MIT lecture - Socrata Open Data Architecture
MIT lecture - Socrata Open Data ArchitectureMIT lecture - Socrata Open Data Architecture
MIT lecture - Socrata Open Data ArchitectureEvan Chan
 
OLAP with Cassandra and Spark
OLAP with Cassandra and SparkOLAP with Cassandra and Spark
OLAP with Cassandra and SparkEvan Chan
 
Spark Summit 2014: Spark Job Server Talk
Spark Summit 2014:  Spark Job Server TalkSpark Summit 2014:  Spark Job Server Talk
Spark Summit 2014: Spark Job Server TalkEvan Chan
 
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)Evan Chan
 
Cassandra Day 2014: Interactive Analytics with Cassandra and Spark
Cassandra Day 2014: Interactive Analytics with Cassandra and SparkCassandra Day 2014: Interactive Analytics with Cassandra and Spark
Cassandra Day 2014: Interactive Analytics with Cassandra and SparkEvan Chan
 
Real-time Analytics with Cassandra, Spark, and Shark
Real-time Analytics with Cassandra, Spark, and SharkReal-time Analytics with Cassandra, Spark, and Shark
Real-time Analytics with Cassandra, Spark, and SharkEvan Chan
 

Plus de Evan Chan (15)

Porting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to RustPorting a Streaming Pipeline from Scala to Rust
Porting a Streaming Pipeline from Scala to Rust
 
Designing Stateful Apps for Cloud and Kubernetes
Designing Stateful Apps for Cloud and KubernetesDesigning Stateful Apps for Cloud and Kubernetes
Designing Stateful Apps for Cloud and Kubernetes
 
Building a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and SparkBuilding a High-Performance Database with Scala, Akka, and Spark
Building a High-Performance Database with Scala, Akka, and Spark
 
700 Updatable Queries Per Second: Spark as a Real-Time Web Service
700 Updatable Queries Per Second: Spark as a Real-Time Web Service700 Updatable Queries Per Second: Spark as a Real-Time Web Service
700 Updatable Queries Per Second: Spark as a Real-Time Web Service
 
Building Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza SeattleBuilding Scalable Data Pipelines - 2016 DataPalooza Seattle
Building Scalable Data Pipelines - 2016 DataPalooza Seattle
 
FiloDB - Breakthrough OLAP Performance with Cassandra and Spark
FiloDB - Breakthrough OLAP Performance with Cassandra and SparkFiloDB - Breakthrough OLAP Performance with Cassandra and Spark
FiloDB - Breakthrough OLAP Performance with Cassandra and Spark
 
Breakthrough OLAP performance with Cassandra and Spark
Breakthrough OLAP performance with Cassandra and SparkBreakthrough OLAP performance with Cassandra and Spark
Breakthrough OLAP performance with Cassandra and Spark
 
Productionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job ServerProductionizing Spark and the Spark Job Server
Productionizing Spark and the Spark Job Server
 
Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015Akka in Production - ScalaDays 2015
Akka in Production - ScalaDays 2015
 
MIT lecture - Socrata Open Data Architecture
MIT lecture - Socrata Open Data ArchitectureMIT lecture - Socrata Open Data Architecture
MIT lecture - Socrata Open Data Architecture
 
OLAP with Cassandra and Spark
OLAP with Cassandra and SparkOLAP with Cassandra and Spark
OLAP with Cassandra and Spark
 
Spark Summit 2014: Spark Job Server Talk
Spark Summit 2014:  Spark Job Server TalkSpark Summit 2014:  Spark Job Server Talk
Spark Summit 2014: Spark Job Server Talk
 
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
Spark Job Server and Spark as a Query Engine (Spark Meetup 5/14)
 
Cassandra Day 2014: Interactive Analytics with Cassandra and Spark
Cassandra Day 2014: Interactive Analytics with Cassandra and SparkCassandra Day 2014: Interactive Analytics with Cassandra and Spark
Cassandra Day 2014: Interactive Analytics with Cassandra and Spark
 
Real-time Analytics with Cassandra, Spark, and Shark
Real-time Analytics with Cassandra, Spark, and SharkReal-time Analytics with Cassandra, Spark, and Shark
Real-time Analytics with Cassandra, Spark, and Shark
 

Dernier

Detection&Tracking - Thermal imaging object detection and tracking
Detection&Tracking - Thermal imaging object detection and trackingDetection&Tracking - Thermal imaging object detection and tracking
Detection&Tracking - Thermal imaging object detection and trackinghadarpinhas1
 
The Satellite applications in telecommunication
The Satellite applications in telecommunicationThe Satellite applications in telecommunication
The Satellite applications in telecommunicationnovrain7111
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfalene1
 
Javier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptxJavier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptxJavier Fernández Muñoz
 
Structural Integrity Assessment Standards in Nigeria by Engr Nimot Muili
Structural Integrity Assessment Standards in Nigeria by Engr Nimot MuiliStructural Integrity Assessment Standards in Nigeria by Engr Nimot Muili
Structural Integrity Assessment Standards in Nigeria by Engr Nimot MuiliNimot Muili
 
Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...
Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...
Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...arifengg7
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTSneha Padhiar
 
Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...
Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...
Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...IJAEMSJORNAL
 
priority interrupt computer organization
priority interrupt computer organizationpriority interrupt computer organization
priority interrupt computer organizationchnrketan
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Romil Mishra
 
Robotics Group 10 (Control Schemes) cse.pdf
Robotics Group 10  (Control Schemes) cse.pdfRobotics Group 10  (Control Schemes) cse.pdf
Robotics Group 10 (Control Schemes) cse.pdfsahilsajad201
 
Artificial Intelligence in Power System overview
Artificial Intelligence in Power System overviewArtificial Intelligence in Power System overview
Artificial Intelligence in Power System overviewsandhya757531
 
ADM100 Running Book for sap basis domain study
ADM100 Running Book for sap basis domain studyADM100 Running Book for sap basis domain study
ADM100 Running Book for sap basis domain studydhruvamdhruvil123
 
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosKCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosVictor Morales
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSsandhya757531
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfBalamuruganV28
 
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdfModule-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdfManish Kumar
 
Secure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech LabsSecure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech Labsamber724300
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communicationpanditadesh123
 
22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...
22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...
22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...KrishnaveniKrishnara1
 

Dernier (20)

Detection&Tracking - Thermal imaging object detection and tracking
Detection&Tracking - Thermal imaging object detection and trackingDetection&Tracking - Thermal imaging object detection and tracking
Detection&Tracking - Thermal imaging object detection and tracking
 
The Satellite applications in telecommunication
The Satellite applications in telecommunicationThe Satellite applications in telecommunication
The Satellite applications in telecommunication
 
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdfComprehensive energy systems.pdf Comprehensive energy systems.pdf
Comprehensive energy systems.pdf Comprehensive energy systems.pdf
 
Javier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptxJavier_Fernandez_CARS_workshop_presentation.pptx
Javier_Fernandez_CARS_workshop_presentation.pptx
 
Structural Integrity Assessment Standards in Nigeria by Engr Nimot Muili
Structural Integrity Assessment Standards in Nigeria by Engr Nimot MuiliStructural Integrity Assessment Standards in Nigeria by Engr Nimot Muili
Structural Integrity Assessment Standards in Nigeria by Engr Nimot Muili
 
Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...
Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...
Analysis and Evaluation of Dal Lake Biomass for Conversion to Fuel/Green fert...
 
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENTFUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
FUNCTIONAL AND NON FUNCTIONAL REQUIREMENT
 
Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...
Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...
Guardians of E-Commerce: Harnessing NLP and Machine Learning Approaches for A...
 
priority interrupt computer organization
priority interrupt computer organizationpriority interrupt computer organization
priority interrupt computer organization
 
Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________Gravity concentration_MI20612MI_________
Gravity concentration_MI20612MI_________
 
Robotics Group 10 (Control Schemes) cse.pdf
Robotics Group 10  (Control Schemes) cse.pdfRobotics Group 10  (Control Schemes) cse.pdf
Robotics Group 10 (Control Schemes) cse.pdf
 
Artificial Intelligence in Power System overview
Artificial Intelligence in Power System overviewArtificial Intelligence in Power System overview
Artificial Intelligence in Power System overview
 
ADM100 Running Book for sap basis domain study
ADM100 Running Book for sap basis domain studyADM100 Running Book for sap basis domain study
ADM100 Running Book for sap basis domain study
 
KCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitosKCD Costa Rica 2024 - Nephio para parvulitos
KCD Costa Rica 2024 - Nephio para parvulitos
 
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMSHigh Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
High Voltage Engineering- OVER VOLTAGES IN ELECTRICAL POWER SYSTEMS
 
CS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdfCS 3251 Programming in c all unit notes pdf
CS 3251 Programming in c all unit notes pdf
 
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdfModule-1-(Building Acoustics) Noise Control (Unit-3). pdf
Module-1-(Building Acoustics) Noise Control (Unit-3). pdf
 
Secure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech LabsSecure Key Crypto - Tech Paper JET Tech Labs
Secure Key Crypto - Tech Paper JET Tech Labs
 
multiple access in wireless communication
multiple access in wireless communicationmultiple access in wireless communication
multiple access in wireless communication
 
22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...
22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...
22CYT12 & Chemistry for Computer Systems_Unit-II-Corrosion & its Control Meth...
 

FiloDB: Reactive, Real-Time, In-Memory Time Series at Scale

  • 1. This is not a contribution FiloDB: Reactive, Real-time, In-Memory 
 Time Series at Scale Evan Chan ( @evanfchan) Apple October 2018
  • 2. This is not a contribution Solving The Time Series Problem
  • 3. This is not a contribution Operational Metrics
  • 4. This is not a contribution Requirements • Massive scale, billions of metrics • Resiliency and maximum uptime • Real time (seconds, not minutes) • Low latency querying • High concurrency (thousands of dashboards, alerts) • Easy debugging - flexible ad-hoc queries
  • 5. This is not a contribution What Users Wanted • Flexible data model and queries, tag-based querying • User-defined “tags” on metrics and data • Prevents abuse of hierarchical system • Can query across regions, other boundaries • Flexible rollups • Longer views of fine grained data • or flexible retention policies
  • 6. This is not a contribution Design for the • Internal cloud @Apple similar to public cloud • Containers and “stateless” apps • Use of Docker, etc. promotes more containers = more metrics • Stateless = more frequent restarts, more UUIDs => more metrics • Leverage hosted cloud services • Hosted Cassandra, Kafka, other data services • Let someone else manage persistent storage
  • 7. Where are we going? Dashboards Real-time Debugging Events Metrics Tracing ??? Real-time ML/ AI Actionable Insights
  • 8. This is not a contribution (Re)Introducing FiloDB A Prometheus-compatible, Distributed, In-Memory Time Series Database OPEN SOURCE! http://www.github.com/filodb/FiloDB Built on the proven reactive SMACK stack.
  • 9. This is not a contribution Core Principles Designed for Cloud Infrastructure Built for Scale and Resiliency Flexible Data Model Multi-Tenant
  • 10. This is not a contribution Proudly built on the Reactive Stack
  • 11. This is not a contribution In-Memory 
 Time Series
  • 12. This is not a contribution
  • 13. This is not a contribution Facebook Gorilla • Keep most recent time series data IN MEMORY, stored using efficient time series encoding techniques • Serve queries using separate process • Allows dense, massively scalable TS storage + very fast, rich queries of recent data • https://github.com/facebookarchive/beringei
  • 14. Operational Metrics Flow Kafka FiloDB Node Cassandra Dashboards Real-time Debugging HTTP Gateway Gateway Gateway App App App Collector App
  • 15. This is not a contribution Shard 1 Shard 0 Data Flow on a NodeRecords Records Records Monix / RX ingestion / back pressure Index Write buffers Write buffers Write buffers Chunks Chunks Chunks Index Write buffers Write buffers Write buffers Chunks Chunks Chunks Encoding Encoding
  • 16. This is not a contribution Columnar Compression timestamp value Row-based timestamp value timestamp value timestamp value timestamp value t1 t2 t3 t4 t5 t6 t7 t8 Column-based v1 v2 v3 v4 v5 v6 v7 v8 • Compressing all timestamps together is much more efficient
  • 17. This is not a contribution Delta-Delta Encoding • Encode increasing numbers (timestamps, counters) as deltas from slope
  • 18. This is not a contribution Results • Millions of time series and billions of samples per node • Up to 1 million samples/sec per node ingestion rate peak (measured during recovery) • Up to 8x better than previous system (Storm/HBase) • Storage density of ~3 bytes per metric sample • About 10x better than previous system (HBase)
  • 19. This is not a contribution Tackling Heap Issues • 60+ second GC pauses / OOM • Filled up old gen, GC stuck finding tiny bit of free space • Solution: move as many permanent objects offheap as possible • Too high rate of allocation on ingest • Temporary objects only, but producing too many • Solution: Switch from Protobuf to custom, no-allocation BinaryRecord
  • 20. This is not a contribution Off-heap Data Structures • BinaryVector - one compressed column of data (say timestamps, or values) • BinaryRecord - one ingestion data record, variable schema • OffheapLFSortedIDMap - offheap lightweight sorted map
  • 21. This is not a contribution Block Moving Object Graphs OffHeap Write buffer Chunks Chunks OffheapOnheap TSPartition WriteBufferObject ConcurrentSkipListMap ID ChunkSetInfo ID ChunkSetInfo ID ChunkSetInfo ID ChunkSetInfo VectorObject VectorObject
  • 22. This is not a contribution Block Moving Object Graphs OffHeap Write buffer Chunks Chunks ChunkMap OffheapOnheap TSPartitionTSPartition WriteBufferObject ChunkSetInfoPartID ChunkSetInfo ConcurrentSkipListMap ID ChunkSetInfo ID ChunkSetInfo ID ChunkSetInfo ID ChunkSetInfo VectorObject VectorObject Ptr Ptr Ptr Ptr
  • 23. This is not a contribution Flexible Distributed Queries
  • 24. This is not a contribution Prometheus Compatible • Don’t reinvent a popular time series query language • Prom HTTP API gives out of box Grafana support sum(http_requests{partition=“P2”,dc="DC0",job="A0"}) by (host) • Filtering/indexing on many time series • Time windowing-based aggregation with multiple windows • Group by
  • 25. This is not a contribution Queries to Logical Plan sum(http_requests{partition=“P2”,dc="DC0",job="A0"}) by (host) Aggregate(Sum,
 PeriodicSeries(
 RawSeries(
 IntervalSelector(t1, t2, step),
 List(ColumnFilter(partition,Equals(P2)),
 ColumnFilter(dc,Equals(DC0)),
 ColumnFilter(job,Equals(A0)),
 ColumnFilter(__name__,Equals(http_requests)) AST
  • 26. This is not a contribution Shard 0 Physical Plan Execution • Location transparency of Akka actors is crucial here ReduceAggregateExec Sum SelectRawPartitionsExec AggregateMapReduce PeriodicSamplesMapper SelectRawPartitionsExec AggregateMapReduce PeriodicSamplesMapper Chunks Chunks Chunks Chunks Shard 1
  • 27. This is not a contribution Shard 0 Physical Plan Execution • Look ma, plan change, no code changes! ReduceAggregateExec Sum SelectRawPartitionsExec AggregateMapReduce PeriodicSamplesMapper SelectRawPartitionsExec AggregateMapReduce PeriodicSamplesMapper Chunks Chunks Chunks Chunks Shard 1 Query Service
  • 28. This is not a contribution Node 2Node 1 Actor Hierarchy NodeCoordinator Actor IngestionActor QueryActor MemStore HTTP NodeCoordinator Actor IngestionActor QueryActor MemStore HTTP CLI / Akka Remote
  • 29. This is not a contribution Comparisons • Queries possible on FiloDB and not on old system: • Tag-based querying (filter, group by etc based on flexible tags) • Histograms and quantiles • Group by and topK queries • Flexible time series joins • 100’s millions samples queried/sec
  • 30. This is not a contribution Datasets and Data Model
  • 31. This is not a contribution What Kind of Data Works? • High cardinality of individual time series (operational metrics, devices, business metrics) • Many data points in each series, append only Series1 {k1=v1, k2=v2} Time Series2 {k1=v3, k2=v4} Series3 {k1=v5, k2=v6}
  • 32. This is not a contribution Flexible Tags • Each time series is defined by a metric name and a unique combination of keys-values • Index on tags allows filter/search by combo of tags memstore_partitions_queried { dataset=timeseries, host=MacBook-Pro-229.local, shard=0 } memstore_partitions_queried { dataset=timeseries, host=MacBook-Pro-229.local, shard=1 }
  • 33. This is not a contribution Flexible Schemas and Datasets • Datasets allow for namespacing different schemas, ingestion sources, SLAs, # shards, and offheap memory isolation • Main dataset with 2-day retention • Pre-aggregates dataset with 1 week retention • Histograms dataset with schema for efficient histogram storage • OpenTracing dataset — start, end, span duration, etc. • Historical data using different schema
  • 34. This is not a contribution The Hard Stuff: Recovery and Persistence
  • 35. This is not a contribution What is persisted? • Raw time series data - using a custom format designed for efficient ingestion & recovery - is stored using and ingested from Apache Kafka • Compressed, columnar time series data is written periodically to a ColumnStore, typically Cassandra • Time series metadata for reconstructing each node’s index is persisted as well
  • 36. Akka Cluster Ingestion and Sharding Kafka Shard0 Shard1 Shard2 Shard3 Shard4 FiloDB Node FiloDB Node FiloDB Node FiloDB Node Gateway S0 S1 S2 S3 S4
  • 37. Recovery Kafka Shard0 Shard1 Shard2 Shard3 Shard4 FiloDB Node FAILU RE FiloDB Node FiloDB Node S0 S1 S2 S3 S4 New Filo Node S2 CassandraChunkSink On-demand paging FiloDB Node S2 Queries to other DC
  • 38. This is not a contribution Recovery • The most recent raw data - before encoding - is recovered by replaying Apache Kafka partitions • Index metadata is recovered • Compressed data is loaded on-demand from Cassandra. This works because most data written is never queried.
  • 39. This is not a contribution FiloDB vs Alternatives
  • 40. This is not a contribution vs Prometheus • FiloDB supports PromQL, HTTP query API • Prometheus is single-node only • FiloDB is multi-schema and multi-tenant • FiloDB designed to run as a resilient, distributed, high-uptime cloud service • FiloDB open source not as rich feature-wise (yet)
  • 41. This is not a contribution vs InfluxDB • FiloDB data model is very close to Influx: multi- schema, multiple columns, namespaces, tags on series FiloDB InfluxDB Clustering Peer to peer distributed Single node (OSS),
 clustered ($$) Query language PromQL SQL (PromQL coming) Maturity New Established
  • 42. This is not a contribution vs Cassandra • C*: Very well established and widely used, robust • Like FiloDB: real time, distributed, low-latency • C*: Very simple queries ideally to one partition • FiloDB: complex PromQL queries, topK, groupBy, time series joins and windowing • FiloDB: much higher storage density and ingestion throughput for time series
  • 43. This is not a contribution vs Druid • Druid and FiloDB have different data models • Druid is an OLAP database with an explicit time dimension. Dimensions are fixed. • FiloDB supports millions/billions of time series with flexible tags • FiloDB stores raw data, Druid stores roll ups
  • 44. This is not a contribution Tradeoffs and Lessons
  • 45. This is not a contribution Tradeoffs of using the JVM • Pluses: solid, proven libraries for building distributed and data systems • Apache Lucene • Akka Cluster • Minuses: Lack of low-level memory layout and control • The devil you know best
  • 46. This is not a contribution JVM Production Tips • Get to know different GCs, Eden, OldGen, G1GC, etc. really really well • SJK (https://github.com/aragozin/jvm-tools) • Runtime visibility • Multiple APIs to access cluster state • JMXbeans • Measure measure measure!! (Use JMH)
  • 47. This is not a contribution Current Status • Development at github.com/filodb/FiloDB • Time/value schema ingestion and querying is stable • Looking for partners to work together, add integrations, etc.
  • 48. This is not a contribution Try it out today • Ingest data using https://github.com/influxdata/ telegraf • Expose a Prometheus HTTP read endpoint in your apps • Use Grafana to visualize metrics
  • 49. This is not a contribution Roadmap • Speed and efficiency improvements in core FiloDB database • Histogram optimizations • Improved cluster state management • Support for Spark/ML/AI jobs and metrics. How can we improve observability for data engineers? • Support for non-metrics schemas • Long term storage
  • 50. This is not a contribution Thank you! • Note: We are hiring! If you love reactive systems, distributed systems, love to push the performance envelope…. there’s a place for you.
  • 51. This is not a contribution Extra Slides
  • 52. This is not a contribution On Heap vs Off HeapRecords Records Records Index Write buffers Write buffers Write buffers Chunks Chunks Chunks Chunks Chunks Chunks ChunkMap ChunkMap ChunkMap OffheapOnheap TSPartition TSPartition TSPartition PartitionMap Lucene MMap Index Files