This document describes the performance results of NosDB in a distributed environment. Please note that these tests were conducted in a QA environment. You are likely to get better performance in your production environment than reported here.
To understand the benchmark results here are a few key terms to guide you:
Operating System: | Windows 2012 R2 Server |
Architecture: | X64 |
Number of processors: | Octa Core Processor |
Memory: | 28GB in each server |
NosDB version: | 1.3 SP2 |
Network speed: | Two 1-Gbit NICs |
Client Configuration: | NET Clients accessing database cluster over LAN. Number of clients increased until max load achieved for the given database cluster size. |
Data size: | JSON object + 1KB of data |
Each shard in our benchmark test has one Primary Node and one Secondary Node. The number of clients and client machines are increased until the maximum load is achieved for the NosDB cluster size. Our scalability test starts from a cluster consisting of a single shard. To measure the scalability of NosDB, new shards are added and the tests are rerun. The following diagrams report the benchmark test results.
As you can see, throughput of reads and writes increases with the number of shards, showing that NosDB is linearly scalable. given the fact that the more shards we add to the cluster the more the data throughput increases.
For this benchmark, three types of queries (containing the WHERE clause) were run to fetch data:
The results are shown below.
Query performance improves as we increase the number of shards in the cluster, showing linear scalability for queries. In a practical sense, you can add shards without limit and increase your data throughput linearly with every addition. This eliminates even the possibility that your database tier will become a data through-put bottleneck.