# Performance Evaluation of NoSQL Document Databases: Couchbase, CouchDB, and MongoDB
## 2 Related Work  
NoSQL document databases have become more popular and are widely used in different areas. Several studies compare and evaluate the performance of NoSQL databases, including some NoSQL document databases. The research on NoSQL databases is still growing, and only a few academic papers have been published. Thus, just a few studies compare and evaluate the performance of only the NoSQL document database type. The NoSQL databases, ArangoDB, HBase, MongoDB, PostgreSQL, and an ORDBMS (object-relational database management system) were compared in [5]. In this study, a performance evaluation was conducted using YCSB with only three workloads and with 100% insert, 100% read, and 100% update, respectively. They varied the number of records by 10,000, 100,000, and 1,000,000 records and used just one and four threads. For each workload, ten runs were performed, and the average of these values was used as the final result of the experiment. The tests were performed on a Linux Ubuntu environment. The authors concluded that ArangoDB and MongoDB have similar performance when using a load of 10,000 records. However, when the workload increases, MongoDB performs better than ArangoDB. Unlike the study presented, we carried out more types of operations, such as read-modify-write and scanning operations. The number of records used and the number of threads was also different. We used 100,000, 1,000,000, and 10,000,000 records. We varied the number of threads, using one, three, and six threads. For each workload, we ran it three times, and the average of these values was used as the final result of the experiment, and the tests were performed on a Windows environment. In [6], the authors evaluated the performance of four NoSQL document databases MongoDB, ArangoDB, OrientDB, and Elasticsearch. The authors used the standard YCSB workloads, except workload E, which includes operations such as scan. One million records were used, and the number of threads was varied by 1, 3, 6, 10, 20, 32, 50, 64, and 128 threads. The tests were performed in an Ubuntu environment, and it was concluded that the database with the best performance was MongoDB, followed by ArangoDB, OrientDB, and, finally, Elasticsearch. The authors in [7] carried out a study to evaluate the performance of three document-type NoSQL databases: MongoDB, Couchbase, and RethinkDB. Apache JMeter was used, which is an open-source tool that performs tests and measures their performance. These tests are made up of operations such as delete, get, patch, and post. In this evaluation, a single thread and several threads were used. In contrast to the results obtained in the present paper, these authors obtained a better performance with Couchbase in most tests, either with one or multiple threads. The exception was in the post-operation that obtained better results with MongoDB. In [8], the authors evaluated two NoSQL databases: Cassandra and MongoDB. Cassandra is a column database, and MongoDB is a document database. The authors compared and analyzed the two databases using the YCSB, where they added two more workloads, G and H, that focus on update operations. In this work, we not only added two more workloads to focus on update operations, but we also used all the standard YCSB workloads, from A to F. These authors did not use workloads D and E because they tended to focus on update and read operations. Additionally, they defined the size per record with ten fields, each of 100 bytes, meaning 1 KB per record. The total records used were 100 thousand, 280 thousand, and 700 thousand. In this paper, we defined twenty fields each of 500 bytes, meaning 10 KB per record, and we used 100 thousand, 1 million, and 10 million records. We evaluate the databases in a Windows environment, and these authors evaluate them in an Ubuntu environment. Just like us, these authors also ran all workloads three times, and the values shown represent the average value of the three executions.