# Performance Evaluation of NoSQL Document Databases: Couchbase, CouchDB, and MongoDB
## 4 Yahoo! Cloud Serving Benchmark (YCSB)
\begin{table}
\begin{tabular}{c c c c c c} \hline \hline
**Workloads** & **Operations** & **Distribution** & **Records** & **Threads** & **Data Size** \\ \hline \multirow{3}{*}{A—Update Heavy} & Read: 50\% & & 100,000 & 1 & Field size = 500 bytes \\  & Update: 50\% & Zipfian & 1,000,000 & 3 & Field number = 20 \\  & Update: 50\% & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \multirow{3}{*}{B—Read Mostly} & Read: 95\% & & 100,000 & 1 & Field size = 500 bytes \\  & Update: 5\% & Zipfian & 1,000,000 & 3 & Field number = 20 \\  & & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \multirow{3}{*}{C—Read Only} & Read: 100\% & & 100,000 & 1 & Field size = 500 bytes \\  & Read: 100\% & Zipfian & 1,000,000 & 3 & Field number = 20 \\  & & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \multirow{3}{*}{D—Read Latest} & Read: 95\% & & 100,000 & 1 & Field size = 500 bytes \\  & Insert: 5\% & Latest & 1,000,000 & 3 & Field number = 20 \\  & & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \multirow{3}{*}{E—Short Ranges} & Scan: 95\% & Zipfian & 100,000 & 1 & Field size = 500 bytes \\  & Insert: 5\% & Uniform & 1,000,000 & 3 & Field number = 20 \\  & & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \multirow{3}{*}{F—Read–Modify–Write} & Read–Modify–Write: 50\% & & 100,000 & 1 & Field size = 500 bytes \\  & Read–Modify–Write: 50\% & Zipfian & 1,000,000 & 3 & Field number = 20 \\  & & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \multirow{3}{*}{G—Update Mostly} & Update: 95\% & & 100,000 & 1 & Field size = 500 bytes \\  & Read: 5\% & Zipfian & 1,000,000 & 3 & Field number = 20 \\  & & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \multirow{3}{*}{H—Update Only} & Update: 100\% & Zipfian & 100,000 & 1 & Field size = 500 bytes \\  & Update: 100\% & Zipfian & 1,000,000 & 3 & Field number = 20 \\  & & & 10,000,000 & 6 & 500 bytes \(\times\) 20 = 10 KB \\ \hline \hline \end{tabular}
\end{table} 
Table 1: Workloads used to evaluate the NoSQL databases. Figure 5: YCSB Client Architecture. were performed, and the average of these runtime values was used as the final result of the experiment. The experimental setup for the tests was an HP Pavilion Laptop 15t-eg000 computer, with 476 GB of SSD disk, 15.4 GB of memory, an AMD Ryzen 5 4500U processor, with Radeon Graphics, 2375 MHz, six cores with six logical processors in a Windows 10 environment. The test plan was designed to analyze the behavior of the databases when they scale up and their parallelism capacity. To this end, we used a reasonable number of records to simulate big data (100,000, 1 million, and 10 million records). Because of computer resources limitation, we did not use more than 10 million records, which occupy approximately 95 GB on disk. According to our tenfold increment, if we added the 100 million records, they would occupy approximately 953 GB on disk, and our computer can support only 476 GB. We used threads to analyze the database engine's capability for parallelism. The environment used supports only six cores, so we varied the number of threads to one, three, and six.