HarperDB, like any database, can place a tremendous load on its storage resources. Storage, not CPU or memory, will more often be the bottleneck of server, virtual machine, or a container running HarperDB. Understanding how storage works, and how much storage performance your workload requires, is key to ensuring that HarperDB performs as expected.
The primary measure of storage performance is the number of input/output operations per second (IOPS) that a storage device can perform. Different storage devices can have dramatically different performance profiles. A hard drive (HDD) might only perform a hundred or so IOPS, while a solid state drive (SSD) might be able to perform tens or hundreds of thousands of IOPS.
Cloud providers like AWS, which powers HarperDB Cloud, don’t typically attach individual disks to a virtual machine or container. Instead, they combine large numbers of storage drives to create very high performance storage servers. Chunks (volumes) of that storage is then carved out and presented to many different virtual machines and containers. Due to the shared nature of this type of storage, the cloud provider places configurable limits on the number of IOPS that a volume can perform. The same way that cloud providers charge more for larger capacity volumes, they also charge more for volumes with more IOPS.
HarperDB Cloud utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp3) volumes. This is the most common storage type used in AWS, as it provides reasonable performance for most workloads, at a reasonable price.
AWS EBS gp3 volumes have a baseline performance level of 3,000 IOPS, as a result, all HarperDB Cloud storage options will offer 3,000 IOPS. We plan to offer scalable IOPS as an option in the future.
You can read more about AWS EBS volume IOPS here: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volume-types.html.
The number of IOPS required for a particular workload is influenced by many factors. Testing your particular application is the best way to determine the number of IOPS required. A reliable method is to estimate about two IOPS for every index, including the primary key itself. So if a table has two indices besides primary key, estimate that an insert or update will require about six IOPS. Note that that can often be closer to one IOPS per index under load due to internal batching of writes, and sometimes even better when doing sequential inserts. Again it is best to test to verify this with application specific data and write patterns.
For assistance in estimating IOPS requirements feel free to contact HarperDB Support or join our Community Slack Channel.
Sensor Data Collection
In case of IoT sensors where data collection will be sustained high IOPS are required. While there are not typically large queries going on in this case, there is a high volume of data being ingested. This implies that IOPS will be sustained at a high level. For example, if you are collection 100 records per second you would expect to need roughly 3,000 IOPS just to handle the data inserts.
Data Analytics/BI Server
Providing a server for analytics purposes typically requires a larger machine. Typically these cases involve large scale SQL joins and aggregations, which puts a large strain on reads. HarperDB utilizes an in-memory cache, which provides a significant performance boost on machines with large amounts of memory. However, if disparate datasets are constantly being queried and/or new data is frequently being loaded, you will find that the system still needs to have high IOPS to meet performance demand.
Web Services
Typical web service implementations with discrete reads and writes often do not need high IOPS to perform as expected. This is often the case is more transactional systems without the requirement for high performance load. A good rule to follow is that any HarperDB operation that requires a data scan will be IOPS intensive, but if these are not frequent then the EBS boost will suffice. Queries utilizing equals operations in either SQL or NoSQL do not require a scan due to HarperDB’s native indexing.
High Performance Database
Ultimately, if performance is your top priority, HarperDB should be run on bare metal hardware. Cloud providers offer these options at a higher cost, but they come with obvious performance improvements.
HarperDB Cloud is the easiest way to test drive HarperDB, it’s HarperDB-as-a-Service. Cloud handles deployment and management of your instances in just a few clicks. HarperDB Cloud is currently powered by AWS with additional cloud providers on our roadmap for the future.
These instances are only accessible from the Verizon network. When accessing your HarperDB instance please ensure you are connected to the Verizon network, examples include Verizon 5G Internet, Verizon Hotspots, or Verizon mobile devices.
HarperDB on Verizon 5G Wavelength brings HarperDB closer to the end user exclusively on the Verizon network resulting in as little as single-digit millisecond response time from HarperDB to the client.
Instances are built via AWS Wavelength. You can read more about AWS Wavelength here.
HarperDB 5G Wavelength Instance Specs While HarperDB 5G Wavelength bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail*.
AWS EC2 Instance Size | RAM (GiB) | # vCPUs | Network (Gbps) | Processor |
---|---|---|---|---|
*Specifications are subject to change. For the most up to date information, please refer to AWS documentation.
HarperDB 5G Wavelength utilizes AWS Elastic Block Storage (EBS) General Purpose SSD (gp2) volumes. This is the most common storage type used in AWS, as it provides reasonable performance for most workloads, at a reasonable price.
AWS EBS gp2 volumes have a baseline performance level, which determines the number of IOPS it can perform indefinitely. The larger the volume, the higher it’s baseline performance. Additionally, smaller gp2 volumes are able to burst to a higher number of IOPS for periods of time.
Smaller gp2 volumes are perfect for trying out the functionality of HarperDB, and might also work well for applications that don’t perform many database transactions. For applications that perform a moderate or high number of transactions, we recommend that you use a larger HarperDB volume. Learn more about the impact of IOPS on performance here.
You can read more about AWS EBS gp2 volume IOPS here.
HarperDB Cloud instance alarms are triggered when certain conditions are met. Once alarms are triggered organization owners will immediately receive an email alert and the alert will be available on the page. The below table describes each alert and their evaluation metrics.
Alarm: Title of the alarm.
Threshold: Definition of the alarm threshold.
Intervals: The number of occurrences before an alarm is triggered and the period that the metric is evaluated over.
Proposed Remedy: Recommended solution to avoid the alert in the future.
Alarm | Threshold | Intervals | Proposed Remedy |
---|
t3.medium
4
2
Up to 5
Up to 3.1 GHz Intel Xeon Platinum Processor
t3.xlarge
16
4
Up to 5
Up to 3.1 GHz Intel Xeon Platinum Processor
r5.2xlarge
64
8
Up to 10
Up to 3.1 GHz Intel Xeon Platinum Processor
Storage | > 90% Disk | 1 x 5min |
CPU | > 90% Avg | 2 x 5min |
Memory | > 90% RAM | 2 x 5min |
While HarperDB Cloud bills by RAM, each instance has other specifications associated with the RAM selection. The following table describes each instance size in detail*.
AWS EC2 Instance Size | RAM (GiB) | # vCPUs | Network (Gbps) | Processor |
---|---|---|---|---|
*Specifications are subject to change. For the most up to date information, please refer to AWS documentation: https://aws.amazon.com/ec2/instance-types/.
t3.nano
0.5
2
Up to 5
2.5 GHz Intel Xeon Platinum 8000
t3.micro
1
2
Up to 5
2.5 GHz Intel Xeon Platinum 8000
t3.small
2
2
Up to 5
2.5 GHz Intel Xeon Platinum 8000
t3.medium
4
2
Up to 5
2.5 GHz Intel Xeon Platinum 8000
m5.large
8
2
Up to 10
Up to 3.1 GHz Intel Xeon Platinum 8000
m5.xlarge
16
4
Up to 10
Up to 3.1 GHz Intel Xeon Platinum 8000
m5.2xlarge
32
8
Up to 10
Up to 3.1 GHz Intel Xeon Platinum 8000
m5.4xlarge
64
16
Up to 10
Up to 3.1 GHz Intel Xeon Platinum 8000
m5.8xlarge
128
32
10
Up to 3.1 GHz Intel Xeon Platinum 8000
m5.12xlarge
192
48
10
Up to 3.1 GHz Intel Xeon Platinum 8000
m5.16xlarge
256
64
20
Up to 3.1 GHz Intel Xeon Platinum 8000
m5.24xlarge
384
96
25
Up to 3.1 GHz Intel Xeon Platinum 8000