The VLDB Journal

, Volume 25, Issue 5, pp 695–717 | Cite as

Read/write-optimized tree indexing for solid-state drives

  • Peiquan Jin
  • Chengcheng Yang
  • Christian S. Jensen
  • Puyuan Yang
  • Lihua Yue
Special Issue Paper


Flash-memory-based solid-state drives (SSDs) are used widely for secondary storage. To be effective for SSDs, traditional indices have to be redesigned to cope with the special properties of flash memory, such as asymmetric read/write latencies (fast reads and slow writes) and out-of-place updates. Previous flash-optimized indices focus mainly on reducing random writes to SSDs, which is typically accomplished at the expense of a substantial number of extra reads. However, modern SSDs show a narrowing gap between read and write speeds, and read operations on SSDs increasingly affect the overall performance of indices on SSDs. As a consequence, how to optimize SSD-aware indices by reducing both write and read costs is a pertinent and open challenge. We propose a new tree index for SSDs that is able to reduce both writes and extra reads. In particular, we use an update buffer and overflow pages to reduce random writes, and we further exploit Bloom filters to reduce the extra reads to the overflow nodes in the tree. With this mechanism, we construct a read/write-optimized index that is capable of offering better overall performance than previous flash-aware indices. In addition, we present an analysis of the proposed index and show that the read and write costs of the operations on the index can be balanced by only tuning the false-positive rate of the Bloom filters. Our experimental results suggest that our proposal is efficient and represents an improvement over existing methods.


Index B+-tree Solid-state drives Bloom filter Flash memory 



We would like to thank the editors and anonymous reviewers for their valuable suggestions and comments to improve the quality of the paper. This work is partially supported by the National Science Foundation of China under the Grant (61379037, 61472376) and the Fundamental Research Funds for the Central Universities of China. Christian S. Jensen was supported in part by a grant from the Obel Family Foundation.


  1. 1.
    Agrawal, D., Ganesan, D., Sitaraman, R., Diao, Y., Singh, S.: Lazy-adaptive tree: An optimized index structure for flash devices. In: Proceedings of the VLDB Endowment, vol. 2(1), pp. 361–372 (2009)Google Scholar
  2. 2.
    Ahn, J.S., Kang, D., Jung, D., Kim, J.S., Maeng, S.: \(\mu \)*-Tree: an ordered index structure for nand flash memory with adaptive page layout scheme. IEEE Trans. Comput. 62(4), 784–797 (2013)MathSciNetCrossRefGoogle Scholar
  3. 3.
    Athanassoulis, M., Ailamaki, A.: BF-Tree: approximate tree indexing. In: Proceedings of the VLDB Endowment vol. 7(14), pp. 1881–1892 (2014)Google Scholar
  4. 4.
    Bayer, R., Schkolnick, M.: Concurrency of operations on B-trees. Acta inform. 9(1), 1–21 (1977)MathSciNetCrossRefMATHGoogle Scholar
  5. 5.
  6. 6.
    Bloom, B.H.: Space/time trade-offs in hash coding with allowable errors. Commun. ACM 13(7), 422–426 (1970)CrossRefMATHGoogle Scholar
  7. 7.
    Bonomi, F., Mitzenmacher, M., Panigrahy, R., Singh, S., Varghese, G.: An improved construction for counting Bloom filters. In: ESA, pp. 684–695 (2006)Google Scholar
  8. 8.
    Canim, M., Mihaila, G.A., Bhattacharjee, B., Lang, C.A., Ross, K.A.: Buffered Bloom filters on solid state storage. In: VLDB Workshop on ADMS, pp. 1–8 (2010)Google Scholar
  9. 9.
    Debnath, B., Sengupta, S., Li, J., Lilja, D.J., Du, D.H.C.: BloomFlash: Bloom filter on flash-based storage. In: ICDCS, pp. 635–644 (2011)Google Scholar
  10. 10.
    Dirik, C., Jacob, B.: The performance of PC solid-state disks (SSDs) as a function of bandwidth, concurrency, device architecture, and system organization. In: ISCA, pp. 279–289 (2009)Google Scholar
  11. 11.
    Fang, H., Yeh, M., Suei, P., Kuo, T.: An adaptive endurance-aware B+-Tree for flash memory storage systems. IEEE Trans. Comput. 63(11), 2661–2673 (2013)MathSciNetCrossRefGoogle Scholar
  12. 12.
    Graefe, G.: A survey of B-tree locking techniques. ACM Trans. Database Syst. 35(3), 16 (2010)CrossRefGoogle Scholar
  13. 13.
    Graefe, G., Halim, F., Idreos, S., Kuno, H., Manegold, S.: Concurrency control for adaptive indexing. In: Proceedings of the VLDB Endowment vol. 5(7), pp. 656–667 (2012)Google Scholar
  14. 14.
    Graefe, G., Halim, F., Idreos, S., Kuno, H., Manegold, S., Seeger, B.: Transactional support for adaptive indexing. VLDB J. 23(2), 303–328 (2014)CrossRefGoogle Scholar
  15. 15.
    Graefe, G., Kimura, H., Kuno, H.: Foster B-trees. ACM Trans. Database Syst. 37(3), 17 (2012)CrossRefGoogle Scholar
  16. 16.
  17. 17.
    InformationWeek 2014 state of enterprise storage survey.
  18. 18.
    Jaluta, I., Sippu, S., Soisalon-Soininen, E.: Concurrency control and recovery for balanced B-link trees. VLDB J. 14(2), 257–277 (2005)CrossRefGoogle Scholar
  19. 19.
    Jin, P., Ou, Y., Härder, T., Li, Z.: AD-LRU: an efficient buffer replacement algorithm for flash-based databases. Data Knowl. Eng. 72, 83–102 (2012)CrossRefGoogle Scholar
  20. 20.
    Jin, R., Cho, H.J., Lee, S.W., Chung, T.S.: Lazy-split B+-tree: a novel B+-tree index scheme for flash-based database systems. Des. Autom. Embed. Syst. 17(1), 167–191 (2013)CrossRefGoogle Scholar
  21. 21.
    Kang, D., Jung, D., Kang, J.U., Kim, J.S.: \(\mu \)-Tree: an ordered index structure for NAND flash memory. In: EMSOFT, pp. 144–153 (2007)Google Scholar
  22. 22.
  23. 23.
    Lee, S.W., Moon, B., Park, C.: Advances in flash memory SSD technology for enterprise database applications. In: SIGMOD, pp. 863–870 (2009)Google Scholar
  24. 24.
    Lehman, P.L., et al.: Efficient locking for concurrent operations on B-trees. ACM Trans. Database Syst. 6(4), 650–670 (1981)CrossRefMATHGoogle Scholar
  25. 25.
    Li, Y., He, B., Luo, Q., Yi, K.: Tree indexing on flash disks. In: ICDE, pp. 1303–1306 (2009)Google Scholar
  26. 26.
    Li, Y., He, B., Yang, R.J., Luo, Q., Yi, K.: Tree indexing on solid state drives. In: Proceedings of the VLDB Endowment vol. 3(1–2), pp. 1195–1206 (2010)Google Scholar
  27. 27.
    Li, Z., Jin, P., Su, X., Cui, K., Yue, L.: CCF-LRU: a new buffer replacement algorithm for flash memory. IEEE Trans. Consum. Electron. 55(3), 1351–1359 (2009)CrossRefGoogle Scholar
  28. 28.
    Lomet, D., Salzberg, B.: Concurrency and recovery for index trees. VLDB J. 6(3), 224–240 (1997)CrossRefGoogle Scholar
  29. 29.
    Lu, G., Nam, Y.J., Du, D.H.: Bloomstore: Bloom-filter based memory-efficient key-value store for indexing of data deduplication on flash. In: MSST, pp. 1–11 (2012)Google Scholar
  30. 30.
    Lu, K., Jin, P., Yang, P., Wan, S., Yue, L.: Adaptive in-page logging for flash-memory storage systems. Front. Comput. Sci. 8(1), 131–144 (2014)MathSciNetCrossRefGoogle Scholar
  31. 31.
    Nath, S., Kansal, A.: FlashDB: Dynamic self-tuning database for NAND flash. In: IPSN, pp. 410–419 (2007)Google Scholar
  32. 32.
    Ou, Y., Härder, T., Jin, P.: CFDC: a flash-aware replacement policy for database buffer management. In: DAMON, pp. 15–20 (2009)Google Scholar
  33. 33.
    Ouyang, J., Lin, S., Jiang, S., Hou, Z., Wang, Y., Wang, Y.: SDF: Software-defined flash for web-scale internet storage systems. In: ASPLOS, pp. 471–484 (2014)Google Scholar
  34. 34.
    Roh, H., Kim, W.C., Kim, S., Park, S.: A B-tree index extension to enhance response time and the life cycle of flash memory. Inf. Sci. 179(18), 3136–3161 (2009)MathSciNetCrossRefGoogle Scholar
  35. 35.
    Roh, H., Park, S., Kim, S., Shin, M., Lee, S.W.: B+-tree index optimization by exploiting internal parallelism of flash-based solid state drives. In: Proceedings of the VLDB Endowment vol. 5(4), pp. 286–297 (2011)Google Scholar
  36. 36.
    Sarwat, M., Mokbel, M.F., Zhou, X., Nath, S.: FAST: a generic framework for flash-aware spatial trees. In: Advances in Spatial and Temporal Databases, pp. 149–167. Springer (2011)Google Scholar
  37. 37.
    Sarwat, M., Mokbel, M.F., Zhou, X., Nath, S.: Generic and efficient framework for search trees on flash memory storage systems. GeoInformatica 17(3), 417–448 (2013)CrossRefGoogle Scholar
  38. 38.
    SMHasher & MurmurHash.
  39. 39.
  40. 40.
    Viglas, S.D.: Adapting the B+-tree for asymmetric I/O. In: ADBIS, pp. 399–412 (2012)Google Scholar
  41. 41.
    Weikum, G., Vossen, G.: Transactional information systems: theory, algorithms, and the practice of concurrency control and recovery. Morgan Kaufmann (2002)Google Scholar
  42. 42.
    Wu, C.H., Kuo, T.W., Chang, L.P.: An efficient B-tree layer implementation for flash-memory storage systems. ACM Trans. Embed. Comput. Syst. 6(3), 19 (2007)CrossRefGoogle Scholar
  43. 43.
    Yin, S., Pucheral, P.: PBFilter: a flash-based indexing scheme for embedded systems. Inf. Syst. 37(7), 634–653 (2012)CrossRefGoogle Scholar
  44. 44.
    Yin, S., Pucheral, P., Meng, X.: A sequential indexing scheme for flash-based embedded systems. In: EDBT, pp. 588–599 (2009)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2015

Authors and Affiliations

  • Peiquan Jin
    • 1
    • 2
  • Chengcheng Yang
    • 1
    • 2
  • Christian S. Jensen
    • 3
  • Puyuan Yang
    • 1
    • 2
  • Lihua Yue
    • 1
    • 2
  1. 1.University of Science and Technology of ChinaHefeiChina
  2. 2.Key Laboratory of Electromagnetic Space InformationChinese Academy of SciencesHefeiChina
  3. 3.Aalborg UniversityAalborg ØstDenmark

Personalised recommendations