{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,5,18]],"date-time":"2026-05-18T07:02:35Z","timestamp":1779087755639,"version":"3.51.4"},"reference-count":52,"publisher":"Association for Computing Machinery (ACM)","issue":"12","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2021,7]]},"abstract":"<jats:p>Facebook's graph store TAO, like many other distributed data stores, traditionally prioritizes availability, efficiency, and scalability over strong consistency or isolation guarantees to serve its large, read-dominant workloads. As product developers build diverse applications on top of this system, they increasingly seek transactional semantics. However, providing advanced features for select applications while preserving the system's overall reliability and performance is a continual challenge. In this paper, we first characterize developer desires for transactions that have emerged over the years and describe the current failure-atomic (i.e., write) transactions offered by TAO. We then explore how to introduce an intuitive read transaction API. We highlight the need for atomic visibility guarantees in this API with a measurement study on potential anomalies that occur without stronger isolation for reads. Our analysis shows that 1 in 1,500 batched reads reflects partial transactional updates, which complicate the developer experience and lead to unexpected results. In response to our findings, we present the RAMP-TAO protocol, a variation based on the Read Atomic Multi-Partition (RAMP) protocols that can be feasibly deployed in production with minimal overhead while ensuring atomic visibility for a read-optimized workload at scale.<\/jats:p>","DOI":"10.14778\/3476311.3476379","type":"journal-article","created":{"date-parts":[[2021,10,28]],"date-time":"2021-10-28T22:48:56Z","timestamp":1635461336000},"page":"3014-3027","source":"Crossref","is-referenced-by-count":14,"title":["RAMP-TAO"],"prefix":"10.14778","volume":"14","author":[{"given":"Audrey","family":"Cheng","sequence":"first","affiliation":[{"name":"UC Berkeley"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Xiao","family":"Shi","sequence":"additional","affiliation":[{"name":"Facebook, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Lu","family":"Pan","sequence":"additional","affiliation":[{"name":"Facebook, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Anthony","family":"Simpson","sequence":"additional","affiliation":[{"name":"Facebook, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Neil","family":"Wheaton","sequence":"additional","affiliation":[{"name":"Facebook, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Shilpa","family":"Lawande","sequence":"additional","affiliation":[{"name":"Facebook, Inc."}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Nathan","family":"Bronson","sequence":"additional","affiliation":[{"name":"Rockset"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Peter","family":"Bailis","sequence":"additional","affiliation":[{"name":"Sisu Data"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Natacha","family":"Crooks","sequence":"additional","affiliation":[{"name":"UC Berkeley"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Ion","family":"Stoica","sequence":"additional","affiliation":[{"name":"UC Berkeley"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2021,10,28]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"2013. The Apache Software Foundation Announces Apache\u2122 Cassandra\u2122 v2.0. https:\/\/blogs.apache.org\/foundation\/entry\/the_apache_software_foundation_announces44  2013. The Apache Software Foundation Announces Apache\u2122 Cassandra\u2122 v2.0. https:\/\/blogs.apache.org\/foundation\/entry\/the_apache_software_foundation_announces44"},{"key":"e_1_2_1_2_1","unstructured":"2014. Manhattan our real-time multi-tenant distributed database for Twitter scale. https:\/\/blog.twitter.com\/engineering\/en_us\/a\/2014\/manhattan-our-real-time-multi-tenant-distributed-database-for-twitter-scale.html  2014. Manhattan our real-time multi-tenant distributed database for Twitter scale. https:\/\/blog.twitter.com\/engineering\/en_us\/a\/2014\/manhattan-our-real-time-multi-tenant-distributed-database-for-twitter-scale.html"},{"key":"e_1_2_1_3_1","unstructured":"2014. Under the Hood: Building and open-sourcing fbthrift. https:\/\/engineering.fb.com\/2014\/02\/20\/open-source\/under-the-hood-building-and-open-sourcing-fbthrift\/  2014. Under the Hood: Building and open-sourcing fbthrift. https:\/\/engineering.fb.com\/2014\/02\/20\/open-source\/under-the-hood-building-and-open-sourcing-fbthrift\/"},{"key":"e_1_2_1_4_1","unstructured":"2018. ACID Transactions in MongoDB. https:\/\/www.mongodb.com\/transactions  2018. ACID Transactions in MongoDB. https:\/\/www.mongodb.com\/transactions"},{"key":"e_1_2_1_5_1","unstructured":"2018. Amazon DynamoDB Transactions. https:\/\/aws.amazon.com\/blogs\/aws\/new-amazon-dynamodb-transactions\/  2018. Amazon DynamoDB Transactions. https:\/\/aws.amazon.com\/blogs\/aws\/new-amazon-dynamodb-transactions\/"},{"key":"e_1_2_1_6_1","unstructured":"2020. MySQL Transactional and Locking Statements. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/sql-transactional-statements.html  2020. MySQL Transactional and Locking Statements. https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/sql-transactional-statements.html"},{"key":"e_1_2_1_7_1","unstructured":"2021. Apache HBase. https:\/\/hbase.apache.org\/  2021. Apache HBase. https:\/\/hbase.apache.org\/"},{"key":"e_1_2_1_8_1","unstructured":"2021. etcd. https:\/\/etcd.io  2021. etcd. https:\/\/etcd.io"},{"key":"e_1_2_1_9_1","unstructured":"2021. FaunaDB. https:\/\/fauna.com\/  2021. FaunaDB. https:\/\/fauna.com\/"},{"key":"e_1_2_1_10_1","unstructured":"2021. Oracle Database Development Guide Release 21. https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/adfns\/sql-processing-for-application-developers.html#GUID-912124B7-0F39-47BD-863C-320ED61014E9  2021. Oracle Database Development Guide Release 21. https:\/\/docs.oracle.com\/en\/database\/oracle\/oracle-database\/21\/adfns\/sql-processing-for-application-developers.html#GUID-912124B7-0F39-47BD-863C-320ED61014E9"},{"key":"e_1_2_1_11_1","unstructured":"2021. Redis. https:\/\/redis.io\/  2021. Redis. https:\/\/redis.io\/"},{"key":"e_1_2_1_12_1","unstructured":"2021. SAP HANA Reference: SET TRANSACTION. https:\/\/help.sap.com\/viewer\/4fe29514fd584807ac9f2a04f6754767\/2.0.05\/en-US\/20fdf9cb75191014b85aaa9dec841291.html?q=serializable  2021. SAP HANA Reference: SET TRANSACTION. https:\/\/help.sap.com\/viewer\/4fe29514fd584807ac9f2a04f6754767\/2.0.05\/en-US\/20fdf9cb75191014b85aaa9dec841291.html?q=serializable"},{"key":"e_1_2_1_13_1","unstructured":"2021. Yugabyte DB. https:\/\/www.yugabyte.com  2021. Yugabyte DB. https:\/\/www.yugabyte.com"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.5555\/2831090.2831103"},{"key":"e_1_2_1_15_1","doi-asserted-by":"publisher","DOI":"10.1145\/3299869.3314047"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.14778\/2732232.2732237"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2588555.2588562"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.1145\/2463676.2465279"},{"key":"e_1_2_1_19_1","volume-title":"Proceedings of the Conference on Innovative Data system Research (CIDR). 223--234","author":"Baker Jason","year":"2011"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.5555\/12518"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.5555\/2535461.2535468"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.5555\/1267308.1267323"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.14778\/1454159.1454167"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.5555\/2387880.2387905"},{"key":"e_1_2_1_25_1","doi-asserted-by":"publisher","DOI":"10.1145\/1807128.1807157"},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/1323293.1294281"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.5555\/647433.723863"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.14778\/1454159.1454211"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1145\/2465351.2465363"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.5555\/2387880.2387906"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.1145\/2882903.2882923"},{"key":"e_1_2_1_32_1","doi-asserted-by":"publisher","DOI":"10.5555\/2482626.2482657"},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.5555\/2482626.2482657"},{"key":"e_1_2_1_34_1","doi-asserted-by":"publisher","DOI":"10.1145\/2815400.2815426"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.14778\/3415478.3415546"},{"key":"e_1_2_1_36_1","doi-asserted-by":"publisher","DOI":"10.5555\/3154630.3154668"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/2452376.2452378"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.5555\/2482626.2482663"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.5555\/3358807.3358811"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.5555\/1924943.1924961"},{"key":"e_1_2_1_41_1","doi-asserted-by":"publisher","DOI":"10.1145\/2463676.2465298"},{"key":"e_1_2_1_42_1","doi-asserted-by":"publisher","DOI":"10.14778\/3342263.3342647"},{"key":"e_1_2_1_43_1","doi-asserted-by":"publisher","DOI":"10.14778\/3229863.3229871"},{"key":"e_1_2_1_44_1","doi-asserted-by":"publisher","DOI":"10.5555\/2789770.2789795"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.5555\/3488766.3488789"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/2043556.2043592"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/3342195.3387535"},{"key":"e_1_2_1_48_1","volume-title":"The VoltDB Main Memory DBMS","author":"Stonebraker Michael"},{"key":"e_1_2_1_49_1","doi-asserted-by":"publisher","DOI":"10.5555\/2208461.2208479"},{"key":"e_1_2_1_50_1","doi-asserted-by":"publisher","DOI":"10.1145\/3318464.3386134"},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2213836.2213838"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/3269981"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3476311.3476379","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T11:36:00Z","timestamp":1672227360000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3476311.3476379"}},"subtitle":["layering atomic transactions on Facebook's online TAO data store"],"short-title":[],"issued":{"date-parts":[[2021,7]]},"references-count":52,"journal-issue":{"issue":"12","published-print":{"date-parts":[[2021,7]]}},"alternative-id":["10.14778\/3476311.3476379"],"URL":"https:\/\/doi.org\/10.14778\/3476311.3476379","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2021,7]]}}}