Here we look at how we were able to achieve 5 million writes per second & 60 million reads per second with only 20 GridDB nodes on Google Cloud.
Introduction GridDB is a super fast database for IoT and Big Data applications developed by Toshiba Digital Solutions Corporation. It has a unique
key-container data model that is ideal for storing sensor data, a memory first, storage second architecture that provides incredible performance, and it easily scales out to up to 1,000 nodes. For use of GridDB in the cloud, please take a look at the GridDB Cloud Website Several databases have published reports over the last few years, including Cassandra, Aerospike, and Couchbase in which they share that were able to sustain one million writes-per-second running on public cloud services. We (Fixstars) and the GridDB team took that as a challenge and decided to see how much further we could scale GridDB and drive down the performance-per-dollar. While these tests showcase GridDB’s excellent performance on Google Cloud Platform, they also showcase best practices when designing a GridDB IoT, IIoT, and other applications that require high velocity write performance.
Cloud Configuration
Google Cloud Platform was used to run the benchmark. We used the default, boot-persistent n1-standard-8 instance types with a 375GB SSD each and with n1-standard-8 instances eight vCPUs and 30GB of memory published per instance pricing was 0.042/hour. A 1:1 ratio of server and client instances were used: for example, for 3 servers, 3 clients were used and for 5 servers, 5 clients were used and so on. From prior experience, we knew that the sorts of GridDB workloads that we had planned would be I/O bound and that GCP’s SSD offered the best performance value ratio. The fast storage combined with GCP’s Jupiter networking fabric that offers faster 16 gigabit network egress means that GCP is an ideal platform for GridDB allowing us to achieve near linear scalability from three to twenty server instances.
Client Software A new benchmark client was written in Java with maximum performance in mind. The client would read or write to one container per thread per process eliminating any lock contention. Like the other databases who have published 1 Million Writes successes, each record was 200 bytes and 100M records were inserted and read for each trial.
GridDB Configuration GridDB’s configuration was changed from the default parameters with the following settings:
- storeMemoryLimit: 20480MB, checkpointMemoryLimit: 4096MB (Use as much memory for GridDB as possible leaving just enough memory for operating system and other required applications. )
- concurrency: 8 (One worker thread per CPU core.)
- storeCompressionMode: COMPRESSION (Reduce disk I/O.)
- replicationNum: 3 (Each piece of data is stored on three instances.)
Results With just 3 Google Cloud nodes, GridDB was close to completing 1 million writes per second with 897,718 operations per second. Performance was able to scale linearly as servers were added, with 20 servers being able to achieve our goal of 5 million writes-per-second.
GridDB Performance using Google Cloud Platform
Three GridDB servers are able to perform just over 6 million reads per second while 20 servers performed over 60 million reads per second.
