| Literature DB >> 36193238 |
Baldeep Singh1,2, Randall Martyr1,2, Thomas Medland2, Jamie Astin2, Gordon Hunter1, Jean-Christophe Nebel1.
Abstract
About fifty years ago, the world's first fully automated system for trading securities was introduced by Instinet in the US. Since then the world of trading has been revolutionised by the introduction of electronic markets and automatic order execution. Nowadays, financial institutions exploit the associated flow of daily data using more and more advanced analytics to gain valuable insight on the markets and inform their investment decisions. In particular, time series of Open High Low Close prices and Volume data are of special interest as they allow identifying trading patterns useful for forecasting both stock prices and volumes. Traditionally, relational databases have been used to store this data; however, the ever-growing volume of this data, the adoption of the hybrid cloud model, and the availability of novel non-relational databases which claim to be more scalable and fault tolerant raise the question whether relational databases are still the most appropriate. In this study, we define a set of criteria to evaluate performance of a variety of databases on a hybrid cloud environment. There, we conduct experiments using standard and custom workloads. Results show that migration to a MongoDB database would be most beneficial in terms of cost, storage space, and throughput. In addition, organisations wishing to take advantage of autoscaling and the maintenance power of the cloud should opt for a cloud native solution.Entities:
Keywords: Big data; Cloud databases; Distributed storage; Hybrid cloud; OHLC data
Year: 2022 PMID: 36193238 PMCID: PMC9520093 DOI: 10.1186/s13677-022-00323-4
Source DB: PubMed Journal: J Cloud Comput (Heidelb) ISSN: 2192-113X
Fig. 1Hybrid cloud deployment architecture
Fig. 2Criteria chosen to evaluate database performance and their overlaps
Fig. 3Architecture used to conduct our experiments
Sample input data for apple (AAPL)
| Date | Open | High | Low | Close | Volume |
|---|---|---|---|---|---|
| 1984–09-07 | 0.42388 | 0.42902 | 0.41874 | 0.42388 | 23,220,030 |
| 1984–09-10 | 0.42388 | 0.42516 | 0.41366 | 0.42134 | 18,022,532 |
| 1984–09-11 | 0.42516 | 0.43668 | 0.42516 | 0.42902 | 42,498,199 |
| 1984–09-12 | 0.42902 | 0.43157 | 0.41618 | 0.41618 | 37,125,801 |
Benchmarking workloads
| Workload | Insert (%) | Read (%) | Update (%) |
|---|---|---|---|
| a | 0 | 95 | 5 |
| b | 0 | 50 | 50 |
| c | 50 | 50 | 0 |
| d | 50 | 0 | 50 |
| e | 33.3 | 33.3 | 33.3 |
Fig. 4Performance of databases with ‘load’ operation
Database table size
| Database | Size (MBytes) |
|---|---|
| mongodb | 4.93 |
| mysql | 6.52 |
| rds-mysql | 6.52 |
| aurora-mysql | 6.52 |
| postgres | 8.35 |
| rds-postgres | 8.35 |
| aurora-postgres | 8.35 |
| documentdb | 25.67 |
| dynamodb | 120.00 |
Latency statistics
| Database | Max Latency (ms) | Min Latency (ms) | Avg Latency (ms) | Std Deviation (ms) |
|---|---|---|---|---|
| mongodb | 2.83 | 0.82 | 0.85 | 0.28 |
| mysql | 9.36 | 1.62 | 2.13 | 0.74 |
| rds-mysql | 9.33 | 1.10 | 2.15 | 0.71 |
| aurora-mysql | 7.48 | 2.14 | 2.80 | 0.63 |
| postgres | 8.32 | 2.13 | 2.40 | 0.86 |
| rds-postgres | 9.14 | 3.53 | 3.81 | 0.95 |
| aurora-postgres | 7.74 | 3.04 | 3.32 | 0.31 |
| documentdb | 7.44 | 2.56 | 2.88 | 0.32 |
| dynamodb | 17.63 | 5.36 | 6.01 | 2.74 |
Fig. 5Performance of databases with Workload-a (Read-intensive tasks)
Fig. 6Performance of databases with Workload-c (Read & Write Intensive tasks)
Running costs (as on 1st December 2021)
| Database | Database Type | Compute costs (USD-per-hour) | Storage (GBytes) | Storage costs (USD per GByte-month) | Billing Time (secs) | Total Costs (USD) |
|---|---|---|---|---|---|---|
| mongodb | Customer managed | 0.592 | 8 | 0.116 | 128 | 0.021 |
| mysql | Customer managed | 0.592 | 8 | 0.116 | 157 | 0.026 |
| rds-mysql | AWS managed | 1.12 | 20 | 0.133 | 600 | 0.187 |
| aurora-mysql | AWS managed | 1.36 | 10 | 0.10 | 600 | 0.227 |
| postgres | Customer managed | 0.592 | 8 | 0.116 | 170 | 0.028 |
| rds-postgres | AWS managed | 1.176 | 20 | 0.133 | 600 | 0.197 |
| aurora-postgres | AWS managed | 1.36 | 10 | 0.10 | 600 | 0.227 |
| documentdb | AWS managed | 1.30 | 10 | 0.116 | 600 | 0.217 |
| dynamodb | AWS managed serverless | 0.78 | 0.12 | 0.03 | 524 | 0.113 |