Skip to content

MongoDB vs MySQL Entity Attribute Value table performance comparison

Notifications You must be signed in to change notification settings

PsychoSanchez/mongodb-vs-mysql-eav-benchmark

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MongoDB vs MySQL EAV benchmark

This is a benchmark of MongoDB vs MySQL for EAV (Entity-Attribute-Value) data model.

It tests bulk insert operations and get by entity id queries for 100000 entities with 100 attributes each.

Both MongoDB and MySQL are running in Docker containers, gateway is a Node.js app running fastify.

Test runs autoncannon requests from 100 connections over 30 seconds on a 2022 Macbook Pro M1 with 32GB RAM.

Setup

  • Install docker and docker-compose.
  • Install nodejs dependencies: nvm use && npm install

Run

  • Start benchmark with npm start
  • Update README.md by running npm run update-readme

Results

Database initialization with 100000 entities and 100 attributes each using bulk insert

Subject Time
MongoDB🥇 21.9s
MySQL JSON🥈 24.3s
MySQL EAV 2m 57.8s
PostgreSQL JSONB🥉 25.6s

Benchmarks

Benchmarks

Get random by ID (full document 100 fields)

10 connections over 30 seconds

Stat MongoDB🥉 MySQL JSON🥇 MySQL EAV PostgreSQL JSONB🥈
Latency 2ms 2ms 8ms 2ms
Req/Sec 3807 4888 1191 4129
Bytes/Sec 7.57 9.57 2.31 8.08
Total Requests 114K 147K 36K 124K
Server errors - - - -

50 connections over 20 seconds

Stat MongoDB🥉 MySQL JSON🥈 MySQL EAV PostgreSQL JSONB🥇
Latency 9ms 7ms 59ms 7ms
Req/Sec 5293 6297 844 6378
Bytes/Sec 10.53 12.33 1.64 12.48
Total Requests 106K 126K 17K 128K
Server errors - - - -

100 connections over 10 seconds

Stat MongoDB🥉 MySQL JSON🥈 MySQL EAV PostgreSQL JSONB🥇
Latency 19ms 15ms 134ms 15ms
Req/Sec 5250 6346 739 6364
Bytes/Sec 10.45 12.43 1.43 12.46
Total Requests 53K 70K 7K 64K
Server errors - - - -

Get random by ID (bulk 100 documents)

10 connections over 30 seconds

Stat MongoDB🥉 MySQL JSON🥈 MySQL EAV PostgreSQL JSONB🥇
Latency 65ms 35ms 1s 33ms
Req/Sec 153 280 12 296
Bytes/Sec 27.89 50.23 2.07 54.26
Total Requests 5K 8K 0K 9K
Server errors - - - -

50 connections over 20 seconds

Stat MongoDB🥉 MySQL JSON🥇 MySQL EAV PostgreSQL JSONB🥈
Latency 331ms 168ms 2.4s 170ms
Req/Sec 150 296 20 292
Bytes/Sec 27.33 53.07 3.48 53.38
Total Requests 3K 6K 0K 6K
Server errors - - - -

100 connections over 10 seconds

Stat MongoDB🥈 MySQL JSON MySQL EAV🥉 PostgreSQL JSONB🥇
Latency 640ms 41ms 4.6s 372ms
Req/Sec 151 2406 17 264
Bytes/Sec 27.60 36.83 2.98 48.29
Total Requests 2K 24K 0K 3K
Server errors - ❌ 22054 - -

Get random by ID (partial document 10 fields)

10 connections over 30 seconds

Stat MongoDB MySQL JSON🥇 MySQL EAV🥉 PostgreSQL JSONB🥈
Latency 2ms 2ms 2ms 2ms
Req/Sec 4181 4948 4275 4294
Bytes/Sec 2.93 3.31 2.85 2.87
Total Requests 125K 148K 128K 129K
Server errors - - - -

50 connections over 20 seconds

Stat MongoDB🥇 MySQL JSON🥉 MySQL EAV PostgreSQL JSONB🥈
Latency 7ms 7ms 9ms 7ms
Req/Sec 6748 6410 5383 6532
Bytes/Sec 4.72 4.29 3.59 4.37
Total Requests 135K 128K 108K 131K
Server errors - - - -

100 connections over 10 seconds

Stat MongoDB🥇 MySQL JSON🥉 MySQL EAV PostgreSQL JSONB🥈
Latency 14ms 15ms 18ms 15ms
Req/Sec 6687 6443 5501 6504
Bytes/Sec 4.68 4.31 3.67 4.35
Total Requests 67K 64K 55K 65K
Server errors - - - -

Get random by ID (bulk 100 documents, partial document 10 fields)

10 connections over 30 seconds

Stat MongoDB🥇 MySQL JSON🥉 MySQL EAV PostgreSQL JSONB🥈
Latency 15ms 24ms 133ms 23ms
Req/Sec 650 403 75 432
Bytes/Sec 32.98 20.46 3.79 21.89
Total Requests 20K 12K 2K 13K
Server errors - - - -

50 connections over 20 seconds

Stat MongoDB🥇 MySQL JSON MySQL EAV🥉 PostgreSQL JSONB🥈
Latency 80ms 14ms 516ms 118ms
Req/Sec 619 3544 96 421
Bytes/Sec 31.41 12.03 4.84 21.38
Total Requests 12K 71K 2K 8K
Server errors - ❌ 66611 - -

100 connections over 10 seconds

Stat MongoDB🥇 MySQL JSON MySQL EAV🥉 PostgreSQL JSONB🥈
Latency 159ms 14ms 877ms 233ms
Req/Sec 621 7072 109 424
Bytes/Sec 31.51 2.55 5.49 21.52
Total Requests 6K 71K 1K 4K
Server errors - ❌ 70707 - -

About

MongoDB vs MySQL Entity Attribute Value table performance comparison

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published