TY - GEN
T1 - Fluid data structures
AU - Balakrishnan, Darshana
AU - Ziarek, Lukasz
AU - Kennedy, Oliver
N1 - Publisher Copyright:
© 2019 Copyright held by the owner/author(s).
PY - 2019/6/23
Y1 - 2019/6/23
N2 - Functional (aka immutable) data structures are used extensively in data management systems. From distributed systems to data persistence, immutability makes complex programs significantly easier to reason about and implement. However, immutability also makes many runtime optimizations like tree rebalancing, or adaptive organizations, unreasonably expensive. In this paper, we propose Fluid data structures, an approach to data structure design that allows limited physical changes that preserve logical equivalence. As we will show, this approach retains many of the desirable properties of functional data structures, while also allowing runtime adaptation. To illustrate Fluid data structures, we work through the design of a lazy-loading map that we call a Fluid cog. A Fluid cog is a lock-free data structure that incrementally organizes itself in the background by applying equivalence-preserving structural transformations. Our experimental analysis shows that the resulting map structure is flexible enough to adapt to a variety of performance goals, while remaining competitive with existing structures like the C++ standard template library map.
AB - Functional (aka immutable) data structures are used extensively in data management systems. From distributed systems to data persistence, immutability makes complex programs significantly easier to reason about and implement. However, immutability also makes many runtime optimizations like tree rebalancing, or adaptive organizations, unreasonably expensive. In this paper, we propose Fluid data structures, an approach to data structure design that allows limited physical changes that preserve logical equivalence. As we will show, this approach retains many of the desirable properties of functional data structures, while also allowing runtime adaptation. To illustrate Fluid data structures, we work through the design of a lazy-loading map that we call a Fluid cog. A Fluid cog is a lock-free data structure that incrementally organizes itself in the background by applying equivalence-preserving structural transformations. Our experimental analysis shows that the resulting map structure is flexible enough to adapt to a variety of performance goals, while remaining competitive with existing structures like the C++ standard template library map.
KW - Data Layout
KW - Record and Block Layout
UR - https://www.scopus.com/pages/publications/85071149524
U2 - 10.1145/3315507.3330197
DO - 10.1145/3315507.3330197
M3 - Conference contribution
AN - SCOPUS:85071149524
T3 - Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI)
SP - 3
EP - 17
BT - DBPL 2019 - Proceedings of the 17th ACM SIGPLAN International Symposium on Database Programming Languages, co-located with PLDI 2019
A2 - Cheung, Alvin
A2 - Nguyen, Kim
PB - Association for Computing Machinery
T2 - 17th ACM SIGPLAN International Symposium on Database Programming Languages, DBPL 2019, co-located with PLDI 2019
Y2 - 23 June 2019
ER -