The challenge of distributed transactions has increased in the past few years due to an exponential increase in volume of data and higher throughput demands. Today, we can see that applications have the need to be both highly available and fast (near real time) with a vast amount of data.
The overall trends for organizations has been to move from relational databases to NoSQL databases and leverage distributed environments. This semi solution supports higher throughput, lower latency and also provides high availability of their systems. Other organizations have taken a more advanced approach by storing their data on SSD drives. Utilizing SSD provides faster access than hard disks. Despite having speed, organizations still face two challenges. One challenge is although SSD is faster than hard disk, it is still not comparable to real time in-memory solutions. Another challenge of fast and reliable distributed transactions comes from the complexity of performing transactions in a distributed environment.
One example is an online banking application for a medium to large sized bank that allows customers to get account details, perform transactions (ex. money transfers, bills payments, etc.). In the online banking scenario, an example could be a money transfer between two different accounts that are stored on two separate partitions. In this case, the distributed transaction would only be committed when both accounts are updated - involving updates on two partitions. These partitions also store other accounts with more data thus meaning other operations by other users. The account meta data and indexes can be stored in-memory for fast data access (also frequently used accounts can be stored completely in memory.) The account data payload can be stored on the SSD because it requires more space and usually we don't want to have an in memory cluster of a few terabytes. Showing the general data to the user will require access to the in-memory only (as we don't need to payload) but updating the accounts with new balance requires also access to the SSD.
In this session, we would like to explore the use of SSD and how it can be combined with in-memory storage technologies in order to perform distributed transactions. The ideal solution would be to combine in-memory with SSD in order to support fast complex queries and distributed transactions.