{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,6,18]],"date-time":"2025-06-18T04:19:58Z","timestamp":1750220398512,"version":"3.41.0"},"reference-count":18,"publisher":"Association for Computing Machinery (ACM)","issue":"4","license":[{"start":{"date-parts":[[2021,8,31]],"date-time":"2021-08-31T00:00:00Z","timestamp":1630368000000},"content-version":"vor","delay-in-days":0,"URL":"https:\/\/www.acm.org\/publications\/policies\/copyright_policy#Background"}],"content-domain":{"domain":["dl.acm.org"],"crossmark-restriction":true},"short-container-title":["Queue"],"published-print":{"date-parts":[[2021,8,31]]},"abstract":"<jats:p>Fortifying software to protect persistent data from crashes can be remarkably easy if a modern file system handles the heavy lifting. This episode of Drill Bits unveils a new crash-tolerance mechanism that vaults the venerable gdbm database into the league of transactional NoSQL data stores. We'll motivate this upgrade by tracing gdbm's history. We'll survey the subtle science of crashproofing, navigating a minefield of traps for the unwary. We'll arrive at a compact and rugged design that leverages modern file-system features, and we'll tour the production-ready implementation of this design and its ergonomic interface. This new approach is quite generic: It can enable a wide range of software to tolerate crashes.<\/jats:p>","DOI":"10.1145\/3487019.3487353","type":"journal-article","created":{"date-parts":[[2021,9,19]],"date-time":"2021-09-19T22:04:59Z","timestamp":1632089099000},"page":"5-18","update-policy":"https:\/\/doi.org\/10.1145\/crossmark-policy","source":"Crossref","is-referenced-by-count":3,"title":["Crashproofing the Original NoSQL Key-Value Store"],"prefix":"10.1145","volume":"19","author":[{"given":"Terence","family":"Kelly","sequence":"first","affiliation":[],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2021,9,19]]},"reference":[{"key":"e_1_2_1_1_1","doi-asserted-by":"publisher","DOI":"10.1109\/ACSAC.2001.991552"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/214762.315733"},{"key":"e_1_2_1_3_1","unstructured":"Bentley J. August 2019. E-mail to colleague. Ken Thompson and Dennis Ritchie wrote the first UNIX operating system."},{"key":"e_1_2_1_4_1","unstructured":"Debian popularity contest. July 2021; https:\/\/popcon.debian.org\/."},{"key":"e_1_2_1_5_1","unstructured":"Ghemawat S. Dean J. 2021. LevelDB; https:\/\/github.com\/google\/leveldb."},{"key":"e_1_2_1_6_1","unstructured":"Hellwig C. July 2021. Personal communication. Requirements for block devices and file-system semantics guarantee that filesystem-in-file installations function properly."},{"key":"e_1_2_1_7_1","unstructured":"Kelly T. 2019. Good old-fashioned persistent memory. Usenix ;login: 44(4) 29-34; https:\/\/www.usenix.org\/system\/files\/login\/articles\/login_winter19_08_kelly.pdf."},{"key":"e_1_2_1_8_1","doi-asserted-by":"crossref","unstructured":"Kelly T. 2019. Persistent memory programming on conventional hardware. acmqueue 17(4); https:\/\/queue.acm.org\/detail.cfm?id=3358957.","DOI":"10.1145\/3358955.3358957"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/3397882"},{"volume-title":"The UNIX Programming Environment","author":"Kernighan B. W.","key":"e_1_2_1_10_1","unstructured":"Kernighan, B. W., Pike, R. 1984. The UNIX Programming Environment. Prentice Hall."},{"key":"e_1_2_1_11_1","unstructured":"Oracle Berkeley DB. July 2021; https:\/\/www.oracle.com\/database\/berkeley-db\/."},{"key":"e_1_2_1_12_1","volume-title":"Proceedings of the 11th Usenix Symposium on Operating Systems Design and Implementation (OSDI); https:\/\/www.usenix.org\/system\/files\/conference\/osdi14\/osdi14-paper-pillai.pdf.","author":"Pillai T. S.","year":"2014","unstructured":"Pillai, T. S., et al. 2014. All file systems are not created equal: on the complexity of crafting crash-consistent applications. In Proceedings of the 11th Usenix Symposium on Operating Systems Design and Implementation (OSDI); https:\/\/www.usenix.org\/system\/files\/conference\/osdi14\/osdi14-paper-pillai.pdf."},{"key":"e_1_2_1_13_1","unstructured":"Pillai T. S. et al. 2015. Crash consistency. acmqueue 13(7); https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/2800695.2801719."},{"key":"e_1_2_1_14_1","volume-title":"Crash-tolerant gdbm (September). Release 1.21 (September","author":"Poznyakoff S.","year":"2021","unstructured":"Poznyakoff, S. 2021. Crash-tolerant gdbm (September). Release 1.21 (September 2021). Source tarball: https:\/\/ftp.gnu.org\/gnu\/gdbm\/gdbm-1.21.tar.gz. Diff against 1.20: https:\/\/git.gnu.org.ua\/gdbm.git\/rawdiff\/?id=v1.21&id2=v1.20"},{"key":"e_1_2_1_15_1","unstructured":"Poznyakoff S. 2021. Crash tolerance. gdbm Manual (July); https:\/\/www.gnu.org.ua\/software\/gdbm\/current\/Crash-Tolerance.html."},{"key":"e_1_2_1_16_1","unstructured":"Unix dbm manual; http:\/\/man.cat-v.org\/unix_7th\/3\/dbm."},{"volume-title":"Proceedings of the 11th Usenix Symposium on Operating Systems Design and Implementation (OSDI)","author":"Zheng M.","key":"e_1_2_1_17_1","unstructured":"Zheng, M., Tucek, J., Huang, D., Qin, F., Lillibridge, M., Yang, E. S., Zhao, B. W., Singh, S. 2014. Torturing databases for fun and profit. In Proceedings of the 11th Usenix Symposium on Operating Systems Design and Implementation (OSDI); https:\/\/www.usenix.org\/system\/files\/conference\/osdi14\/osdi14-paper-zheng_mai.pdf. (Note that an errata sheet is provided separately.)"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.5555\/2591272.2591300"}],"container-title":["Queue"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3487019.3487353","content-type":"unspecified","content-version":"vor","intended-application":"text-mining"},{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.1145\/3487019.3487353","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,6,17]],"date-time":"2025-06-17T20:18:47Z","timestamp":1750191527000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.1145\/3487019.3487353"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,8,31]]},"references-count":18,"journal-issue":{"issue":"4","published-print":{"date-parts":[[2021,8,31]]}},"alternative-id":["10.1145\/3487019.3487353"],"URL":"https:\/\/doi.org\/10.1145\/3487019.3487353","relation":{},"ISSN":["1542-7730","1542-7749"],"issn-type":[{"type":"print","value":"1542-7730"},{"type":"electronic","value":"1542-7749"}],"subject":[],"published":{"date-parts":[[2021,8,31]]},"assertion":[{"value":"2021-09-19","order":2,"name":"published","label":"Published","group":{"name":"publication_history","label":"Publication History"}}]}}