Vertical partitioning for flash and HDD database systems
Recent advances in flash memory technology have greatly enhanced the capability of flash memory to address the I/O bottleneck problem. Flash memory has exceptional I/O performance compared to the hard disk drive (HDD). The superiority of flash memory is especially visible when dealing with random read patterns. Even though the cost of flash memory is higher than that of HDD storage, the popularity of flash memory is increasing at such a pace that it is becoming a common addition to the average computer. Recently, flash memory has been made into larger devices called solid state drives (SSDs). Although these devices can offer capacities comparable to HDDs, they are considerably more expensive per byte. Our research aims to increase the I/O performance of database systems by using a small amount of flash memory alongside HDD storage. The system uses a fully vertically partitioned storage structure where each column is stored separately on either the HDD or SSD. Our approach is to assign the columns into the SSD which will benefit the most from the characteristics of flash memory. We prove this problem is NP-complete and propose an optimal dynamic programming solution and a faster greedy heuristic solution. A system simulator has been implemented and experiments show that the overall I/O costs can be greatly reduced using only a limited amount of flash memory. The results show the greedy heuristic solution performed similarly to the more expensive dynamic programming solution for the situations tested.
vertical partitioning database flash memory