SlideShare a Scribd company logo
Federating Queries Using postgres fdw
john melesky
Rentrak, Inc
September 17, 2013
Who Am I?
A long-time programmer, working with PostgreSQL in the
cloud
Who Am I?
A long-time programmer, working with PostgreSQL in the
cloud my butt
Who Am I?
A long-time programmer, working with PostgreSQL in the
cloud my butt
Now, a DBA, working with PostgreSQL on real machines with
real disks
Who Am I?
A long-time programmer, working with PostgreSQL in the
cloud my butt
Now, a DBA, working with PostgreSQL on real machines
VMWare with real disks
Who Am I?
A long-time programmer, working with PostgreSQL in the
cloud my butt
Now, a DBA, working with PostgreSQL on real machines
VMWare with real disks NetApps
PostgreSQL inheritance partitioning
create table transactions (
id serial,
user_id bigint,
time_utc timestamp,
int_value bigint,
txt_value text,
primary key (id)
);
create table transactions_201306 (
like transactions including indexes,
check
(time_utc >= ’2013-06-01’ and
time_utc < ’2013-07-01’)
) inherits (transactions);
PostgreSQL inheritance partitioning
create table transactions (
id serial,
user_id bigint,
time_utc timestamp,
int_value bigint,
txt_value text,
primary key (id)
);
create table transactions_201306 (
like transactions including indexes,
check
(time_utc >= ’2013-06-01’ and
time_utc < ’2013-07-01’)
) inherits (transactions);
You know this already
Old-school partitioning
create view transactions as (
select * from transactions_201301
union all
select * from transactions_201302
union all
select * from transactions_201303
union all
select * from transactions_201304
union all
...
);
Why don’t we still use this?
Why don’t we still use this?
1. No insert triggers on views
Why don’t we still use this?
1. No insert triggers on views
2. No ”inherit indexes” without additional misdirection
Why don’t we still use this?
1. No insert triggers on views
2. No ”inherit indexes” without additional misdirection
3. Basically, we have a better option with inheritence partitioning
Postgres Foreign Data Wrapper
-- just once
create extension postgres_fdw;
-- once per data node
create server node0 foreign data wrapper postgres_fdw
options (connection stuff);
create user mapping for app_user server node0;
-- once per table per node
create foreign table transactions_node0
(table definition)
server node0
options (table_name ’transactions’);
Federating, Old-school
create view transactions as (
select * from transactions_node0
union all
select * from transactions_node1
union all
select * from transactions_node2
union all
select * from transactions_node3
union all
...
);
Querying
primary=# explain select count(*) from transactions;
QUERY PLAN
---------------------------------------------------------
Aggregate (cost=1767.38..1767.39 rows=1 width=0)
-> Append (cost=100.00..1699.12 rows=27304 width=0)
-> Foreign Scan on transactions_node0
(cost=100.00..212.39 rows=3413 width=0)
-> Foreign Scan on transactions_node1
(cost=100.00..212.39 rows=3413 width=0)
-> Foreign Scan on transactions_node2
(cost=100.00..212.39 rows=3413 width=0)
-> Foreign Scan on transactions_node3
(cost=100.00..212.39 rows=3413 width=0)
-> Foreign Scan on transactions_node4
(cost=100.00..212.39 rows=3413 width=0)
...
(10 rows)
Time: 1.226 ms
Querying
primary=# explain verbose select count(*) from transactions;
QUERY PLAN
-----------------------------------------------------------------
Aggregate (cost=1767.38..1767.39 rows=1 width=0)
Output: count(*)
-> Append (cost=100.00..1699.12 rows=27304 width=0)
-> Foreign Scan on public.transactions_node0
(cost=100.00..212.39 rows=3413 width=0)
Remote SQL: SELECT NULL FROM public.transactions
-> Foreign Scan on public.transactions_node1
(cost=100.00..212.39 rows=3413 width=0)
Remote SQL: SELECT NULL FROM public.transactions
-> Foreign Scan on public.transactions_node2
(cost=100.00..212.39 rows=3413 width=0)
Remote SQL: SELECT NULL FROM public.transactions
...
(19 rows)
Time: 1.273 ms
Querying
primary=# select count(*) from transactions;
count
---------
1095336
(1 row)
Time: 3035.054 ms
Round-robin
primary
node 0
(id % 4 = 0)
node 1
(id % 4 = 1)
node 2
(id % 4 = 2)
node 3
(id % 4 = 3)
Round-robin
primary=# create foreign table transactions_node0 (
primary(# id serial,
primary(# user_id bigint,
primary(# time_utc timestamp,
primary(# int_value bigint,
primary(# txt_value text,
primary(# check ((id % 8) = 0)
primary(# ) server node0
primary(# options (table_name ’transactions’);
ERROR: constraints are not supported on foreign tables
LINE 6: check ((id % 8) = 0)) server node0 ...
Domain-based (aka ”sharding”)
primary
node 0
(customer = 'bigone')
node 1
(customer in ('bigtwo', 'bigthree')
node 2
(customer in (...))
node 3
(customer in (...))
Range-based
primary
node 0
(date between '2013-01-01' and '2013-01-31')
node 1
(date between ...)
node 2
(date between ...)
node 3
date between ...)
Table-based
primary
node 0
(users table(s))
node 1
(transactions table)
node 2
(session tables)
Multi-head
primary1
node0 node1node2 node3
primary2
Multi-head
primary1
node0 node1node2 node3
primary2primary3 primary4
Demo time
Limitations: Network traffic
Limitations: Network traffic
primary=# select count(*) from transactions_local;
count
---------
1095336
(1 row)
Time: 209.097 ms
Limitations: Network traffic
primary=# select count(*) from transactions_local;
count
---------
1095336
(1 row)
Time: 209.097 ms
primary=# select count(*) from transactions_primary;
count
---------
1095336
(1 row)
Time: 2867.385 ms
Limitations: Dumb queries
Limitations: Dumb queries
primary=# explain verbose select count(*) from transactions;
QUERY PLAN
-----------------------------------------------------------------
Aggregate (cost=1767.38..1767.39 rows=1 width=0)
Output: count(*)
-> Append (cost=100.00..1699.12 rows=27304 width=0)
-> Foreign Scan on public.transactions_node0
(cost=100.00..212.39 rows=3413 width=0)
Remote SQL: SELECT NULL FROM public.transactions
...
Limitations: Dumb queries
primary=# explain verbose select count(*) from transactions;
QUERY PLAN
-----------------------------------------------------------------
Aggregate (cost=1767.38..1767.39 rows=1 width=0)
Output: count(*)
-> Append (cost=100.00..1699.12 rows=27304 width=0)
-> Foreign Scan on public.transactions_node0
(cost=100.00..212.39 rows=3413 width=0)
Remote SQL: SELECT NULL FROM public.transactions
...
primary=# explain verbose select avg(int_value) from transactions;
QUERY PLAN
--------------------------------------------------------------------------
Aggregate (cost=1545.60..1545.61 rows=1 width=8)
Output: avg(transactions_node0.int_value)
-> Append (cost=100.00..1494.40 rows=20480 width=8)
-> Foreign Scan on public.transactions_node0
(cost=100.00..186.80 rows=2560 width=8)
Output: transactions_node0.int_value
Remote SQL: SELECT int_value FROM public.transactions
...
Limitations: Dumb queries
select type, count(*)
from users
group by type
order by 2 desc;
Limitations: Joins
Limitations: Joins
select count(*)
from transactions t, users u
where t.user_id = u.id
and u.type = ’mistaken’;
Limitations: Keys
Limitations: Keys
’Nuff said
Limitations: Constraint exclusion
Remember this?
ERROR: constraints are not supported on foreign tables
LINE 6: check ((id % 8) = 0)) server node0 ....
Limitations: Single-threaded executer
Limitations: Single-threaded executer
How many nodes do you have?
Limitations: Single-threaded executer
How many nodes do you have?
Do you know what they’re doing?
Strategies
Large working set, small nodes
Node-level partitioning
Heavy distributed processing
Multi-head
Strategy: Large working set, small nodes
Strategy: Large working set, small nodes
Your working set is larger than one node’s RAM
Strategy: Large working set, small nodes
Your working set is larger than one node’s RAM
... but you have lots of nodes
Strategy: Large working set, small nodes
Your working set is larger than one node’s RAM
... but you have lots of nodes
(and network is faster than disk)
Strategy: Large working set, small nodes
Your working set is larger than one node’s RAM
... but you have lots of nodes
(and network is faster than disk)
This might be worth looking into if you’re on AWS, but
please, please test it first
Strategy: Node-level partitioning
Like parititioning, but with a separate node per partition group!
Strategy: Node-level partitioning
Like parititioning, but with a separate node per partition group!
As a total strategy, this is probably not worthwhile. However, it
can work with a fast ”current data” node combining with slower
”archived data” nodes.
Heavy distributed processing
Heavy distributed processing
Take advantage of lots of CPUs
Heavy distributed processing
Take advantage of lots of CPUs
Works well when you have node-discrete workloads
Heavy distributed processing
Take advantage of lots of CPUs
Works well when you have node-discrete workloads
Lock management can become a bit hairier
Heavy distributed processing
Take advantage of lots of CPUs
Works well when you have node-discrete workloads
Lock management can become a bit hairier
This might actually be a useful use case
Multi-headed
Multi-headed
Like replication, but with no overhead or delay!
Multi-headed
Like replication, but with no overhead or delay!
Also, no storage overhead!
Multi-headed
Like replication, but with no overhead or delay!
Also, no storage overhead!
Might work well with the distributed processing setup
Multi-headed
Like replication, but with no overhead or delay!
Also, no storage overhead!
Might work well with the distributed processing setup
In fact, given the overhead that lands on the head node, it
might be necessary for a working FDW federation setup
Pan-Strategy Advice
Pan-Strategy Advice
Think very carefully about what tables should live where
Pan-Strategy Advice
Think very carefully about what tables should live where
Think very carefully about tuning settings (especially on your
head node)
work mem
shared buffers
temp buffers
Pan-Strategy Advice
Think very carefully about what tables should live where
Think very carefully about tuning settings (especially on your
head node)
work mem
shared buffers
temp buffers
Think very carefully about how many data nodes you want
Pan-Strategy Advice
Think very carefully about what tables should live where
Think very carefully about tuning settings (especially on your
head node)
work mem
shared buffers
temp buffers
Think very carefully about how many data nodes you want
Think very carefully about network vs. disk vs. dumb-query
costs
Pan-Strategy Advice
Think very carefully about what tables should live where
Think very carefully about tuning settings (especially on your
head node)
work mem
shared buffers
temp buffers
Think very carefully about how many data nodes you want
Think very carefully about network vs. disk vs. dumb-query
costs
Think very carefully!
Thanks!
Questions?
Any questions?
Questions?
Any questions?
John, do you use this approach for your databases?
Questions?
Any questions?
John, do you use this approach for your databases?
Why not?
Thanks!
Thanks!
Plug: Stephen Frost has another postgres fdw talk tomorrow
Thanks!
Plug: Stephen Frost has another postgres fdw talk tomorrow
Also: Rentrak is hiring: programmers, sysadmins, and devops
Federating Queries Using postgres fdw
Introduction
Who am I?
Partitioning
PostgreSQL inheritance partitioning
Old-school partitioning
Federating Queries
Federation Strategies Overview
Trial and Error
Demo
Limitations
Strategies
Wrap-up

More Related Content

What's hot (20)

Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Ontico
 
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei MilovidovClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei Milovidov
Altinity Ltd
 
ROracle
ROracle ROracle
ROracle
Mohamed Magdy
 
Full Text Search in PostgreSQL
Full Text Search in PostgreSQLFull Text Search in PostgreSQL
Full Text Search in PostgreSQL
Aleksander Alekseev
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
Altinity Ltd
 
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEOClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
Altinity Ltd
 
PostgreSQL 9.4 JSON Types and Operators
PostgreSQL 9.4 JSON Types and OperatorsPostgreSQL 9.4 JSON Types and Operators
PostgreSQL 9.4 JSON Types and Operators
Nicholas Kiraly
 
PostgreSQL: Advanced indexing
PostgreSQL: Advanced indexingPostgreSQL: Advanced indexing
PostgreSQL: Advanced indexing
Hans-Jürgen Schönig
 
A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...
A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...
A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...
Altinity Ltd
 
ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...
ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...
ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...
Altinity Ltd
 
PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개
PgDay.Seoul
 
Using PostgreSQL statistics to optimize performance
Using PostgreSQL statistics to optimize performance Using PostgreSQL statistics to optimize performance
Using PostgreSQL statistics to optimize performance
Alexey Ermakov
 
PostgreSQL query planner's internals
PostgreSQL query planner's internalsPostgreSQL query planner's internals
PostgreSQL query planner's internals
Alexey Ermakov
 
Monitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry PiMonitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
InfluxData
 
MariaDB and Clickhouse Percona Live 2019 talk
MariaDB and Clickhouse Percona Live 2019 talkMariaDB and Clickhouse Percona Live 2019 talk
MariaDB and Clickhouse Percona Live 2019 talk
Alexander Rubin
 
Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...
Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...
Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...
Altinity Ltd
 
Tiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEOTiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEO
Altinity Ltd
 
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
PgDay.Seoul
 
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEOTricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Altinity Ltd
 
Webinar: Secrets of ClickHouse Query Performance, by Robert Hodges
Webinar: Secrets of ClickHouse Query Performance, by Robert HodgesWebinar: Secrets of ClickHouse Query Performance, by Robert Hodges
Webinar: Secrets of ClickHouse Query Performance, by Robert Hodges
Altinity Ltd
 
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Новые возможности полнотекстового поиска в PostgreSQL / Олег Бартунов (Postgr...
Ontico
 
ClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei MilovidovClickHouse Features for Advanced Users, by Aleksei Milovidov
ClickHouse Features for Advanced Users, by Aleksei Milovidov
Altinity Ltd
 
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
New features in ProxySQL 2.0 (updated to 2.0.9) by Rene Cannao (ProxySQL)
Altinity Ltd
 
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEOClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
ClickHouse tips and tricks. Webinar slides. By Robert Hodges, Altinity CEO
Altinity Ltd
 
PostgreSQL 9.4 JSON Types and Operators
PostgreSQL 9.4 JSON Types and OperatorsPostgreSQL 9.4 JSON Types and Operators
PostgreSQL 9.4 JSON Types and Operators
Nicholas Kiraly
 
A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...
A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...
A Practical Introduction to Handling Log Data in ClickHouse, by Robert Hodges...
Altinity Ltd
 
ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...
ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...
ClickHouse and the Magic of Materialized Views, By Robert Hodges and Altinity...
Altinity Ltd
 
PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개PostgreSQL 9.6 새 기능 소개
PostgreSQL 9.6 새 기능 소개
PgDay.Seoul
 
Using PostgreSQL statistics to optimize performance
Using PostgreSQL statistics to optimize performance Using PostgreSQL statistics to optimize performance
Using PostgreSQL statistics to optimize performance
Alexey Ermakov
 
PostgreSQL query planner's internals
PostgreSQL query planner's internalsPostgreSQL query planner's internals
PostgreSQL query planner's internals
Alexey Ermakov
 
Monitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry PiMonitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
Monitoring Your ISP Using InfluxDB Cloud and Raspberry Pi
InfluxData
 
MariaDB and Clickhouse Percona Live 2019 talk
MariaDB and Clickhouse Percona Live 2019 talkMariaDB and Clickhouse Percona Live 2019 talk
MariaDB and Clickhouse Percona Live 2019 talk
Alexander Rubin
 
Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...
Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...
Big Data in Real-Time: How ClickHouse powers Admiral's visitor relationships ...
Altinity Ltd
 
Tiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEOTiered storage intro. By Robert Hodges, Altinity CEO
Tiered storage intro. By Robert Hodges, Altinity CEO
Altinity Ltd
 
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
[Pgday.Seoul 2017] 3. PostgreSQL WAL Buffers, Clog Buffers Deep Dive - 이근오
PgDay.Seoul
 
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEOTricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Tricks every ClickHouse designer should know, by Robert Hodges, Altinity CEO
Altinity Ltd
 
Webinar: Secrets of ClickHouse Query Performance, by Robert Hodges
Webinar: Secrets of ClickHouse Query Performance, by Robert HodgesWebinar: Secrets of ClickHouse Query Performance, by Robert Hodges
Webinar: Secrets of ClickHouse Query Performance, by Robert Hodges
Altinity Ltd
 

Similar to John Melesky - Federating Queries Using Postgres FDW @ Postgres Open (20)

Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
Wim Godden
 
Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...
Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...
Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...
Altinity Ltd
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
Wim Godden
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
Wim Godden
 
Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014
Michael Renner
 
MySQL 5.7 in a Nutshell
MySQL 5.7 in a NutshellMySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
Emily Ikuta
 
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
Masayuki Matsushita
 
JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course
JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course
JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course
PROIDEA
 
MongoDB Auto-Sharding at Mongo Seattle
MongoDB Auto-Sharding at Mongo SeattleMongoDB Auto-Sharding at Mongo Seattle
MongoDB Auto-Sharding at Mongo Seattle
MongoDB
 
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
MariaDB plc
 
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
MariaDB plc
 
query-optimization-techniques_talk.pdf
query-optimization-techniques_talk.pdfquery-optimization-techniques_talk.pdf
query-optimization-techniques_talk.pdf
garos1
 
Apache Cassandra at Macys
Apache Cassandra at MacysApache Cassandra at Macys
Apache Cassandra at Macys
DataStax Academy
 
Using R on Netezza
Using R on NetezzaUsing R on Netezza
Using R on Netezza
Ajay Ohri
 
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
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
Satoshi Nagayasu
 
High Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouseHigh Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouse
Altinity Ltd
 
Meetup cassandra for_java_cql
Meetup cassandra for_java_cqlMeetup cassandra for_java_cql
Meetup cassandra for_java_cql
zznate
 
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
InfluxData
 
Gur1009
Gur1009Gur1009
Gur1009
Cdiscount
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
Wim Godden
 
Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...
Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...
Analytics at Speed: Introduction to ClickHouse and Common Use Cases. By Mikha...
Altinity Ltd
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
Wim Godden
 
Beyond php - it's not (just) about the code
Beyond php - it's not (just) about the codeBeyond php - it's not (just) about the code
Beyond php - it's not (just) about the code
Wim Godden
 
Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014Postgres Vienna DB Meetup 2014
Postgres Vienna DB Meetup 2014
Michael Renner
 
MySQL 5.7 in a Nutshell
MySQL 5.7 in a NutshellMySQL 5.7 in a Nutshell
MySQL 5.7 in a Nutshell
Emily Ikuta
 
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
クラウドDWHとしても進化を続けるPivotal Greenplumご紹介
Masayuki Matsushita
 
JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course
JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course
JDD 2016 - Tomasz Borek - DB for next project? Why, Postgres, of course
PROIDEA
 
MongoDB Auto-Sharding at Mongo Seattle
MongoDB Auto-Sharding at Mongo SeattleMongoDB Auto-Sharding at Mongo Seattle
MongoDB Auto-Sharding at Mongo Seattle
MongoDB
 
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
MariaDB plc
 
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
What's New in MariaDB Server 10.2 and MariaDB MaxScale 2.1
MariaDB plc
 
query-optimization-techniques_talk.pdf
query-optimization-techniques_talk.pdfquery-optimization-techniques_talk.pdf
query-optimization-techniques_talk.pdf
garos1
 
Using R on Netezza
Using R on NetezzaUsing R on Netezza
Using R on Netezza
Ajay Ohri
 
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
 
10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL10 Reasons to Start Your Analytics Project with PostgreSQL
10 Reasons to Start Your Analytics Project with PostgreSQL
Satoshi Nagayasu
 
High Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouseHigh Performance, High Reliability Data Loading on ClickHouse
High Performance, High Reliability Data Loading on ClickHouse
Altinity Ltd
 
Meetup cassandra for_java_cql
Meetup cassandra for_java_cqlMeetup cassandra for_java_cql
Meetup cassandra for_java_cql
zznate
 
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
Optimizing InfluxDB Performance in the Real World by Dean Sheehan, Senior Dir...
InfluxData
 
Ad

More from PostgresOpen (18)

Bruce Momjian - Inside PostgreSQL Shared Memory @ Postgres Open
Bruce Momjian - Inside PostgreSQL Shared Memory @ Postgres OpenBruce Momjian - Inside PostgreSQL Shared Memory @ Postgres Open
Bruce Momjian - Inside PostgreSQL Shared Memory @ Postgres Open
PostgresOpen
 
Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...
Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...
Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...
PostgresOpen
 
Keith Fiske - When PostgreSQL Can't, You Can @ Postgres Open
Keith Fiske - When PostgreSQL Can't, You Can @ Postgres OpenKeith Fiske - When PostgreSQL Can't, You Can @ Postgres Open
Keith Fiske - When PostgreSQL Can't, You Can @ Postgres Open
PostgresOpen
 
David Keeney - SQL Database Server Requests from the Browser @ Postgres Open
David Keeney - SQL Database Server Requests from the Browser @ Postgres OpenDavid Keeney - SQL Database Server Requests from the Browser @ Postgres Open
David Keeney - SQL Database Server Requests from the Browser @ Postgres Open
PostgresOpen
 
Keith Paskett - Postgres on ZFS @ Postgres Open
Keith Paskett - Postgres on ZFS @ Postgres OpenKeith Paskett - Postgres on ZFS @ Postgres Open
Keith Paskett - Postgres on ZFS @ Postgres Open
PostgresOpen
 
Kevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres Open
PostgresOpen
 
Craig Kerstiens - Scalable Uniques in Postgres @ Postgres Open
Craig Kerstiens - Scalable Uniques in Postgres @ Postgres OpenCraig Kerstiens - Scalable Uniques in Postgres @ Postgres Open
Craig Kerstiens - Scalable Uniques in Postgres @ Postgres Open
PostgresOpen
 
Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...
Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...
Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...
PostgresOpen
 
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres OpenSteve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
PostgresOpen
 
Koichi Suzuki - Postgres-XC Dynamic Cluster Management @ Postgres Open
Koichi Suzuki - Postgres-XC Dynamic Cluster  Management @ Postgres OpenKoichi Suzuki - Postgres-XC Dynamic Cluster  Management @ Postgres Open
Koichi Suzuki - Postgres-XC Dynamic Cluster Management @ Postgres Open
PostgresOpen
 
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
PostgresOpen
 
Robert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres Open
Robert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres OpenRobert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres Open
Robert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres Open
PostgresOpen
 
Michael Paquier - Taking advantage of custom bgworkers @ Postgres Open
Michael Paquier - Taking advantage of custom bgworkers @ Postgres OpenMichael Paquier - Taking advantage of custom bgworkers @ Postgres Open
Michael Paquier - Taking advantage of custom bgworkers @ Postgres Open
PostgresOpen
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
PostgresOpen
 
Michael Bayer Introduction to SQLAlchemy @ Postgres Open
Michael Bayer Introduction to SQLAlchemy @ Postgres OpenMichael Bayer Introduction to SQLAlchemy @ Postgres Open
Michael Bayer Introduction to SQLAlchemy @ Postgres Open
PostgresOpen
 
Robert Haas Query Planning Gone Wrong Presentation @ Postgres Open
Robert Haas Query Planning Gone Wrong Presentation @ Postgres OpenRobert Haas Query Planning Gone Wrong Presentation @ Postgres Open
Robert Haas Query Planning Gone Wrong Presentation @ Postgres Open
PostgresOpen
 
Ryan Jarvinen Open Shift Talk @ Postgres Open 2013
Ryan Jarvinen Open Shift Talk @ Postgres Open 2013Ryan Jarvinen Open Shift Talk @ Postgres Open 2013
Ryan Jarvinen Open Shift Talk @ Postgres Open 2013
PostgresOpen
 
Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013
Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013
Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013
PostgresOpen
 
Bruce Momjian - Inside PostgreSQL Shared Memory @ Postgres Open
Bruce Momjian - Inside PostgreSQL Shared Memory @ Postgres OpenBruce Momjian - Inside PostgreSQL Shared Memory @ Postgres Open
Bruce Momjian - Inside PostgreSQL Shared Memory @ Postgres Open
PostgresOpen
 
Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...
Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...
Gurjeet Singh - How Postgres is Different From (Better Tha) Your RDBMS @ Post...
PostgresOpen
 
Keith Fiske - When PostgreSQL Can't, You Can @ Postgres Open
Keith Fiske - When PostgreSQL Can't, You Can @ Postgres OpenKeith Fiske - When PostgreSQL Can't, You Can @ Postgres Open
Keith Fiske - When PostgreSQL Can't, You Can @ Postgres Open
PostgresOpen
 
David Keeney - SQL Database Server Requests from the Browser @ Postgres Open
David Keeney - SQL Database Server Requests from the Browser @ Postgres OpenDavid Keeney - SQL Database Server Requests from the Browser @ Postgres Open
David Keeney - SQL Database Server Requests from the Browser @ Postgres Open
PostgresOpen
 
Keith Paskett - Postgres on ZFS @ Postgres Open
Keith Paskett - Postgres on ZFS @ Postgres OpenKeith Paskett - Postgres on ZFS @ Postgres Open
Keith Paskett - Postgres on ZFS @ Postgres Open
PostgresOpen
 
Kevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter - PostgreSQL Backup and Recovery Methods @ Postgres Open
PostgresOpen
 
Craig Kerstiens - Scalable Uniques in Postgres @ Postgres Open
Craig Kerstiens - Scalable Uniques in Postgres @ Postgres OpenCraig Kerstiens - Scalable Uniques in Postgres @ Postgres Open
Craig Kerstiens - Scalable Uniques in Postgres @ Postgres Open
PostgresOpen
 
Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...
Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...
Henrietta Dombrovskaya - A New Approach to Resolve Object-Relational Impedanc...
PostgresOpen
 
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres OpenSteve Singer - Managing PostgreSQL with Puppet @ Postgres Open
Steve Singer - Managing PostgreSQL with Puppet @ Postgres Open
PostgresOpen
 
Koichi Suzuki - Postgres-XC Dynamic Cluster Management @ Postgres Open
Koichi Suzuki - Postgres-XC Dynamic Cluster  Management @ Postgres OpenKoichi Suzuki - Postgres-XC Dynamic Cluster  Management @ Postgres Open
Koichi Suzuki - Postgres-XC Dynamic Cluster Management @ Postgres Open
PostgresOpen
 
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...Selena Deckelmann - Sane Schema Management with  Alembic and SQLAlchemy @ Pos...
Selena Deckelmann - Sane Schema Management with Alembic and SQLAlchemy @ Pos...
PostgresOpen
 
Robert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres Open
Robert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres OpenRobert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres Open
Robert Bernier - Recovering From A Damaged PostgreSQL Cluster @ Postgres Open
PostgresOpen
 
Michael Paquier - Taking advantage of custom bgworkers @ Postgres Open
Michael Paquier - Taking advantage of custom bgworkers @ Postgres OpenMichael Paquier - Taking advantage of custom bgworkers @ Postgres Open
Michael Paquier - Taking advantage of custom bgworkers @ Postgres Open
PostgresOpen
 
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres OpenKevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
Kevin Kempter PostgreSQL Backup and Recovery Methods @ Postgres Open
PostgresOpen
 
Michael Bayer Introduction to SQLAlchemy @ Postgres Open
Michael Bayer Introduction to SQLAlchemy @ Postgres OpenMichael Bayer Introduction to SQLAlchemy @ Postgres Open
Michael Bayer Introduction to SQLAlchemy @ Postgres Open
PostgresOpen
 
Robert Haas Query Planning Gone Wrong Presentation @ Postgres Open
Robert Haas Query Planning Gone Wrong Presentation @ Postgres OpenRobert Haas Query Planning Gone Wrong Presentation @ Postgres Open
Robert Haas Query Planning Gone Wrong Presentation @ Postgres Open
PostgresOpen
 
Ryan Jarvinen Open Shift Talk @ Postgres Open 2013
Ryan Jarvinen Open Shift Talk @ Postgres Open 2013Ryan Jarvinen Open Shift Talk @ Postgres Open 2013
Ryan Jarvinen Open Shift Talk @ Postgres Open 2013
PostgresOpen
 
Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013
Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013
Andrew Dunstan 9.3 JSON Presentation @ Postgres Open 2013
PostgresOpen
 
Ad

Recently uploaded (20)

No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven InfrastructureNo-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdfvertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
If You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FMEIf You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FME
Safe Software
 
TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementaryMurdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Trends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary MeekerTrends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary Meeker
Clive Dickens
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdfCrypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry ReportThe State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too LateKubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free DownloadViral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven InfrastructureNo-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
No-Code Workflows for CAD & 3D Data: Scaling AI-Driven Infrastructure
Safe Software
 
Edge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdfEdge-banding-machines-edgeteq-s-200-en-.pdf
Edge-banding-machines-edgeteq-s-200-en-.pdf
AmirStern2
 
Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.Introduction to Internet of things .ppt.
Introduction to Internet of things .ppt.
hok12341073
 
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdfvertical-cnc-processing-centers-drillteq-v-200-en.pdf
vertical-cnc-processing-centers-drillteq-v-200-en.pdf
AmirStern2
 
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
Can We Use Rust to Develop Extensions for PostgreSQL? (POSETTE: An Event for ...
NTT DATA Technology & Innovation
 
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Creating an Accessible Future-How AI-powered Accessibility Testing is Shaping...
Impelsys Inc.
 
If You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FMEIf You Use Databricks, You Definitely Need FME
If You Use Databricks, You Definitely Need FME
Safe Software
 
TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025TimeSeries Machine Learning - PyData London 2025
TimeSeries Machine Learning - PyData London 2025
Suyash Joshi
 
Murdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementaryMurdledescargadarkweb.pdfvolumen1 100 elementary
Murdledescargadarkweb.pdfvolumen1 100 elementary
JorgeSemperteguiMont
 
Trends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary MeekerTrends Artificial Intelligence - Mary Meeker
Trends Artificial Intelligence - Mary Meeker
Clive Dickens
 
Crypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdfCrypto Super 500 - 14th Report - June2025.pdf
Crypto Super 500 - 14th Report - June2025.pdf
Stephen Perrenod
 
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdfHow Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
How Advanced Environmental Detection Is Revolutionizing Oil & Gas Safety.pdf
Rejig Digital
 
June Patch Tuesday
June Patch TuesdayJune Patch Tuesday
June Patch Tuesday
Ivanti
 
The State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry ReportThe State of Web3 Industry- Industry Report
The State of Web3 Industry- Industry Report
Liveplex
 
Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025Mastering AI Workflows with FME - Peak of Data & AI 2025
Mastering AI Workflows with FME - Peak of Data & AI 2025
Safe Software
 
Oracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI FoundationsOracle Cloud Infrastructure AI Foundations
Oracle Cloud Infrastructure AI Foundations
VICTOR MAESTRE RAMIREZ
 
Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...Bridging the divide: A conversation on tariffs today in the book industry - T...
Bridging the divide: A conversation on tariffs today in the book industry - T...
BookNet Canada
 
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025Developing Schemas with FME and Excel - Peak of Data & AI 2025
Developing Schemas with FME and Excel - Peak of Data & AI 2025
Safe Software
 
Kubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too LateKubernetes Security Act Now Before It’s Too Late
Kubernetes Security Act Now Before It’s Too Late
Michael Furman
 
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free DownloadViral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Viral>Wondershare Filmora 14.5.18.12900 Crack Free Download
Puppy jhon
 

John Melesky - Federating Queries Using Postgres FDW @ Postgres Open

  • 1. Federating Queries Using postgres fdw john melesky Rentrak, Inc September 17, 2013
  • 2. Who Am I? A long-time programmer, working with PostgreSQL in the cloud
  • 3. Who Am I? A long-time programmer, working with PostgreSQL in the cloud my butt
  • 4. Who Am I? A long-time programmer, working with PostgreSQL in the cloud my butt Now, a DBA, working with PostgreSQL on real machines with real disks
  • 5. Who Am I? A long-time programmer, working with PostgreSQL in the cloud my butt Now, a DBA, working with PostgreSQL on real machines VMWare with real disks
  • 6. Who Am I? A long-time programmer, working with PostgreSQL in the cloud my butt Now, a DBA, working with PostgreSQL on real machines VMWare with real disks NetApps
  • 7. PostgreSQL inheritance partitioning create table transactions ( id serial, user_id bigint, time_utc timestamp, int_value bigint, txt_value text, primary key (id) ); create table transactions_201306 ( like transactions including indexes, check (time_utc >= ’2013-06-01’ and time_utc < ’2013-07-01’) ) inherits (transactions);
  • 8. PostgreSQL inheritance partitioning create table transactions ( id serial, user_id bigint, time_utc timestamp, int_value bigint, txt_value text, primary key (id) ); create table transactions_201306 ( like transactions including indexes, check (time_utc >= ’2013-06-01’ and time_utc < ’2013-07-01’) ) inherits (transactions); You know this already
  • 9. Old-school partitioning create view transactions as ( select * from transactions_201301 union all select * from transactions_201302 union all select * from transactions_201303 union all select * from transactions_201304 union all ... );
  • 10. Why don’t we still use this?
  • 11. Why don’t we still use this? 1. No insert triggers on views
  • 12. Why don’t we still use this? 1. No insert triggers on views 2. No ”inherit indexes” without additional misdirection
  • 13. Why don’t we still use this? 1. No insert triggers on views 2. No ”inherit indexes” without additional misdirection 3. Basically, we have a better option with inheritence partitioning
  • 14. Postgres Foreign Data Wrapper -- just once create extension postgres_fdw; -- once per data node create server node0 foreign data wrapper postgres_fdw options (connection stuff); create user mapping for app_user server node0; -- once per table per node create foreign table transactions_node0 (table definition) server node0 options (table_name ’transactions’);
  • 15. Federating, Old-school create view transactions as ( select * from transactions_node0 union all select * from transactions_node1 union all select * from transactions_node2 union all select * from transactions_node3 union all ... );
  • 16. Querying primary=# explain select count(*) from transactions; QUERY PLAN --------------------------------------------------------- Aggregate (cost=1767.38..1767.39 rows=1 width=0) -> Append (cost=100.00..1699.12 rows=27304 width=0) -> Foreign Scan on transactions_node0 (cost=100.00..212.39 rows=3413 width=0) -> Foreign Scan on transactions_node1 (cost=100.00..212.39 rows=3413 width=0) -> Foreign Scan on transactions_node2 (cost=100.00..212.39 rows=3413 width=0) -> Foreign Scan on transactions_node3 (cost=100.00..212.39 rows=3413 width=0) -> Foreign Scan on transactions_node4 (cost=100.00..212.39 rows=3413 width=0) ... (10 rows) Time: 1.226 ms
  • 17. Querying primary=# explain verbose select count(*) from transactions; QUERY PLAN ----------------------------------------------------------------- Aggregate (cost=1767.38..1767.39 rows=1 width=0) Output: count(*) -> Append (cost=100.00..1699.12 rows=27304 width=0) -> Foreign Scan on public.transactions_node0 (cost=100.00..212.39 rows=3413 width=0) Remote SQL: SELECT NULL FROM public.transactions -> Foreign Scan on public.transactions_node1 (cost=100.00..212.39 rows=3413 width=0) Remote SQL: SELECT NULL FROM public.transactions -> Foreign Scan on public.transactions_node2 (cost=100.00..212.39 rows=3413 width=0) Remote SQL: SELECT NULL FROM public.transactions ... (19 rows) Time: 1.273 ms
  • 18. Querying primary=# select count(*) from transactions; count --------- 1095336 (1 row) Time: 3035.054 ms
  • 19. Round-robin primary node 0 (id % 4 = 0) node 1 (id % 4 = 1) node 2 (id % 4 = 2) node 3 (id % 4 = 3)
  • 20. Round-robin primary=# create foreign table transactions_node0 ( primary(# id serial, primary(# user_id bigint, primary(# time_utc timestamp, primary(# int_value bigint, primary(# txt_value text, primary(# check ((id % 8) = 0) primary(# ) server node0 primary(# options (table_name ’transactions’); ERROR: constraints are not supported on foreign tables LINE 6: check ((id % 8) = 0)) server node0 ...
  • 21. Domain-based (aka ”sharding”) primary node 0 (customer = 'bigone') node 1 (customer in ('bigtwo', 'bigthree') node 2 (customer in (...)) node 3 (customer in (...))
  • 22. Range-based primary node 0 (date between '2013-01-01' and '2013-01-31') node 1 (date between ...) node 2 (date between ...) node 3 date between ...)
  • 23. Table-based primary node 0 (users table(s)) node 1 (transactions table) node 2 (session tables)
  • 28. Limitations: Network traffic primary=# select count(*) from transactions_local; count --------- 1095336 (1 row) Time: 209.097 ms
  • 29. Limitations: Network traffic primary=# select count(*) from transactions_local; count --------- 1095336 (1 row) Time: 209.097 ms primary=# select count(*) from transactions_primary; count --------- 1095336 (1 row) Time: 2867.385 ms
  • 31. Limitations: Dumb queries primary=# explain verbose select count(*) from transactions; QUERY PLAN ----------------------------------------------------------------- Aggregate (cost=1767.38..1767.39 rows=1 width=0) Output: count(*) -> Append (cost=100.00..1699.12 rows=27304 width=0) -> Foreign Scan on public.transactions_node0 (cost=100.00..212.39 rows=3413 width=0) Remote SQL: SELECT NULL FROM public.transactions ...
  • 32. Limitations: Dumb queries primary=# explain verbose select count(*) from transactions; QUERY PLAN ----------------------------------------------------------------- Aggregate (cost=1767.38..1767.39 rows=1 width=0) Output: count(*) -> Append (cost=100.00..1699.12 rows=27304 width=0) -> Foreign Scan on public.transactions_node0 (cost=100.00..212.39 rows=3413 width=0) Remote SQL: SELECT NULL FROM public.transactions ... primary=# explain verbose select avg(int_value) from transactions; QUERY PLAN -------------------------------------------------------------------------- Aggregate (cost=1545.60..1545.61 rows=1 width=8) Output: avg(transactions_node0.int_value) -> Append (cost=100.00..1494.40 rows=20480 width=8) -> Foreign Scan on public.transactions_node0 (cost=100.00..186.80 rows=2560 width=8) Output: transactions_node0.int_value Remote SQL: SELECT int_value FROM public.transactions ...
  • 33. Limitations: Dumb queries select type, count(*) from users group by type order by 2 desc;
  • 35. Limitations: Joins select count(*) from transactions t, users u where t.user_id = u.id and u.type = ’mistaken’;
  • 38. Limitations: Constraint exclusion Remember this? ERROR: constraints are not supported on foreign tables LINE 6: check ((id % 8) = 0)) server node0 ....
  • 40. Limitations: Single-threaded executer How many nodes do you have?
  • 41. Limitations: Single-threaded executer How many nodes do you have? Do you know what they’re doing?
  • 42. Strategies Large working set, small nodes Node-level partitioning Heavy distributed processing Multi-head
  • 43. Strategy: Large working set, small nodes
  • 44. Strategy: Large working set, small nodes Your working set is larger than one node’s RAM
  • 45. Strategy: Large working set, small nodes Your working set is larger than one node’s RAM ... but you have lots of nodes
  • 46. Strategy: Large working set, small nodes Your working set is larger than one node’s RAM ... but you have lots of nodes (and network is faster than disk)
  • 47. Strategy: Large working set, small nodes Your working set is larger than one node’s RAM ... but you have lots of nodes (and network is faster than disk) This might be worth looking into if you’re on AWS, but please, please test it first
  • 48. Strategy: Node-level partitioning Like parititioning, but with a separate node per partition group!
  • 49. Strategy: Node-level partitioning Like parititioning, but with a separate node per partition group! As a total strategy, this is probably not worthwhile. However, it can work with a fast ”current data” node combining with slower ”archived data” nodes.
  • 51. Heavy distributed processing Take advantage of lots of CPUs
  • 52. Heavy distributed processing Take advantage of lots of CPUs Works well when you have node-discrete workloads
  • 53. Heavy distributed processing Take advantage of lots of CPUs Works well when you have node-discrete workloads Lock management can become a bit hairier
  • 54. Heavy distributed processing Take advantage of lots of CPUs Works well when you have node-discrete workloads Lock management can become a bit hairier This might actually be a useful use case
  • 56. Multi-headed Like replication, but with no overhead or delay!
  • 57. Multi-headed Like replication, but with no overhead or delay! Also, no storage overhead!
  • 58. Multi-headed Like replication, but with no overhead or delay! Also, no storage overhead! Might work well with the distributed processing setup
  • 59. Multi-headed Like replication, but with no overhead or delay! Also, no storage overhead! Might work well with the distributed processing setup In fact, given the overhead that lands on the head node, it might be necessary for a working FDW federation setup
  • 61. Pan-Strategy Advice Think very carefully about what tables should live where
  • 62. Pan-Strategy Advice Think very carefully about what tables should live where Think very carefully about tuning settings (especially on your head node) work mem shared buffers temp buffers
  • 63. Pan-Strategy Advice Think very carefully about what tables should live where Think very carefully about tuning settings (especially on your head node) work mem shared buffers temp buffers Think very carefully about how many data nodes you want
  • 64. Pan-Strategy Advice Think very carefully about what tables should live where Think very carefully about tuning settings (especially on your head node) work mem shared buffers temp buffers Think very carefully about how many data nodes you want Think very carefully about network vs. disk vs. dumb-query costs
  • 65. Pan-Strategy Advice Think very carefully about what tables should live where Think very carefully about tuning settings (especially on your head node) work mem shared buffers temp buffers Think very carefully about how many data nodes you want Think very carefully about network vs. disk vs. dumb-query costs Think very carefully!
  • 68. Questions? Any questions? John, do you use this approach for your databases?
  • 69. Questions? Any questions? John, do you use this approach for your databases? Why not?
  • 71. Thanks! Plug: Stephen Frost has another postgres fdw talk tomorrow
  • 72. Thanks! Plug: Stephen Frost has another postgres fdw talk tomorrow Also: Rentrak is hiring: programmers, sysadmins, and devops
  • 73. Federating Queries Using postgres fdw Introduction Who am I? Partitioning PostgreSQL inheritance partitioning Old-school partitioning Federating Queries Federation Strategies Overview Trial and Error Demo Limitations Strategies Wrap-up