├── .editorconfig ├── .gitignore ├── README.md ├── index.js ├── mongo.js ├── mysql.js └── package.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | indent_style = tab 6 | indent_size = 4 7 | end_of_line = lf 8 | charset = utf-8 9 | trim_trailing_whitespace = true 10 | insert_final_newline = true 11 | 12 | [*.md] 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | bower_components/ 3 | .tmp/ 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ### Mongo Mysql Test Performance in Nodejs 2 | 3 | #### Installation 4 | 5 | ``` 6 | git clone https://github.com/webcaetano/mongo-mysql.git 7 | cd mongo-mysql 8 | npm install 9 | node index 10 | ``` 11 | 12 | Comparison tests made by this repo 13 | 14 | With data size in rows numbers : 15 | 16 | 10 rows 17 | ``` 18 | mysql insert: 1702ms 19 | mysql select: 11ms 20 | 21 | mongo insert: 47ms 22 | mongo select: 12ms 23 | ``` 24 | 25 | 100 rows 26 | ``` 27 | mysql insert: 8171ms 28 | mysql select: 10ms 29 | 30 | mongo insert: 167ms 31 | mongo select: 60ms 32 | ``` 33 | 34 | 35 | 1.000 rows 36 | ``` 37 | mysql insert: 94813ms (1.58 minutes) 38 | mysql select: 13ms 39 | 40 | mongo insert: 1013ms 41 | mongo select: 677ms 42 | ``` 43 | 44 | 45 | 10.000 rows 46 | ``` 47 | mysql insert: 924695ms (15.41 minutes) 48 | mysql select: 144ms 49 | 50 | mongo insert: 9956ms (9.95 seconds) 51 | mongo select: 4539ms (4.539 seconds) 52 | ``` 53 | 54 | [@ivanpopelyshev](https://github.com/ivanpopelyshev) results : 55 | 56 | On SSD virtual server [vultr.com](vultr.com) 57 | 58 | ``` 59 | 1000: 60 | mysql insert: 1214ms 61 | mongo insert: 1401ms 62 | mysql select: 9ms 63 | mongo select: 326ms 64 | 65 | 10000: 66 | mysql insert: 11557ms 67 | mongo insert: 7751ms 68 | mysql select: 30ms 69 | mongo select: 2957ms 70 | ``` 71 | 72 | ENGINE='MyISAM' for mysql tables: 73 | 74 | ``` 75 | 1000: 76 | mysql insert: 361ms 77 | mongo insert: 938ms 78 | mysql select: 9ms 79 | mongo select: 345ms 80 | 81 | 10000: 82 | mysql insert: 3394ms 83 | mongo insert: 6985ms 84 | mysql select: 31ms 85 | mongo select: 3080ms 86 | ``` 87 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | var spinner = require("char-spinner"); 2 | var async = require("async"); 3 | spinner(); 4 | 5 | var dataSize = 1000; 6 | 7 | 8 | async.series([ 9 | /* == INSERT == */ 10 | function(callback){ 11 | require('./mysql')('insert',dataSize,callback); 12 | }, 13 | function(callback){ 14 | require('./mongo')('insert',dataSize,callback); 15 | }, 16 | /* == SELECT == */ 17 | function(callback){ 18 | require('./mysql')('find',dataSize,callback); 19 | }, 20 | function(callback){ 21 | require('./mongo')('find',dataSize,callback); 22 | } 23 | ],function(){ 24 | process.exit(); 25 | }) 26 | -------------------------------------------------------------------------------- /mongo.js: -------------------------------------------------------------------------------- 1 | var async = require('async'); 2 | var faker = require('Faker'); 3 | var mongojs = require('mongojs'); 4 | var db = mongojs('test',["test","team"]); 5 | 6 | var self = {}; 7 | 8 | self.insert = function(dataSize,done){ 9 | var run = []; 10 | 11 | run.push(function(callback){ 12 | db.test.remove({},callback); 13 | }) 14 | 15 | run.push(function(callback){ 16 | db.team.remove({},callback); 17 | }) 18 | 19 | run.push(function(callback){ 20 | db.team.createIndex({id:1},callback); 21 | }); 22 | 23 | run.push(function(callback){ 24 | db.test.createIndex({team:1},callback); 25 | }); 26 | 27 | for(var i=0;i