SlideShare a Scribd company logo
A Postgres-XC
Distributed Key-Value Store
Mason Sharp
April 15, 2013
CC License: Attribution-NonCommercial-ShareAlike
Who Am I?
Mason Sharp
●
Original architect of Stado / GridSQL
●
One of original architects of Postgres-XC
●
Former architect at EnterpriseDB
●
Co-organizer of NYC PostgreSQL User Group
●
Co-founder and CTO of
Agenda
●
Why use a key-value store?
●
PostgreSQL features
●
XML
●
hstore
●
JSON
●
Postgres-XC Overview
●
Measurements: MongoDB versus Postgres-XC
Agenda
●
Why use a key-value store?
●
PostgreSQL features
●
XML
●
hstore
●
JSON
●
Postgres-XC Overview
●
Measurements: MongoDB versus Postgres-XC
Why Use a Key-Value Store?
●
Document oriented vs. row oriented
●
Unstructured data
●
Semi-structured data
●
Self-describing / schema-less
●
Uses Tags
●
Dynamic attributes for different objects
●
Dwight Merriman, CEO 10gen (paraphrasing):
●
“Some customers use MongoDB just for the schema-
less features. They don't need the scalability and
run on one single server” (!)
●
“Easier for developers” (...)
Why Use a Key-Value Store? (2)
●
Key-value makes for an easy distributed store
●
Multiple servers
●
In-memory
●
No complicated schema changes
●
But PostgreSQL's ALTER TABLE exclusive locks
may be brief
●
Need to be “web-scale”
●
Perception that it scales better
●
What if it no longer fits in memory?
●
A series of unfortunate anecdotes
PostgreSQL
Document Store Capabilities
XML
●
--with-libxml at build time
●
Native data type
●
CREATE TABLE foo (myid int, data xml)
●
Validation
INSERT INTO foo VALUES (2, '<aaa');
ERROR: invalid XML content
Detail: line 1: Couldn't find end of Start Tag
aaa line 1
●
Xpath
●
Mapping & Export functions
hstore
●
Contrib module
●
CREATE EXTENSION hstore
●
Key/value pairs
●
Data type
hstore
CREATE TABLE foo (myid int, hdata hstore);
INSERT INTO foo VALUES (10,
'"name"=>"fred", "department"=>"IT"');
hstore
SELECT hdata->'name' FROM foo WHERE id = 10;
?column?
----------
fred
(1 row)
# Extract all department values where it is an attribute
SELECT hdata->'department'
FROM foo
WHERE hdata ? 'department';
Hstore Manipulation
●
Concatenate
'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore
"a"=>"b", "c"=>"x", "d"=>"q"
●
Delete element
delete('a=>1,b=>2','b')
"a"=>"1"
hstore
# Get a list of unique keys
SELECT DISTINCT (each(hdata)).key
FROM foo
hstore - Indexes
●
Btree index only helps with '='
●
Gin and gist indexes will help with operators
●
@> left operand contains right
●
? contains key
●
?& contains all keys in array
●
?| contains at least one key in array
●
Can create index on custom function
●
Extract a particular key value
JSON
●
JavaScript Object Notation
●
PostgreSQL 9.2 basic support
●
array_to_json
●
row_to_json
Note: Postgres-XC 1.0.2 based on PostgreSQL
9.1, will be based on 9.2 soon
JSON – looking ahead to
PostgreSQL 9.3
●
PostgreSQL 9.3
●
json_agg
●
hstore_to_json
●
hstore_to_json_loose
●
… and much more
http://www.postgresql.org/docs/devel/static/
functions-json.html
Composite Type
CREATE TYPE address AS (
street TEXT,
city TEXT,
state TEXT,
zip CHAR(10));
CREATE TABLE customer (
full_name TEXT,
mail_address address);
row_to_json
test1=# select row_to_json(customer) from
customer;
{"full_name":"Joe Lee",
"mail_address": {
"street":"100 Broad Street",
"city":"Red Bank",
"state":"NJ",
"zip":"07701 "}
}
19
●
PostgreSQL-based database cluster
Same API to Apps as PostgreSQL
• Same drivers
●
Symmetric Multi-headed Cluster
No master, no slave
• Not just PostgreSQL replication.
• Application can read/write to any coordinator server
Consistent database view to all the transactions
• Complete ACID property to all the transactions in the cluster
●
Scales both for Write and Read
Sep 20, 2012 Postgres-XC 20
Sep 20, 2012 Postgres-XC 21
Postgres-XC Cluster
Coordinator
Data Node
PG-XC Server
Coordinator
Data Node
Coordinator
Data Node
Coordinator
Data Node
・・・・・
Communication amongPG-XC servers
Add PG-XC servers as
needed
Global Transaction
Manager
Application can connect to any server to have the same database view and service.
GTM
PG-XC Server PG-XC Server PG-XC Server
Coordinator Overview
●
Based on PostgreSQL
●
Accepts connections from clients
●
Parses and plans requests
●
Interacts with Global Transaction Manager
●
Uses pooler for Data Node connections
●
Sends down XIDs and snapshots to Data Nodes
●
Collects results and returns to client
●
Uses two phase commit if necessary
22
Data Node Overview
●
Based on PostgreSQL
●
Where user created data is actually stored
●
Coordinators (not clients) connects to Data
Nodes
●
Accepts XID and snapshots from Coordinator
●
The rest is fairly similar to vanilla PostgreSQL
23
Sep 20, 2012 Postgres-XC 24
Global Transaction Manager
Cluster nodesGTM
XID
Snapshot
Timestamp
Sequence values
GTM Overview
●
Issues Transaction IDs (XIDs)
●
Issues Snapshots
●
Issues Timestamps
●
Issues Sequences
●
Based on PostgreSQL procarray code
●
Multi-threaded
25
GTM Proxy
●
Runs on other nodes
●
Groups requests together
●
Reduces number of connections to GTM
●
Reduces traffic to GTM
26
Sep 20, 2012 Postgres-XC 27
Summary
● Coordinator
● Visible to apps
● SQL analysis, planning, execution
● Connection pooling
● Datanode (or simply “NODE”)
● Actual database store
● Local SQL execution
● GTM (Global Transaction Manager)
● Provides consistent database view to transactions
– GXID (Global Transaction ID)
– Snapshot (List of active transactions)
– Other global values such as SEQUENCE
● GTM Proxy, integrates server-local transaction requirement for performance
Postgres-XC core, based upon
vanilla PostgreSQL
Share same binary
May want to colocate
Different binaries
MongoDB vs Postgres-XC
Performance Comparison
●
Three data nodes (16GB RAM each)
●
Postgres-XC also used a coordinator
●
Adds latency
●
Out-of-the-box default configuration
●
No replicas
Insert Comparison – single thread
●
0 – 1M Rows
●
MongoDB: 7m 06s
●
Postgres-XC: 131m 1s
●
Postgres-XC COPY: 43s
●
10M – 20M Rows
●
MongoDB: 64m 48
●
Postgres-XC: 354m 56s
GTM in XC adds a lot of latency hurting
single-threaded performance
Read Comparison
(shorter is better)
1 2 3 4 5 6 7 8 9 10
0
0.5
1
1.5
2
2.5
MongoDB
Postgres-XC
Rows (millions)
Time(seconds)
Update Comparison – single thread
50 GB, single thread
●
1000 Updates by partitioned key
●
MongoDB: 43s
●
Postgres-XC: 1m 6s
●
1000 Updates by indexed non-partitioned key
●
MongoDB: 7m 55s
●
Postgres-XC: 1m 54s
Non-partitioned index-based faster in XC
Update Concurrency on Key
Possible Future Tests
●
Insert,Select concurrency test (important)
●
Mixed workload
●
Measure in-memory and not in-memory
●
Impact of replicas for availability
●
MongoDB replicas
●
Postgres-XC streaming replication
●
Have seen about 15% perf drop for two sync slaves
●
MongoDB Write-Concern durability settings (try
journaled)
●
Hstore
Other PostgreSQL Results?
●
Christophe Pettus:
wiki.postgresql.org/images/b/b4/Pg-as-nosql-
pgday-fosdem-2013.pdf
●
Single laptop-based tests, but interesting
●
Summary
●
PostgreSQL has schema-less functionality built-
in and can act as a key-value store
●
Postgres-XC can scale this out horizontally to
multiple servers
●
MongoDB performs much better for low
concurrency for inserts
●
In XC, use COPY or multiple threads to populate
●
Postgres-XC performs better for non-partitioned
indexed access
●
Postgres-XC can perform about the same to
MongoDB for reads
Summary (2)
If Postgres-XC generally performs similarly to
MongoDB, why not use XC and
●
Stick with ACID
●
Feel secure with PostgreSQL maturity
●
Leverage PostgreSQL features and community
Thank You
Mason Sharp
mason@stormdb.com
@mason_db
Content Attribution
●
Postgres-XC Development Group
●
Koichi Suzuki
●
Michael Paquier
●
Ashutosh Bapat
●
Pavan Deolasee
●
Christophe Pettus
●
Mason Sharp
●
...

More Related Content

PDF
Postgres-XC Write Scalable PostgreSQL Cluster
PDF
Introduction to Postrges-XC
PDF
Koichi Suzuki - Postgres-XC Dynamic Cluster Management @ Postgres Open
PDF
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
PDF
Bn 1016 demo postgre sql-online-training
PDF
Managing terabytes: When Postgres gets big
PDF
Postgres clusters
PPTX
Overview of some popular distributed databases
Postgres-XC Write Scalable PostgreSQL Cluster
Introduction to Postrges-XC
Koichi Suzuki - Postgres-XC Dynamic Cluster Management @ Postgres Open
Supersized PostgreSQL: Postgres-XL for Scale-Out OLTP and Big Data Analytics
Bn 1016 demo postgre sql-online-training
Managing terabytes: When Postgres gets big
Postgres clusters
Overview of some popular distributed databases

What's hot (20)

PDF
Migrating to postgresql
ODP
Sdc challenges-2012
ODP
Tiering barcelona
PDF
Gluster d2
PDF
Storage as a Service with Gluster
PDF
SQL, NoSQL, NewSQL? What's a developer to do?
PDF
Red Hat Gluster Storage - Direction, Roadmap and Use-Cases
ODP
Lisa 2015-gluster fs-introduction
PDF
Ceph Block Devices: A Deep Dive
PDF
Red Hat Storage - Introduction to GlusterFS
ODP
YDAL Barcelona
PDF
M|18 How to use MyRocks with MariaDB Server
PDF
Gluster.community.day.2013
PPTX
Gluster Storage
PDF
Pgxc scalability pg_open2012
PDF
Disperse xlator ramon_datalab
PDF
Gluster overview & future directions vault 2015
PDF
GlusterFS And Big Data
PDF
MySQL Cluster (NDB) - Best Practices Percona Live 2017
PDF
Gluster.next feb-2016
Migrating to postgresql
Sdc challenges-2012
Tiering barcelona
Gluster d2
Storage as a Service with Gluster
SQL, NoSQL, NewSQL? What's a developer to do?
Red Hat Gluster Storage - Direction, Roadmap and Use-Cases
Lisa 2015-gluster fs-introduction
Ceph Block Devices: A Deep Dive
Red Hat Storage - Introduction to GlusterFS
YDAL Barcelona
M|18 How to use MyRocks with MariaDB Server
Gluster.community.day.2013
Gluster Storage
Pgxc scalability pg_open2012
Disperse xlator ramon_datalab
Gluster overview & future directions vault 2015
GlusterFS And Big Data
MySQL Cluster (NDB) - Best Practices Percona Live 2017
Gluster.next feb-2016
Ad

Viewers also liked (8)

PDF
Postgres-XC: Symmetric PostgreSQL Cluster
PDF
Flexible Indexing with Postgres
 
PDF
How the Postgres Query Optimizer Works
 
PDF
Distributed Postgres
PDF
Multimaster
PPT
Aerospike: Key Value Data Access
PDF
Lightbend Lagom: Microservices Just Right
Postgres-XC: Symmetric PostgreSQL Cluster
Flexible Indexing with Postgres
 
How the Postgres Query Optimizer Works
 
Distributed Postgres
Multimaster
Aerospike: Key Value Data Access
Lightbend Lagom: Microservices Just Right
Ad

Similar to Postgres-XC as a Key Value Store Compared To MongoDB (20)

PDF
Postgrtesql as a NoSQL Document Store - The JSON/JSONB data type
PDF
There is Javascript in my SQL
PDF
Lean and mean MongoDB
PDF
Grails 101
PDF
Using MongoDB and Python
PDF
2016 feb-23 pyugre-py_mongo
PDF
NoSQL solutions
PDF
Building RESTtful services in MEAN
PDF
Intro Couchdb
ODP
An Introduction to Postgresql
PDF
PGConf APAC 2018 - High performance json postgre-sql vs. mongodb
PDF
MongoDB and Web Scrapping with the Gyes Platform
PDF
No sql bigdata and postgresql
PDF
kranonit S06E01 Игорь Цинько: High load
PDF
An evening with Postgresql
PDF
Mongo DB schema design patterns
PDF
Solr Power FTW: Powering NoSQL the World Over
PDF
Introduction to new high performance storage engines in mongodb 3.0
PPTX
Understanding and tuning WiredTiger, the new high performance database engine...
PDF
Benchx: An XQuery benchmarking web application
Postgrtesql as a NoSQL Document Store - The JSON/JSONB data type
There is Javascript in my SQL
Lean and mean MongoDB
Grails 101
Using MongoDB and Python
2016 feb-23 pyugre-py_mongo
NoSQL solutions
Building RESTtful services in MEAN
Intro Couchdb
An Introduction to Postgresql
PGConf APAC 2018 - High performance json postgre-sql vs. mongodb
MongoDB and Web Scrapping with the Gyes Platform
No sql bigdata and postgresql
kranonit S06E01 Игорь Цинько: High load
An evening with Postgresql
Mongo DB schema design patterns
Solr Power FTW: Powering NoSQL the World Over
Introduction to new high performance storage engines in mongodb 3.0
Understanding and tuning WiredTiger, the new high performance database engine...
Benchx: An XQuery benchmarking web application

Recently uploaded (20)

PDF
Modernizing your data center with Dell and AMD
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
MYSQL Presentation for SQL database connectivity
PPTX
Big Data Technologies - Introduction.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Mobile App Security Testing_ A Comprehensive Guide.pdf
PDF
Approach and Philosophy of On baking technology
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PDF
Review of recent advances in non-invasive hemoglobin estimation
PDF
Empathic Computing: Creating Shared Understanding
PPTX
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
DOCX
The AUB Centre for AI in Media Proposal.docx
Modernizing your data center with Dell and AMD
CIFDAQ's Market Insight: SEC Turns Pro Crypto
MYSQL Presentation for SQL database connectivity
Big Data Technologies - Introduction.pptx
cuic standard and advanced reporting.pdf
Spectral efficient network and resource selection model in 5G networks
Shreyas Phanse Resume: Experienced Backend Engineer | Java • Spring Boot • Ka...
Digital-Transformation-Roadmap-for-Companies.pptx
Diabetes mellitus diagnosis method based random forest with bat algorithm
Mobile App Security Testing_ A Comprehensive Guide.pdf
Approach and Philosophy of On baking technology
NewMind AI Weekly Chronicles - August'25 Week I
Review of recent advances in non-invasive hemoglobin estimation
Empathic Computing: Creating Shared Understanding
Detection-First SIEM: Rule Types, Dashboards, and Threat-Informed Strategy
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
“AI and Expert System Decision Support & Business Intelligence Systems”
Per capita expenditure prediction using model stacking based on satellite ima...
The AUB Centre for AI in Media Proposal.docx

Postgres-XC as a Key Value Store Compared To MongoDB

  • 1. A Postgres-XC Distributed Key-Value Store Mason Sharp April 15, 2013 CC License: Attribution-NonCommercial-ShareAlike
  • 2. Who Am I? Mason Sharp ● Original architect of Stado / GridSQL ● One of original architects of Postgres-XC ● Former architect at EnterpriseDB ● Co-organizer of NYC PostgreSQL User Group ● Co-founder and CTO of
  • 3. Agenda ● Why use a key-value store? ● PostgreSQL features ● XML ● hstore ● JSON ● Postgres-XC Overview ● Measurements: MongoDB versus Postgres-XC
  • 4. Agenda ● Why use a key-value store? ● PostgreSQL features ● XML ● hstore ● JSON ● Postgres-XC Overview ● Measurements: MongoDB versus Postgres-XC
  • 5. Why Use a Key-Value Store? ● Document oriented vs. row oriented ● Unstructured data ● Semi-structured data ● Self-describing / schema-less ● Uses Tags ● Dynamic attributes for different objects ● Dwight Merriman, CEO 10gen (paraphrasing): ● “Some customers use MongoDB just for the schema- less features. They don't need the scalability and run on one single server” (!) ● “Easier for developers” (...)
  • 6. Why Use a Key-Value Store? (2) ● Key-value makes for an easy distributed store ● Multiple servers ● In-memory ● No complicated schema changes ● But PostgreSQL's ALTER TABLE exclusive locks may be brief ● Need to be “web-scale” ● Perception that it scales better ● What if it no longer fits in memory? ● A series of unfortunate anecdotes
  • 8. XML ● --with-libxml at build time ● Native data type ● CREATE TABLE foo (myid int, data xml) ● Validation INSERT INTO foo VALUES (2, '<aaa'); ERROR: invalid XML content Detail: line 1: Couldn't find end of Start Tag aaa line 1 ● Xpath ● Mapping & Export functions
  • 9. hstore ● Contrib module ● CREATE EXTENSION hstore ● Key/value pairs ● Data type
  • 10. hstore CREATE TABLE foo (myid int, hdata hstore); INSERT INTO foo VALUES (10, '"name"=>"fred", "department"=>"IT"');
  • 11. hstore SELECT hdata->'name' FROM foo WHERE id = 10; ?column? ---------- fred (1 row) # Extract all department values where it is an attribute SELECT hdata->'department' FROM foo WHERE hdata ? 'department';
  • 12. Hstore Manipulation ● Concatenate 'a=>b, c=>d'::hstore || 'c=>x, d=>q'::hstore "a"=>"b", "c"=>"x", "d"=>"q" ● Delete element delete('a=>1,b=>2','b') "a"=>"1"
  • 13. hstore # Get a list of unique keys SELECT DISTINCT (each(hdata)).key FROM foo
  • 14. hstore - Indexes ● Btree index only helps with '=' ● Gin and gist indexes will help with operators ● @> left operand contains right ● ? contains key ● ?& contains all keys in array ● ?| contains at least one key in array ● Can create index on custom function ● Extract a particular key value
  • 15. JSON ● JavaScript Object Notation ● PostgreSQL 9.2 basic support ● array_to_json ● row_to_json Note: Postgres-XC 1.0.2 based on PostgreSQL 9.1, will be based on 9.2 soon
  • 16. JSON – looking ahead to PostgreSQL 9.3 ● PostgreSQL 9.3 ● json_agg ● hstore_to_json ● hstore_to_json_loose ● … and much more http://www.postgresql.org/docs/devel/static/ functions-json.html
  • 17. Composite Type CREATE TYPE address AS ( street TEXT, city TEXT, state TEXT, zip CHAR(10)); CREATE TABLE customer ( full_name TEXT, mail_address address);
  • 18. row_to_json test1=# select row_to_json(customer) from customer; {"full_name":"Joe Lee", "mail_address": { "street":"100 Broad Street", "city":"Red Bank", "state":"NJ", "zip":"07701 "} }
  • 19. 19 ● PostgreSQL-based database cluster Same API to Apps as PostgreSQL • Same drivers ● Symmetric Multi-headed Cluster No master, no slave • Not just PostgreSQL replication. • Application can read/write to any coordinator server Consistent database view to all the transactions • Complete ACID property to all the transactions in the cluster ● Scales both for Write and Read
  • 20. Sep 20, 2012 Postgres-XC 20
  • 21. Sep 20, 2012 Postgres-XC 21 Postgres-XC Cluster Coordinator Data Node PG-XC Server Coordinator Data Node Coordinator Data Node Coordinator Data Node ・・・・・ Communication amongPG-XC servers Add PG-XC servers as needed Global Transaction Manager Application can connect to any server to have the same database view and service. GTM PG-XC Server PG-XC Server PG-XC Server
  • 22. Coordinator Overview ● Based on PostgreSQL ● Accepts connections from clients ● Parses and plans requests ● Interacts with Global Transaction Manager ● Uses pooler for Data Node connections ● Sends down XIDs and snapshots to Data Nodes ● Collects results and returns to client ● Uses two phase commit if necessary 22
  • 23. Data Node Overview ● Based on PostgreSQL ● Where user created data is actually stored ● Coordinators (not clients) connects to Data Nodes ● Accepts XID and snapshots from Coordinator ● The rest is fairly similar to vanilla PostgreSQL 23
  • 24. Sep 20, 2012 Postgres-XC 24 Global Transaction Manager Cluster nodesGTM XID Snapshot Timestamp Sequence values
  • 25. GTM Overview ● Issues Transaction IDs (XIDs) ● Issues Snapshots ● Issues Timestamps ● Issues Sequences ● Based on PostgreSQL procarray code ● Multi-threaded 25
  • 26. GTM Proxy ● Runs on other nodes ● Groups requests together ● Reduces number of connections to GTM ● Reduces traffic to GTM 26
  • 27. Sep 20, 2012 Postgres-XC 27 Summary ● Coordinator ● Visible to apps ● SQL analysis, planning, execution ● Connection pooling ● Datanode (or simply “NODE”) ● Actual database store ● Local SQL execution ● GTM (Global Transaction Manager) ● Provides consistent database view to transactions – GXID (Global Transaction ID) – Snapshot (List of active transactions) – Other global values such as SEQUENCE ● GTM Proxy, integrates server-local transaction requirement for performance Postgres-XC core, based upon vanilla PostgreSQL Share same binary May want to colocate Different binaries
  • 28. MongoDB vs Postgres-XC Performance Comparison ● Three data nodes (16GB RAM each) ● Postgres-XC also used a coordinator ● Adds latency ● Out-of-the-box default configuration ● No replicas
  • 29. Insert Comparison – single thread ● 0 – 1M Rows ● MongoDB: 7m 06s ● Postgres-XC: 131m 1s ● Postgres-XC COPY: 43s ● 10M – 20M Rows ● MongoDB: 64m 48 ● Postgres-XC: 354m 56s GTM in XC adds a lot of latency hurting single-threaded performance
  • 30. Read Comparison (shorter is better) 1 2 3 4 5 6 7 8 9 10 0 0.5 1 1.5 2 2.5 MongoDB Postgres-XC Rows (millions) Time(seconds)
  • 31. Update Comparison – single thread 50 GB, single thread ● 1000 Updates by partitioned key ● MongoDB: 43s ● Postgres-XC: 1m 6s ● 1000 Updates by indexed non-partitioned key ● MongoDB: 7m 55s ● Postgres-XC: 1m 54s Non-partitioned index-based faster in XC
  • 33. Possible Future Tests ● Insert,Select concurrency test (important) ● Mixed workload ● Measure in-memory and not in-memory ● Impact of replicas for availability ● MongoDB replicas ● Postgres-XC streaming replication ● Have seen about 15% perf drop for two sync slaves ● MongoDB Write-Concern durability settings (try journaled) ● Hstore
  • 34. Other PostgreSQL Results? ● Christophe Pettus: wiki.postgresql.org/images/b/b4/Pg-as-nosql- pgday-fosdem-2013.pdf ● Single laptop-based tests, but interesting ●
  • 35. Summary ● PostgreSQL has schema-less functionality built- in and can act as a key-value store ● Postgres-XC can scale this out horizontally to multiple servers ● MongoDB performs much better for low concurrency for inserts ● In XC, use COPY or multiple threads to populate ● Postgres-XC performs better for non-partitioned indexed access ● Postgres-XC can perform about the same to MongoDB for reads
  • 36. Summary (2) If Postgres-XC generally performs similarly to MongoDB, why not use XC and ● Stick with ACID ● Feel secure with PostgreSQL maturity ● Leverage PostgreSQL features and community
  • 38. Content Attribution ● Postgres-XC Development Group ● Koichi Suzuki ● Michael Paquier ● Ashutosh Bapat ● Pavan Deolasee ● Christophe Pettus ● Mason Sharp ● ...