Jump to Content
David F. Bacon

David F. Bacon

David F. Bacon leads the design and evolution of the Spanner storage engine (Ressi) along with the exploitation of new hardware technologies in databases. The team is based in Google's New York City office. David received his A.B. from Columbia University in 1985 and his Ph.D. from U.C. Berkeley in 1997.

His prior work includes compilation and run-time systems for object-oriented programming, hardware compilation, and real-time garbage collection. He is a Fellow of the ACM, and has served on the governing boards of ACM SIGPLAN and SIGBED.

Authored Publications
Google Publications
Other Publications
Sort By
  • Title
  • Title, desc
  • Year
  • Year, desc
    Preview abstract Building on the simplicity and power of declarative queries combined with strongly consistent transactional semantics has allowed the Spanner database to scale to many thousands of machines running an aggregate of over 2 billion queries per second on over 8 exabytes of data. This includes some of the largest applications in the world, serving well over a billion users each. The appetite for database storage continues to grow, potentially reaching zettabyte scale (1 billion terrabytes) by 2030. However, the end of Moore and Dennard scaling mean that the cost of the infrastructure to run those databases could grow much faster than it has in the past. In this talk I will give my perspective on the challenges to reaching zettabyte scale, and the hardware technologies and approaches most (and least) likely to be successful. View details
    Detection and Prevention of Silent Data Corruption in an Exabyte-scale Database System
    The 18th IEEE Workshop on Silicon Errors in Logic – System Effects, IEEE (2022)
    Preview abstract Google’s Spanner database serves multiple exabytes of data at well over a billion queries per second, distributed over a significant fraction of Google’s fleet. Silent data corruption events due to hardware error are detected/prevented by Spanner several times per week. For every detected error there are some number of undetected errors that in rare (but not black swan) events cause corruption either transiently for reads or durably for writes, potentially violating the most fundamental contract that a database system makes with its users: to store and retrieve data with absolute reliability and availability. We describe the work we have done to detect and prevent silent data corruptions and (equally importantly) to remove faulty machines from the fleet, both manually and automatically. We present a simplified analytic model of corruption that provides some insights into the most effective ways to prevent end-user corruption events. We have made qualitative gains in detection and prevention of SDC events, but quantitative analysis remains difficult. We discuss various potential trajectories in hardware (un)reliability and how they will affect our ability to build reliable database systems on commodity hardware. View details
    Spanner: Becoming a SQL System
    Nathan Bales
    Nico Bruno
    Brian F. Cooper
    Adam Dickinson
    Andrew Fikes
    Campbell Fraser
    Andrey Gubarev
    Milind Joshi
    Eugene Kogan
    Sergey Melnik
    Rajesh Rao
    Dave Shue
    Chris Taylor
    Marcel van der Holst
    Dale Woodford
    Proc. SIGMOD 2017, pp. 331-343 (to appear)
    Preview abstract Spanner is a globally-distributed data management system that backs hundreds of mission-critical services at Google. Spanner is built on ideas from both the systems and database communities. The first Spanner paper published at OSDI'12 focused on the systems aspects such as scalability, automatic sharding, fault tolerance, consistent replication, external consistency, and wide-area distribution. This paper highlights the database DNA of Spanner. We describe distributed query execution in the presence of resharding, query restarts upon transient failures, range extraction that drives query routing and index seeks, and the improved blockwise-columnar storage format. We touch upon migrating Spanner to the common SQL dialect shared with other systems at Google. View details
    And then there were none: a stall-free real-time garbage collector for reconfigurable hardware
    Perry Cheng
    Sunil Shukla
    Communications of the ACM, vol. 56 (2013), pp. 101-109
    A real-time garbage collector with low overhead and consistent utilization
    Perry Cheng
    V. T. Rajan
    Proceedings of the 30th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, ACM, New York, NY, USA (2003), pp. 285-298
    Thin locks: Featherweight synchronization for Java
    Ravi Konuru
    Chet Murthy
    Mauricio Serrano
    Proc. ACM SIGPLAN 1998 Conference on Programming Language Design and Implementation, ACM, New York, NY, USA, pp. 258-268
    Fast static analysis of C++ virtual function calls
    Peter F. Sweeney
    Proc. 11th ACM Conference on Object-oriented Programming, Systems, Languages, and Applications, ACM, New York, NY, USA (1996), pp. 324-341
    Compiler transformations for high-performance computing
    Susan L. Graham
    Oliver J. Sharp
    ACM Computing Surveys, vol. 26 (1994), pp. 345-420