SlideShare ist ein Scribd-Unternehmen logo
1 von 63
Downloaden Sie, um offline zu lesen
High Performance JSON
PostgreSQL vs. MongoDB
PGConf APAC 2018
Dominic Dwyer
Wei Shan Ang
Disclaimer
● All images are freely available
● All our own work
● No swearing in our slides!
VS
GlobalSign
● GlobalSign identity & crypto services provider
● WebTrust certified Certificate Authority - 3rd in the world
● High volume services - IoT devices, cloud providers
● Cryptographic identities, timestamping, signing, etc
About Me
● Database Engineer with 6 years of experience
● From Singapore but now based in London
● Originally worked on Oracle systems
● Switched to open-source databases in 2015
● Currently working in GlobalSign as a “Data Reliability Engineer”
Motivation
● Most benchmark results are biased - commercial interests
● We feel that benchmark results are measured “creatively”
● We use PostgreSQL and MongoDB a lot!
● We wanted to test the latest versions
PostgreSQL
PostgreSQL
● Around for 21 years
● JSON supported since 9.2
○ JSONB supported since 9.4
● No JSON document statistics
○ Can be overcome with default_statistics_target or ALTER TABLE TABLE_NAME ALTER int4
SET STATISTICS 2000;
● Many JSON/JSONB operator/functions released since 9.2
○ jsonb_set, jsonb_insert, etc
● Many JSON/JSONB bug fixes
PostgreSQL Ecosystem
● “Build it yourself”
● Many High Availability solutions - all 3rd party
○ repmgr, pacemaker/corosync, Slony, Patroni and many more
● Connection Pooling
○ pgBouncer (single-threaded), pgpool-II
● Sharding
○ CitusDB
● Live version upgrades - tricky!
○ pg_upgrade, Slony, pg_dump and pg_logical
MongoDB
MongoDB
● Relatively “young” database software
○ 8 years since first release
● Known as a /dev/null database in the early days (jepsen.io)
○ Tremendous stability improvements since then
○ All known reliability issues has been fixed since 3.2.12
● Lots of WiredTiger bug fixes since 3.2
○ Cache eviction
○ Checkpoints
○ Lost updates and dirty writes
Source: jepsen.io
● Everything comes as standard:
○ Built-in replication
○ Built-in sharding
○ Live cluster version upgrades (ish)
■ Shutdown slave, upgrade slave, startup slave, repeat
MongoDB
Server Hardware
● 2x Intel CPU (2 socket with 20 cores)
○ 20 cores / 40 threads
● FreeBSD 11
● ZFS file system
● Enterprise-Grade Intel SSDs
Why do we use ZFS?
● Highly tunable filesystem
○ Layered caching (ARC, L2ARC, ZIL)
○ Advanced cache algorithm
■ Most Recently Used (MRU)
■ Most Frequently Used (MFU)
● Free snapshots
● Block level checksums
● Fast compression
● Nexenta, Delphix, Datto, Joyent, Tegile, Oracle (obviously) and many more!
The Setup
● 1-3 Client machines (depending on the test)
● 1 Server, two jails - one for Postgres & one for Mongo
● PostgreSQL 9.6.5 with pgBouncer 1.7.2
● MongoDB 3.4.9 with WiredTiger
Performance Tuning
● We had to tune PostgreSQL heavily
○ System V IPC (shmmax, shmall, semmns and etc)
○ pgBouncer (single threaded, we need multiple instances to handle the load)
● MongoDB tuning was easy!
○ WiredTiger cache size
○ Compression settings
○ Default settings are usually good enough
● ZFS tuning
○ atime
○ recordsize
○ checksum
○ compression
Sample JSON Document
{
"_id" : NumberLong(2),
"name" : "lPAyAYpUvUDGiCd",
"addresses" : [
{
"number" : 59,
"line1" : "EPJKLhmEPrrdYqaFxxEVMF",
"line2" : "Rvlgkmb"
},
{
"number" : 59,
"line1" : "DdCBXEW",
"line2" : "FEV"
}
],
"phone_number" : "xPOYCOfSpieIxbGxpYEpi",
"dob" : ISODate("2017-09-05T00:03:28.956Z"),
"age" : 442006075,
"balance" : 0.807247519493103,
"enabled" : false,
"counter" : 442006075,
"padding" : BinData(0,"")
}
Sub-documents
Varying field types
Randomised binary blob
About Me
● Engineer on the High Performance Platforms team
○ Our team builds a high volume CA platform & distributed systems
○ Based in Old Street, London
○ Greenfield project, all new stuff!
● Day job has me breaking all the things
○ Simulating failures, network partitions, etc
○ Assessing performance and durability
● Maintain performance fork of Go MongoDB driver
○ github.com/globalsign/mgo
MPJBT Benchmark Tool
● MongoDB PostgreSQL JSONB Benchmarking Tool
○ Seriously, we’re open to better names…….
● Written in Golang
● Open source!
● Models typical workloads (but maybe not yours!)
○ Inserts, selects, select-updates, range queries, etc.
● Lockless outside of the database drivers
○ Low contention improves ability to push servers
Why Go?
● Designed from the start for high concurrency
○ Thousands of concurrent workers is totally fine
● Co-operative scheduler can maximise I/O throughput
○ When blocked, Go switches to another worker
○ Blocked worker is woken up when it’s unblocked
○ Much cheaper context switching - occurs in userland
● Familiarity - I use it every day!
Does it deliver?
Insert 10,000,000 records
Average isn’t very helpful
● I have an average of 52.2ms
Average isn’t very helpful
● I have an average of 52.2ms
120.080231
36.237584
25.904811
44.053916
66.617778
59.713100
74.620329
1.689589
90.641940
27.202953
51.162331
52.202392
52.511745
50.439697
52.975609
52.567941
53.067609
52.122890
51.159180
52.390616
OR
Inserts - Latency Histogram
Inserts - Latency Histogram
1s 2s 3s
Inserts - Throughput
insert 30877op/s avg.0ms
insert 27509op/s avg.0ms
insert 29997op/s avg.0ms
insert 31143op/s avg.0ms
insert 22576op/s avg.0ms
insert 0op/s avg.0ms
insert 0op/s avg.0ms
insert 1op/s avg.2561ms
insert 0op/s avg.0ms
insert 20703op/s avg.6ms
insert 31154op/s avg.0ms
insert 31298op/s avg.0ms
insert 30359op/s avg.0ms
insert 26081op/s avg.0ms
insert 25938op/s avg.0ms
insert 26649op/s avg.0ms
insert 26009op/s avg.0ms
insert 26029op/s avg.0ms
insert 25522op/s avg.0ms
insert 25960op/s avg.0ms
insert 26000op/s avg.0ms
insert 25576op/s avg.0ms
insert 26159op/s avg.0ms
insert 25628op/s avg.0ms
insert 26071op/s avg.0ms
insert 25856op/s avg.0ms
MongoDB cache eviction bug?
● Show some cool graphs
● https://jira.mongodb.org/browse/SERVER-29311
●
MongoDB cache eviction bug - not a bug?
● Reported to MongoDB
○ https://jira.mongodb.org/browse/SERVER-29311
○ Offered to run any tests and analyse data
● Ran 36 different test combinations
○ ZFS compression: lz4, zlib, off
○ MongoDB compression: snappy, zlib, off
○ Filesystem block sizes
○ Disk configurations
○ Tried running on Linux/XFS
● Always saw the same pauses
○ Described as an I/O bottleneck
(twice!)
Profile with Dtrace!
● Dynamic tracer built into FreeBSD (and others)
○ Originally created by Sun for Solaris
○ Ported to FreeBSD
○ Low profiling overhead
● Traces in both kernel and userspace
○ Hook syscalls, libc, application functions, etc
○ Access function arguments, kernel structures, etc
● Hooks expressed in D like DSL
○ Conditionally trigger traces
○ Really simple to use
Trace the Virtual File System
● Measures application file system operations
○ Kernel level
○ File system agnostic (XFS, ZFS, anything)
● Records data size & latency:
○ Reads - vfs::vop_read
○ Writes - vfs::vop_write
● Configured to output ASCII histograms
○ Per second aggregations
○ Broken down by type
○ Timestamped for correlating with MPJBT logs
VFS Writes vs. Throughput - PostgreSQL
VFS Writes vs. Throughput - MongoDB
Insert / Update / Select comparison
● Preloaded 10,000,000 records in the table
○ No padding - records are ~320 bytes
● 3 clients running different workloads
○ 50 workers inserting
○ 50 workers updating
○ 50 workers performing a range over partial index
● Both databases become CPU bound
○ Database server is under maximum load
○ Typically avoided in a production environment
○ Always good to know your maximum numbers
MongoDB
Insert
99th%
13ms
Average
18,070 op/s
Update
99th%
11ms
Average
22,304 op/s
Select
99th%
12ms
Average
18,960 op/s
MongoDB
PostgreSQL
PostgreSQL
Insert
99th%
4ms
Average
25,244 op/s
Update
99th%
4ms
Average
26,085 op/s
Select
99th%
3ms
Average
27,778 op/s
Welcome
to the future
MongoDB 3.6.2 & PostgreSQL 10.3
Changes in MongoDB 3.6
● Lots of performance improvements in WiredTiger
○ More than 400 WiredTiger related fixes
○ Integrate logical timestamps in MongoDB/WiredTiger
○ Improvements in cache eviction
○ Improvements in checkpoint scrubbing
Changes in PostgreSQL 10
● Lots of performance improvements in 10
○ Improvements to parallel queries
○ Multi-column statistics
○ VACUUM speed enhancements
○ Improvements on hash joins
VFS Writes vs. Throughput - MongoDB 3.6
VFS Writes vs. Throughput - MongoDB 3.4
VFS Writes vs. Throughput - PostgreSQL
Insert
Workload
MongoDB 3.6 vs 3.4
Mongo 3.4
99%tile =>
956ms
Mongo 3.6
99%tile =>
790ms
PostgreSQL 9.6 vs 10
Postgres 9.6
99%tile =>
97ms
Postgres 10
99%tile =>
88ms
MongoDB 3.6 vs PostgreSQL 10
Postgres 10
99%tile =>
88ms
Mongo 3.6
99%tile =>
790ms
What about other
workloads?
UPDATE/SELECT Zipfian Workload
● Zipfian workload
○ Higher probability of picking the latest records
○ Heavily skewed towards to the most recent data
● 2 mpjbt process running from 2 different servers
○ 1 running UPDATE zipfian workload
○ 1 running SELECT zipfian workload
MongoDB 3.6 vs PostgreSQL 10
Postgres 10
99%tile =>
368ms
Mongo 3.6
99%tile =>
19.2ms
Postgres 10
99%tile =>
9412ms
Mongo 3.6
99%tile =>
55ms
PostgreSQL’s VACUUM
PostgreSQL’s VACUUM
● An UPDATE operation in PostgreSQL is a INSERT + DELETE operation
● VACUUM reclaims dead tuples
● PostgreSQL runs “autovacuum” so you don’t have to
● Write heavy workloads trigger autovacuum more often
Summary
Summary - PostgreSQL
● PostgreSQL has poor performance out of the box
○ Requires a decent amount of tuning to get good performance
● Does not scale well with large number of connections
○ Connection pooling is a must
● VACUUM is an overhead of MVCC and ACID goodness
● ACID compliance
○ Transactions with your JSON!
● Consistent performance
Summary - MongoDB
● MongoDB has decent performance out of the box
● Unstable throughput and latency
○ Much better in 3.6, but still a way to go
● Scales well with large number of connections
● Strong horizontal scalability
● Throughput bug is (still!) annoying
● Rolling upgrades are ridiculously easy
Summary
● There is no such thing as the best database in the world!
● Choosing the right database for your application is never easy
○ How well does it scale?
○ How easy is it to perform upgrades?
○ How does it behave under stress?
● What are your application’s requirements?
○ Want database level ACID with your JSON?
○ Or application level?! 2 phase commit
■ Sad developers
● Do your own research!
TODO
● Released MPJBT on Github
○ Open source for all
○ github.com/domodwyer/mpjbt
● Support custom workloads
● Test MongoDB 4.0 transactions
● Run similar tests against CitusDB
○ You guys have inspired us to keep looking!
● Run performance test for MongoRocks (LSM)
Thank You!
Questions?
References
● https://people.freebsd.org/~seanc/postgresql/scale15x-2017-postgresql_zfs_b
est_practices.pdf
● https://jepsen.io/analyses/mongodb-3-4-0-rc3
● https://dba.stackexchange.com/questions/167525/inconsistent-statistics-on-js
onb-column-with-btree-index
● https://github.com/domodwyer/mpjbt
● https://jira.mongodb.org/browse/WT-3633
● https://jira.mongodb.org/browse/WT-3457
● https://jira.mongodb.org/browse/WT-3381
Previous Benchmark Results
● http://tiborsimko.org/postgresql-mongodb-json-select-speed.html
● http://erthalion.info/2015/12/29/json-benchmarks/
● https://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-o
utperforms-mongodb-and-ushers-new-developer-reality
● https://pgconf.ru/media/2017/04/03/20170317H2_O.Bartunov_json-2017.pdf
● https://www.slideshare.net/toshiharada/ycsb-jsonb

Weitere ähnliche Inhalte

Was ist angesagt?

PGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad Haroon
PGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad HaroonPGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad Haroon
PGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad HaroonEqunix Business Solutions
 
Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...
Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...
Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...Spark Summit
 
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud"
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud" Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud"
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud" Flink Forward
 
Patroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companionPatroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companionAlexander Kukushkin
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3takezoe
 
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)Wei Shan Ang
 
PGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander Kukushkin
PGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander KukushkinPGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander Kukushkin
PGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander KukushkinEqunix Business Solutions
 
Streaming huge databases using logical decoding
Streaming huge databases using logical decodingStreaming huge databases using logical decoding
Streaming huge databases using logical decodingAlexander Shulgin
 
20180503 kube con eu kubernetes metrics deep dive
20180503 kube con eu   kubernetes metrics deep dive20180503 kube con eu   kubernetes metrics deep dive
20180503 kube con eu kubernetes metrics deep diveBob Cotton
 
Update on OpenTSDB and AsyncHBase
Update on OpenTSDB and AsyncHBase Update on OpenTSDB and AsyncHBase
Update on OpenTSDB and AsyncHBase HBaseCon
 
ELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log systemELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log systemAvleen Vig
 
PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...
PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...
PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...Equnix Business Solutions
 
[jLove 2020] Where is my cache architectural patterns for caching microservi...
[jLove 2020] Where is my cache  architectural patterns for caching microservi...[jLove 2020] Where is my cache  architectural patterns for caching microservi...
[jLove 2020] Where is my cache architectural patterns for caching microservi...Rafał Leszko
 
On The Building Of A PostgreSQL Cluster
On The Building Of A PostgreSQL ClusterOn The Building Of A PostgreSQL Cluster
On The Building Of A PostgreSQL ClusterSrihari Sriraman
 
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...SF Big Analytics 20191112: How to performance-tune Spark applications in larg...
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...Chester Chen
 
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, AdjustShipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, AdjustAltinity Ltd
 
M|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change MethodsM|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change MethodsMariaDB plc
 
Demystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live scDemystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live scEmanuel Calvo
 
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)Aleksander Alekseev
 
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...Mydbops
 

Was ist angesagt? (20)

PGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad Haroon
PGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad HaroonPGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad Haroon
PGConf.ASIA 2019 Bali - Fault Tolerance in PostgreSQL - Muhammad Haroon
 
Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...
Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...
Taming GC Pauses for Humongous Java Heaps in Spark Graph Computing-(Eric Kacz...
 
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud"
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud" Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud"
Flink Forward San Francisco 2018: Steven Wu - "Scaling Flink in Cloud"
 
Patroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companionPatroni: Kubernetes-native PostgreSQL companion
Patroni: Kubernetes-native PostgreSQL companion
 
Reactive database access with Slick3
Reactive database access with Slick3Reactive database access with Slick3
Reactive database access with Slick3
 
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
pgDay Asia 2016 - Swapping Pacemaker-Corosync for repmgr (1)
 
PGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander Kukushkin
PGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander KukushkinPGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander Kukushkin
PGConf.ASIA 2019 Bali - Patroni in 2019 - Alexander Kukushkin
 
Streaming huge databases using logical decoding
Streaming huge databases using logical decodingStreaming huge databases using logical decoding
Streaming huge databases using logical decoding
 
20180503 kube con eu kubernetes metrics deep dive
20180503 kube con eu   kubernetes metrics deep dive20180503 kube con eu   kubernetes metrics deep dive
20180503 kube con eu kubernetes metrics deep dive
 
Update on OpenTSDB and AsyncHBase
Update on OpenTSDB and AsyncHBase Update on OpenTSDB and AsyncHBase
Update on OpenTSDB and AsyncHBase
 
ELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log systemELK: Moose-ively scaling your log system
ELK: Moose-ively scaling your log system
 
PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...
PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...
PGConf.ASIA 2019 Bali - How did PostgreSQL Write Load Balancing of Queries Us...
 
[jLove 2020] Where is my cache architectural patterns for caching microservi...
[jLove 2020] Where is my cache  architectural patterns for caching microservi...[jLove 2020] Where is my cache  architectural patterns for caching microservi...
[jLove 2020] Where is my cache architectural patterns for caching microservi...
 
On The Building Of A PostgreSQL Cluster
On The Building Of A PostgreSQL ClusterOn The Building Of A PostgreSQL Cluster
On The Building Of A PostgreSQL Cluster
 
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...SF Big Analytics 20191112: How to performance-tune Spark applications in larg...
SF Big Analytics 20191112: How to performance-tune Spark applications in larg...
 
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, AdjustShipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
Shipping Data from Postgres to Clickhouse, by Murat Kabilov, Adjust
 
M|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change MethodsM|18 Battle of the Online Schema Change Methods
M|18 Battle of the Online Schema Change Methods
 
Demystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live scDemystifying postgres logical replication percona live sc
Demystifying postgres logical replication percona live sc
 
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
PostgreSQL Sharding and HA: Theory and Practice (PGConf.ASIA 2017)
 
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...
Migrate your EOL MySQL servers to HA Complaint GR Cluster / InnoDB Cluster Wi...
 

Ähnlich wie PGConf APAC 2018 - High performance json postgre-sql vs. mongodb

High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbWei Shan Ang
 
An evening with Postgresql
An evening with PostgresqlAn evening with Postgresql
An evening with PostgresqlJoshua Drake
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadKrivoy Rog IT Community
 
Ledingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @LendingkartLedingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @LendingkartMukesh Singh
 
Logs @ OVHcloud
Logs @ OVHcloudLogs @ OVHcloud
Logs @ OVHcloudOVHcloud
 
MongoDB: Advantages of an Open Source NoSQL Database
MongoDB: Advantages of an Open Source NoSQL DatabaseMongoDB: Advantages of an Open Source NoSQL Database
MongoDB: Advantages of an Open Source NoSQL DatabaseFITC
 
AWS big-data-demystified #1.1 | Big Data Architecture Lessons Learned | English
AWS big-data-demystified #1.1  | Big Data Architecture Lessons Learned | EnglishAWS big-data-demystified #1.1  | Big Data Architecture Lessons Learned | English
AWS big-data-demystified #1.1 | Big Data Architecture Lessons Learned | EnglishOmid Vahdaty
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2aspyker
 
AWS Big Data Demystified #1: Big data architecture lessons learned
AWS Big Data Demystified #1: Big data architecture lessons learned AWS Big Data Demystified #1: Big data architecture lessons learned
AWS Big Data Demystified #1: Big data architecture lessons learned Omid Vahdaty
 
MongoDB vs. Postgres Benchmarks
MongoDB vs. Postgres Benchmarks MongoDB vs. Postgres Benchmarks
MongoDB vs. Postgres Benchmarks EDB
 
TRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use CaseTRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use CaseHakan Ilter
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1Ruslan Meshenberg
 
OpenSearch.pdf
OpenSearch.pdfOpenSearch.pdf
OpenSearch.pdfAbhi Jain
 
OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...
OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...
OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...NETWAYS
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesDatabricks
 
Red Hat Gluster Storage Performance
Red Hat Gluster Storage PerformanceRed Hat Gluster Storage Performance
Red Hat Gluster Storage PerformanceRed_Hat_Storage
 
Scala like distributed collections - dumping time-series data with apache spark
Scala like distributed collections - dumping time-series data with apache sparkScala like distributed collections - dumping time-series data with apache spark
Scala like distributed collections - dumping time-series data with apache sparkDemi Ben-Ari
 
Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3  Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3 Omid Vahdaty
 
Log Management: AtlSecCon2015
Log Management: AtlSecCon2015Log Management: AtlSecCon2015
Log Management: AtlSecCon2015cameronevans
 

Ähnlich wie PGConf APAC 2018 - High performance json postgre-sql vs. mongodb (20)

High performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodbHigh performance json- postgre sql vs. mongodb
High performance json- postgre sql vs. mongodb
 
An evening with Postgresql
An evening with PostgresqlAn evening with Postgresql
An evening with Postgresql
 
kranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High loadkranonit S06E01 Игорь Цинько: High load
kranonit S06E01 Игорь Цинько: High load
 
Ledingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @LendingkartLedingkart Meetup #2: Scaling Search @Lendingkart
Ledingkart Meetup #2: Scaling Search @Lendingkart
 
Logs @ OVHcloud
Logs @ OVHcloudLogs @ OVHcloud
Logs @ OVHcloud
 
MongoDB: Advantages of an Open Source NoSQL Database
MongoDB: Advantages of an Open Source NoSQL DatabaseMongoDB: Advantages of an Open Source NoSQL Database
MongoDB: Advantages of an Open Source NoSQL Database
 
AWS big-data-demystified #1.1 | Big Data Architecture Lessons Learned | English
AWS big-data-demystified #1.1  | Big Data Architecture Lessons Learned | EnglishAWS big-data-demystified #1.1  | Big Data Architecture Lessons Learned | English
AWS big-data-demystified #1.1 | Big Data Architecture Lessons Learned | English
 
Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2Netflix Open Source Meetup Season 4 Episode 2
Netflix Open Source Meetup Season 4 Episode 2
 
AWS Big Data Demystified #1: Big data architecture lessons learned
AWS Big Data Demystified #1: Big data architecture lessons learned AWS Big Data Demystified #1: Big data architecture lessons learned
AWS Big Data Demystified #1: Big data architecture lessons learned
 
The Accidental DBA
The Accidental DBAThe Accidental DBA
The Accidental DBA
 
MongoDB vs. Postgres Benchmarks
MongoDB vs. Postgres Benchmarks MongoDB vs. Postgres Benchmarks
MongoDB vs. Postgres Benchmarks
 
TRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use CaseTRHUG 2015 - Veloxity Big Data Migration Use Case
TRHUG 2015 - Veloxity Big Data Migration Use Case
 
NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1NetflixOSS Meetup season 3 episode 1
NetflixOSS Meetup season 3 episode 1
 
OpenSearch.pdf
OpenSearch.pdfOpenSearch.pdf
OpenSearch.pdf
 
OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...
OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...
OSMC 2018 | Learnings, patterns and Uber’s metrics platform M3, open sourced ...
 
The Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization OpportunitiesThe Parquet Format and Performance Optimization Opportunities
The Parquet Format and Performance Optimization Opportunities
 
Red Hat Gluster Storage Performance
Red Hat Gluster Storage PerformanceRed Hat Gluster Storage Performance
Red Hat Gluster Storage Performance
 
Scala like distributed collections - dumping time-series data with apache spark
Scala like distributed collections - dumping time-series data with apache sparkScala like distributed collections - dumping time-series data with apache spark
Scala like distributed collections - dumping time-series data with apache spark
 
Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3  Big Data in 200 km/h | AWS Big Data Demystified #1.3
Big Data in 200 km/h | AWS Big Data Demystified #1.3
 
Log Management: AtlSecCon2015
Log Management: AtlSecCon2015Log Management: AtlSecCon2015
Log Management: AtlSecCon2015
 

Mehr von PGConf APAC

PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...
PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...
PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...PGConf APAC
 
PGConf APAC 2018: PostgreSQL 10 - Replication goes Logical
PGConf APAC 2018: PostgreSQL 10 - Replication goes LogicalPGConf APAC 2018: PostgreSQL 10 - Replication goes Logical
PGConf APAC 2018: PostgreSQL 10 - Replication goes LogicalPGConf APAC
 
PGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQL
PGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQLPGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQL
PGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQLPGConf APAC
 
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQLPGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQLPGConf APAC
 
Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...
Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...
Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...PGConf APAC
 
PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018
PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018
PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018PGConf APAC
 
PGConf APAC 2018 - Monitoring PostgreSQL at Scale
PGConf APAC 2018 - Monitoring PostgreSQL at ScalePGConf APAC 2018 - Monitoring PostgreSQL at Scale
PGConf APAC 2018 - Monitoring PostgreSQL at ScalePGConf APAC
 
PGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQL
PGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQLPGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQL
PGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQLPGConf APAC
 
PGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various cloudsPGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various cloudsPGConf APAC
 
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...PGConf APAC
 
PGConf APAC 2018 Keynote: PostgreSQL goes eleven
PGConf APAC 2018 Keynote: PostgreSQL goes elevenPGConf APAC 2018 Keynote: PostgreSQL goes eleven
PGConf APAC 2018 Keynote: PostgreSQL goes elevenPGConf APAC
 
Amazon (AWS) Aurora
Amazon (AWS) AuroraAmazon (AWS) Aurora
Amazon (AWS) AuroraPGConf APAC
 
Use Case: PostGIS and Agribotics
Use Case: PostGIS and AgriboticsUse Case: PostGIS and Agribotics
Use Case: PostGIS and AgriboticsPGConf APAC
 
How to teach an elephant to rock'n'roll
How to teach an elephant to rock'n'rollHow to teach an elephant to rock'n'roll
How to teach an elephant to rock'n'rollPGConf APAC
 
PostgreSQL on Amazon RDS
PostgreSQL on Amazon RDSPostgreSQL on Amazon RDS
PostgreSQL on Amazon RDSPGConf APAC
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PGConf APAC
 
Lightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesLightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesPGConf APAC
 
Lessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’tLessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’tPGConf APAC
 
Query Parallelism in PostgreSQL: What's coming next?
Query Parallelism in PostgreSQL: What's coming next?Query Parallelism in PostgreSQL: What's coming next?
Query Parallelism in PostgreSQL: What's coming next?PGConf APAC
 
Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!PGConf APAC
 

Mehr von PGConf APAC (20)

PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...
PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...
PGConf APAC 2018: Sponsored Talk by Fujitsu - The growing mandatory requireme...
 
PGConf APAC 2018: PostgreSQL 10 - Replication goes Logical
PGConf APAC 2018: PostgreSQL 10 - Replication goes LogicalPGConf APAC 2018: PostgreSQL 10 - Replication goes Logical
PGConf APAC 2018: PostgreSQL 10 - Replication goes Logical
 
PGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQL
PGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQLPGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQL
PGConf APAC 2018 - Lightening Talk #3: How To Contribute to PostgreSQL
 
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQLPGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
PGConf APAC 2018 - Lightening Talk #2 - Centralizing Authorization in PostgreSQL
 
Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...
Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...
Sponsored Talk @ PGConf APAC 2018 - Choosing the right partner in your Postgr...
 
PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018
PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018
PGConf APAC 2018 - A PostgreSQL DBAs Toolbelt for 2018
 
PGConf APAC 2018 - Monitoring PostgreSQL at Scale
PGConf APAC 2018 - Monitoring PostgreSQL at ScalePGConf APAC 2018 - Monitoring PostgreSQL at Scale
PGConf APAC 2018 - Monitoring PostgreSQL at Scale
 
PGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQL
PGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQLPGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQL
PGConf APAC 2018 - Where's Waldo - Text Search and Pattern in PostgreSQL
 
PGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various cloudsPGConf APAC 2018 - PostgreSQL performance comparison in various clouds
PGConf APAC 2018 - PostgreSQL performance comparison in various clouds
 
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
Sponsored Talk @ PGConf APAC 2018 - Migrating Oracle to EDB Postgres Approach...
 
PGConf APAC 2018 Keynote: PostgreSQL goes eleven
PGConf APAC 2018 Keynote: PostgreSQL goes elevenPGConf APAC 2018 Keynote: PostgreSQL goes eleven
PGConf APAC 2018 Keynote: PostgreSQL goes eleven
 
Amazon (AWS) Aurora
Amazon (AWS) AuroraAmazon (AWS) Aurora
Amazon (AWS) Aurora
 
Use Case: PostGIS and Agribotics
Use Case: PostGIS and AgriboticsUse Case: PostGIS and Agribotics
Use Case: PostGIS and Agribotics
 
How to teach an elephant to rock'n'roll
How to teach an elephant to rock'n'rollHow to teach an elephant to rock'n'roll
How to teach an elephant to rock'n'roll
 
PostgreSQL on Amazon RDS
PostgreSQL on Amazon RDSPostgreSQL on Amazon RDS
PostgreSQL on Amazon RDS
 
PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs PostgreSQL WAL for DBAs
PostgreSQL WAL for DBAs
 
Lightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst PracticesLightening Talk - PostgreSQL Worst Practices
Lightening Talk - PostgreSQL Worst Practices
 
Lessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’tLessons PostgreSQL learned from commercial databases, and didn’t
Lessons PostgreSQL learned from commercial databases, and didn’t
 
Query Parallelism in PostgreSQL: What's coming next?
Query Parallelism in PostgreSQL: What's coming next?Query Parallelism in PostgreSQL: What's coming next?
Query Parallelism in PostgreSQL: What's coming next?
 
Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!Why we love pgpool-II and why we hate it!
Why we love pgpool-II and why we hate it!
 

Kürzlich hochgeladen

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsRoshan Dwivedi
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Igalia
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Kürzlich hochgeladen (20)

Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live StreamsTop 5 Benefits OF Using Muvi Live Paywall For Live Streams
Top 5 Benefits OF Using Muvi Live Paywall For Live Streams
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

PGConf APAC 2018 - High performance json postgre-sql vs. mongodb

  • 1. High Performance JSON PostgreSQL vs. MongoDB PGConf APAC 2018 Dominic Dwyer Wei Shan Ang
  • 2. Disclaimer ● All images are freely available ● All our own work ● No swearing in our slides!
  • 3. VS
  • 4. GlobalSign ● GlobalSign identity & crypto services provider ● WebTrust certified Certificate Authority - 3rd in the world ● High volume services - IoT devices, cloud providers ● Cryptographic identities, timestamping, signing, etc
  • 5. About Me ● Database Engineer with 6 years of experience ● From Singapore but now based in London ● Originally worked on Oracle systems ● Switched to open-source databases in 2015 ● Currently working in GlobalSign as a “Data Reliability Engineer”
  • 6. Motivation ● Most benchmark results are biased - commercial interests ● We feel that benchmark results are measured “creatively” ● We use PostgreSQL and MongoDB a lot! ● We wanted to test the latest versions
  • 8. PostgreSQL ● Around for 21 years ● JSON supported since 9.2 ○ JSONB supported since 9.4 ● No JSON document statistics ○ Can be overcome with default_statistics_target or ALTER TABLE TABLE_NAME ALTER int4 SET STATISTICS 2000; ● Many JSON/JSONB operator/functions released since 9.2 ○ jsonb_set, jsonb_insert, etc ● Many JSON/JSONB bug fixes
  • 9. PostgreSQL Ecosystem ● “Build it yourself” ● Many High Availability solutions - all 3rd party ○ repmgr, pacemaker/corosync, Slony, Patroni and many more ● Connection Pooling ○ pgBouncer (single-threaded), pgpool-II ● Sharding ○ CitusDB ● Live version upgrades - tricky! ○ pg_upgrade, Slony, pg_dump and pg_logical
  • 11. MongoDB ● Relatively “young” database software ○ 8 years since first release ● Known as a /dev/null database in the early days (jepsen.io) ○ Tremendous stability improvements since then ○ All known reliability issues has been fixed since 3.2.12 ● Lots of WiredTiger bug fixes since 3.2 ○ Cache eviction ○ Checkpoints ○ Lost updates and dirty writes Source: jepsen.io
  • 12.
  • 13. ● Everything comes as standard: ○ Built-in replication ○ Built-in sharding ○ Live cluster version upgrades (ish) ■ Shutdown slave, upgrade slave, startup slave, repeat MongoDB
  • 14. Server Hardware ● 2x Intel CPU (2 socket with 20 cores) ○ 20 cores / 40 threads ● FreeBSD 11 ● ZFS file system ● Enterprise-Grade Intel SSDs
  • 15. Why do we use ZFS? ● Highly tunable filesystem ○ Layered caching (ARC, L2ARC, ZIL) ○ Advanced cache algorithm ■ Most Recently Used (MRU) ■ Most Frequently Used (MFU) ● Free snapshots ● Block level checksums ● Fast compression ● Nexenta, Delphix, Datto, Joyent, Tegile, Oracle (obviously) and many more!
  • 16. The Setup ● 1-3 Client machines (depending on the test) ● 1 Server, two jails - one for Postgres & one for Mongo ● PostgreSQL 9.6.5 with pgBouncer 1.7.2 ● MongoDB 3.4.9 with WiredTiger
  • 17. Performance Tuning ● We had to tune PostgreSQL heavily ○ System V IPC (shmmax, shmall, semmns and etc) ○ pgBouncer (single threaded, we need multiple instances to handle the load) ● MongoDB tuning was easy! ○ WiredTiger cache size ○ Compression settings ○ Default settings are usually good enough ● ZFS tuning ○ atime ○ recordsize ○ checksum ○ compression
  • 18. Sample JSON Document { "_id" : NumberLong(2), "name" : "lPAyAYpUvUDGiCd", "addresses" : [ { "number" : 59, "line1" : "EPJKLhmEPrrdYqaFxxEVMF", "line2" : "Rvlgkmb" }, { "number" : 59, "line1" : "DdCBXEW", "line2" : "FEV" } ], "phone_number" : "xPOYCOfSpieIxbGxpYEpi", "dob" : ISODate("2017-09-05T00:03:28.956Z"), "age" : 442006075, "balance" : 0.807247519493103, "enabled" : false, "counter" : 442006075, "padding" : BinData(0,"") } Sub-documents Varying field types Randomised binary blob
  • 19. About Me ● Engineer on the High Performance Platforms team ○ Our team builds a high volume CA platform & distributed systems ○ Based in Old Street, London ○ Greenfield project, all new stuff! ● Day job has me breaking all the things ○ Simulating failures, network partitions, etc ○ Assessing performance and durability ● Maintain performance fork of Go MongoDB driver ○ github.com/globalsign/mgo
  • 20. MPJBT Benchmark Tool ● MongoDB PostgreSQL JSONB Benchmarking Tool ○ Seriously, we’re open to better names……. ● Written in Golang ● Open source! ● Models typical workloads (but maybe not yours!) ○ Inserts, selects, select-updates, range queries, etc. ● Lockless outside of the database drivers ○ Low contention improves ability to push servers
  • 21. Why Go? ● Designed from the start for high concurrency ○ Thousands of concurrent workers is totally fine ● Co-operative scheduler can maximise I/O throughput ○ When blocked, Go switches to another worker ○ Blocked worker is woken up when it’s unblocked ○ Much cheaper context switching - occurs in userland ● Familiarity - I use it every day!
  • 24. Average isn’t very helpful ● I have an average of 52.2ms
  • 25. Average isn’t very helpful ● I have an average of 52.2ms 120.080231 36.237584 25.904811 44.053916 66.617778 59.713100 74.620329 1.689589 90.641940 27.202953 51.162331 52.202392 52.511745 50.439697 52.975609 52.567941 53.067609 52.122890 51.159180 52.390616 OR
  • 26. Inserts - Latency Histogram
  • 27. Inserts - Latency Histogram 1s 2s 3s
  • 28. Inserts - Throughput insert 30877op/s avg.0ms insert 27509op/s avg.0ms insert 29997op/s avg.0ms insert 31143op/s avg.0ms insert 22576op/s avg.0ms insert 0op/s avg.0ms insert 0op/s avg.0ms insert 1op/s avg.2561ms insert 0op/s avg.0ms insert 20703op/s avg.6ms insert 31154op/s avg.0ms insert 31298op/s avg.0ms insert 30359op/s avg.0ms insert 26081op/s avg.0ms insert 25938op/s avg.0ms insert 26649op/s avg.0ms insert 26009op/s avg.0ms insert 26029op/s avg.0ms insert 25522op/s avg.0ms insert 25960op/s avg.0ms insert 26000op/s avg.0ms insert 25576op/s avg.0ms insert 26159op/s avg.0ms insert 25628op/s avg.0ms insert 26071op/s avg.0ms insert 25856op/s avg.0ms
  • 29. MongoDB cache eviction bug? ● Show some cool graphs ● https://jira.mongodb.org/browse/SERVER-29311 ●
  • 30. MongoDB cache eviction bug - not a bug? ● Reported to MongoDB ○ https://jira.mongodb.org/browse/SERVER-29311 ○ Offered to run any tests and analyse data ● Ran 36 different test combinations ○ ZFS compression: lz4, zlib, off ○ MongoDB compression: snappy, zlib, off ○ Filesystem block sizes ○ Disk configurations ○ Tried running on Linux/XFS ● Always saw the same pauses ○ Described as an I/O bottleneck (twice!)
  • 31. Profile with Dtrace! ● Dynamic tracer built into FreeBSD (and others) ○ Originally created by Sun for Solaris ○ Ported to FreeBSD ○ Low profiling overhead ● Traces in both kernel and userspace ○ Hook syscalls, libc, application functions, etc ○ Access function arguments, kernel structures, etc ● Hooks expressed in D like DSL ○ Conditionally trigger traces ○ Really simple to use
  • 32. Trace the Virtual File System ● Measures application file system operations ○ Kernel level ○ File system agnostic (XFS, ZFS, anything) ● Records data size & latency: ○ Reads - vfs::vop_read ○ Writes - vfs::vop_write ● Configured to output ASCII histograms ○ Per second aggregations ○ Broken down by type ○ Timestamped for correlating with MPJBT logs
  • 33. VFS Writes vs. Throughput - PostgreSQL
  • 34. VFS Writes vs. Throughput - MongoDB
  • 35. Insert / Update / Select comparison ● Preloaded 10,000,000 records in the table ○ No padding - records are ~320 bytes ● 3 clients running different workloads ○ 50 workers inserting ○ 50 workers updating ○ 50 workers performing a range over partial index ● Both databases become CPU bound ○ Database server is under maximum load ○ Typically avoided in a production environment ○ Always good to know your maximum numbers
  • 40. Welcome to the future MongoDB 3.6.2 & PostgreSQL 10.3
  • 41. Changes in MongoDB 3.6 ● Lots of performance improvements in WiredTiger ○ More than 400 WiredTiger related fixes ○ Integrate logical timestamps in MongoDB/WiredTiger ○ Improvements in cache eviction ○ Improvements in checkpoint scrubbing
  • 42. Changes in PostgreSQL 10 ● Lots of performance improvements in 10 ○ Improvements to parallel queries ○ Multi-column statistics ○ VACUUM speed enhancements ○ Improvements on hash joins
  • 43. VFS Writes vs. Throughput - MongoDB 3.6
  • 44. VFS Writes vs. Throughput - MongoDB 3.4
  • 45. VFS Writes vs. Throughput - PostgreSQL
  • 47. MongoDB 3.6 vs 3.4 Mongo 3.4 99%tile => 956ms Mongo 3.6 99%tile => 790ms
  • 48. PostgreSQL 9.6 vs 10 Postgres 9.6 99%tile => 97ms Postgres 10 99%tile => 88ms
  • 49. MongoDB 3.6 vs PostgreSQL 10 Postgres 10 99%tile => 88ms Mongo 3.6 99%tile => 790ms
  • 51. UPDATE/SELECT Zipfian Workload ● Zipfian workload ○ Higher probability of picking the latest records ○ Heavily skewed towards to the most recent data ● 2 mpjbt process running from 2 different servers ○ 1 running UPDATE zipfian workload ○ 1 running SELECT zipfian workload
  • 52. MongoDB 3.6 vs PostgreSQL 10 Postgres 10 99%tile => 368ms Mongo 3.6 99%tile => 19.2ms Postgres 10 99%tile => 9412ms Mongo 3.6 99%tile => 55ms
  • 54. PostgreSQL’s VACUUM ● An UPDATE operation in PostgreSQL is a INSERT + DELETE operation ● VACUUM reclaims dead tuples ● PostgreSQL runs “autovacuum” so you don’t have to ● Write heavy workloads trigger autovacuum more often
  • 56.
  • 57. Summary - PostgreSQL ● PostgreSQL has poor performance out of the box ○ Requires a decent amount of tuning to get good performance ● Does not scale well with large number of connections ○ Connection pooling is a must ● VACUUM is an overhead of MVCC and ACID goodness ● ACID compliance ○ Transactions with your JSON! ● Consistent performance
  • 58. Summary - MongoDB ● MongoDB has decent performance out of the box ● Unstable throughput and latency ○ Much better in 3.6, but still a way to go ● Scales well with large number of connections ● Strong horizontal scalability ● Throughput bug is (still!) annoying ● Rolling upgrades are ridiculously easy
  • 59. Summary ● There is no such thing as the best database in the world! ● Choosing the right database for your application is never easy ○ How well does it scale? ○ How easy is it to perform upgrades? ○ How does it behave under stress? ● What are your application’s requirements? ○ Want database level ACID with your JSON? ○ Or application level?! 2 phase commit ■ Sad developers ● Do your own research!
  • 60. TODO ● Released MPJBT on Github ○ Open source for all ○ github.com/domodwyer/mpjbt ● Support custom workloads ● Test MongoDB 4.0 transactions ● Run similar tests against CitusDB ○ You guys have inspired us to keep looking! ● Run performance test for MongoRocks (LSM)
  • 62. References ● https://people.freebsd.org/~seanc/postgresql/scale15x-2017-postgresql_zfs_b est_practices.pdf ● https://jepsen.io/analyses/mongodb-3-4-0-rc3 ● https://dba.stackexchange.com/questions/167525/inconsistent-statistics-on-js onb-column-with-btree-index ● https://github.com/domodwyer/mpjbt ● https://jira.mongodb.org/browse/WT-3633 ● https://jira.mongodb.org/browse/WT-3457 ● https://jira.mongodb.org/browse/WT-3381
  • 63. Previous Benchmark Results ● http://tiborsimko.org/postgresql-mongodb-json-select-speed.html ● http://erthalion.info/2015/12/29/json-benchmarks/ ● https://www.enterprisedb.com/postgres-plus-edb-blog/marc-linster/postgres-o utperforms-mongodb-and-ushers-new-developer-reality ● https://pgconf.ru/media/2017/04/03/20170317H2_O.Bartunov_json-2017.pdf ● https://www.slideshare.net/toshiharada/ycsb-jsonb