{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2025,9,18]],"date-time":"2025-09-18T10:02:22Z","timestamp":1758189742991,"version":"3.44.0"},"reference-count":67,"publisher":"Association for Computing Machinery (ACM)","issue":"12","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2020,8]]},"abstract":"<jats:p>Many geo-distributed services at web-scale companies still rely on databases (DBs) primarily optimized for single-site performance. At AT&amp;T this is exemplified by services in the network control plane that rely on third-party software that uses DBs like MariaDB and PostgreSQL, which do not provide strict serializability across sites without a significant performance impact. Moreover, it is often impractical for these services to re-purpose their code to use newer DBs optimized for geo-distribution. In this paper, a novel drop-in solution for DB clustering across sites called Metric is presented that can be used by services without changing a single line of code. Metric leverages the single-site performance of an existing service's DB and combines it with a cross-site clustering solution based on an entry-consistent redo log that is specifically tailored for geo-distribution. Detailed correctness arguments are presented and extensive evaluations with various benchmarks show that Metric outperforms other solutions for the access patterns in our production use-cases where service replicas access different tables on different sites. In particular, Metric achieves up to 56% less latency and 5.2x higher throughput than MariaDB and PostgreSQL clustering, and up to 90% less latency and 26x higher throughput than CockroachDB and TiDB, systems that are designed to support geo-distribution.<\/jats:p>","DOI":"10.14778\/3415478.3415555","type":"journal-article","created":{"date-parts":[[2020,9,14]],"date-time":"2020-09-14T18:46:46Z","timestamp":1600109206000},"page":"3340-3353","source":"Crossref","is-referenced-by-count":0,"title":["A drop-in middleware for serializable DB clustering across geo-distributed sites"],"prefix":"10.14778","volume":"13","author":[{"given":"Enrique","family":"Saurez","sequence":"first","affiliation":[{"name":"Georgia Institute of Technology"}]},{"given":"Bharath","family":"Balasubramanian","sequence":"additional","affiliation":[{"name":"Research"}]},{"given":"Richard","family":"Schlichting","sequence":"additional","affiliation":[{"name":"United States Naval Academy"}]},{"given":"Brendan","family":"Tschaen","sequence":"additional","affiliation":[{"name":"Research"}]},{"given":"Shankaranarayanan Puzhavakath","family":"Narayanan","sequence":"additional","affiliation":[{"name":"Research"}]},{"given":"Zhe","family":"Huang","sequence":"additional","affiliation":[{"name":"Research"}]},{"given":"Umakishore","family":"Ramachandran","sequence":"additional","affiliation":[{"name":"Georgia Institute of Technology"}]}],"member":"320","published-online":{"date-parts":[[2020,8]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Apache Avatica. https:\/\/calcite.apache.org\/avatica."},{"key":"e_1_2_1_2_1","unstructured":"Aws inter-region latency monitoring. https:\/\/www.cloudping.co\/."},{"key":"e_1_2_1_3_1","doi-asserted-by":"publisher","DOI":"10.1145\/3212734.3212782"},{"key":"e_1_2_1_4_1","unstructured":"Beautiful business process management with camunda bpm. https:\/\/camunda.com\/."},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1109\/CMPCON.1993.289730"},{"key":"e_1_2_1_6_1","unstructured":"Business process model and notation. http:\/\/www.bpmn.org\/."},{"key":"e_1_2_1_7_1","unstructured":"pache Calcite. https:\/\/calcite.apache.org\/."},{"key":"e_1_2_1_8_1","unstructured":"Camunda data model. https:\/\/docs.camunda.org\/manual\/7.5\/user-guide\/process-engine\/database\/."},{"key":"e_1_2_1_9_1","unstructured":"The Camunda Process Engine Performance Test Suite. github.com\/camunda\/camunda-bpm-platform\/tree\/master\/qa\/performance-tests-engine."},{"key":"e_1_2_1_10_1","unstructured":"Sorting in Cassandra. https:\/\/www.datastax.com\/blog\/2015\/03\/we-shall-have-order."},{"key":"e_1_2_1_11_1","unstructured":"Cassandra's Time-based UUIDs. https:\/\/docs.datastax.com\/en\/archived\/cql\/3.3\/cql\/cql_reference\/uuid_type_r.html."},{"key":"e_1_2_1_12_1","unstructured":"CockroachDB Multi-region Topology Patterns. https:\/\/www.cockroachlabs.com\/docs\/stable\/topology-patterns.html#multi-region-patterns."},{"key":"e_1_2_1_13_1","unstructured":"Deploy CockroachDB On-Premises. https:\/\/www.cockroachlabs.com\/docs\/stable\/deploy-cockroachdb-on-premises-insecure.html."},{"key":"e_1_2_1_14_1","unstructured":"Performance Benchmarking CockroachDB with TPC-C. https:\/\/www.cockroachlabs.com\/docs\/stable\/performance-benchmarking-with-tpc-c-1k-warehouses.html."},{"key":"e_1_2_1_15_1","first-page":"26","volume-title":"Proceedings of the Annual Conference on USENIX Annual Technical Conference, ATEC '04","author":"Cecchet E.","year":"2004","unstructured":"E. Cecchet, J. Marguerite, and W. Zwaenepole. C-jdbc: Flexible database clustering middleware. In Proceedings of the Annual Conference on USENIX Annual Technical Conference, ATEC '04, pages 26--26, Berkeley, CA, USA, 2004. USENIX Association."},{"key":"e_1_2_1_16_1","unstructured":"Cloudify: Pure-play cloud orchestration and automation based on tosca. http:\/\/getcloudify.org\/."},{"key":"e_1_2_1_17_1","unstructured":"CockroachDB. www.cockroachlabs.com."},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.14778\/1454159.1454167"},{"key":"e_1_2_1_19_1","volume-title":"et al. Spanner: Google's globally distributed database. ACM Transactions on Computer Systems (TOCS), 31(3):8","author":"Corbett J. C.","year":"2013","unstructured":"J. C. Corbett, J. Dean, M. Epstein, A. Fikes, C. Frost, J. J. Furman, S. Ghemawat, A. Gubarev, C. Heiser, P. Hochschild, et al. Spanner: Google's globally distributed database. ACM Transactions on Computer Systems (TOCS), 31(3):8, 2013."},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/1807128.1807157"},{"key":"e_1_2_1_21_1","unstructured":"DCAE. https:\/\/wiki.onap.org\/display\/DW\/Data+Collection+Analytics+and+Events+Project."},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.14778\/2732240.2732246"},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/7531.7533"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/42282.42283"},{"volume-title":"https:\/\/gerrit.onap.org\/r\/gitweb?p=music\/mdbc.git;a=summary","year":"2019","key":"e_1_2_1_25_1","unstructured":"Metric code. https:\/\/gerrit.onap.org\/r\/gitweb?p=music\/mdbc.git;a=summary, 2019."},{"key":"e_1_2_1_26_1","doi-asserted-by":"publisher","DOI":"10.1145\/3149.214121"},{"key":"e_1_2_1_27_1","unstructured":"FoundationDB. https:\/\/apple.github.io\/foundationdb\/."},{"key":"e_1_2_1_28_1","unstructured":"MariaDB Galera Cluster. https:\/\/mariadb.com\/kb\/en\/library\/what-is-mariadb-galera-cluster\/."},{"key":"e_1_2_1_29_1","unstructured":"About Galera Replication. https:\/\/mariadb.com\/kb\/en\/about-galera-replication\/."},{"volume-title":"proceedings of SRDS 2019 (citation yet","key":"e_1_2_1_30_1","unstructured":"Gyro: A modular scale-out layer for single-server DBMSs, in proceedings of SRDS 2019 (citation yet to be published."},{"key":"e_1_2_1_31_1","unstructured":"he Transaction Processing Council. Tpc-c benchmark (revision 5.11.0). http:\/\/www.tpc.org\/tpc_documents_current_versions\/pdf\/tpc-c_v5.11.0.pdf."},{"key":"e_1_2_1_32_1","volume-title":"LCA 2005, Australia's 6th national Linux conference (linux.conf.au), Sydney NSW","author":"Hemminger S.","year":"2005","unstructured":"S. Hemminger. Network emulation with NetEm. In M. Pool, editor, LCA 2005, Australia's 6th national Linux conference (linux.conf.au), Sydney NSW, Australia, Apr. 2005. Linux Australia, Linux Australia."},{"key":"e_1_2_1_33_1","doi-asserted-by":"publisher","DOI":"10.1145\/78969.78972"},{"key":"e_1_2_1_34_1","unstructured":"Apache Ignite. https:\/\/ignite.apache.org\/."},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.1007\/s00446-006-0005-x"},{"key":"e_1_2_1_36_1","volume-title":"Distributed Algorithms","author":"Lynch N. A.","year":"1996","unstructured":"N. A. Lynch. Distributed Algorithms. Morgan Kaufmann Publishers Inc., San Francisco, CA, USA, 1996."},{"key":"e_1_2_1_37_1","unstructured":"MariaDB's Semi-synchronous Replication. https:\/\/mariadb.com\/kb\/en\/semisynchronous-replication."},{"key":"e_1_2_1_38_1","unstructured":"MariaDB JDBC Driver. https:\/\/mariadb.com\/kb\/en\/about-mariadb-connector-j\/."},{"key":"e_1_2_1_39_1","unstructured":"Metric Technical Report. https:\/\/www.dropbox.com\/s\/1ehqph0r23z3l8p\/METRIC_VLDB_Techreport_2020.pdf."},{"volume-title":"https:\/\/wiki.onap.org\/display\/DW\/MUSIC-Multi-site+State+Coordination+Service","year":"2019","key":"e_1_2_1_40_1","unstructured":"Music onap. https:\/\/wiki.onap.org\/display\/DW\/MUSIC-Multi-site+State+Coordination+Service, 2019."},{"key":"e_1_2_1_41_1","unstructured":"Nagios - the industry standard in it infrastructure monitoring. https:\/\/www.nagios.org\/."},{"key":"e_1_2_1_42_1","unstructured":"Onap service orchestrator. https:\/\/wiki.onap.org\/pages\/viewpage.action?pageId=1015834."},{"key":"e_1_2_1_43_1","first-page":"305","volume-title":"Proceedings of the USENIX Annual Technical Conference (USENIX ATC)","author":"Ongaro D.","year":"2014","unstructured":"D. Ongaro and J. Ousterhout. In search of an understandable consensus algorithm. In Proceedings of the USENIX Annual Technical Conference (USENIX ATC), pages 305--319, June 2014."},{"key":"e_1_2_1_44_1","unstructured":"Open network automation platform (onap). https:\/\/www.onap.org\/."},{"key":"e_1_2_1_45_1","unstructured":"Openjdk jmh. https:\/\/openjdk.java.net\/projects\/code-tools\/jmh\/."},{"key":"e_1_2_1_46_1","unstructured":"Oracle Replication Overview. https:\/\/docs.oracle.com\/cd\/A87860_01\/doc\/server.817\/a76959\/repover.htm."},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/322154.322158"},{"key":"e_1_2_1_48_1","unstructured":"Pingcap TiDB. https:\/\/www.pingcap.com\/en\/."},{"key":"e_1_2_1_49_1","unstructured":"PostgreSQL Synchronous Replication. https:\/\/www.postgresql.org\/docs\/9.5\/warm-standby.html#SYNCHRONOUS-REPLICATION."},{"key":"e_1_2_1_50_1","unstructured":"PostgreSQL. https:\/\/www.postgresql.org\/."},{"key":"e_1_2_1_51_1","doi-asserted-by":"publisher","DOI":"10.1145\/2465529.2465749"},{"key":"e_1_2_1_52_1","unstructured":"L. F. C. Project. Opendaylight: Open platform for network programmability to enable sdn and create a solid foundation for nfv. http:\/\/www.opendaylight.org\/publications\/opendaylight-open-source-community-and-meritocracy-software-defined-networking."},{"key":"e_1_2_1_53_1","unstructured":"Protocol Buffers (protobuf). https:\/\/developers.google.com\/protocol-buffers."},{"key":"e_1_2_1_54_1","unstructured":"F. Razzoli. Mastering MariaDB. Packt Publishing 2014."},{"key":"e_1_2_1_55_1","doi-asserted-by":"publisher","DOI":"10.1145\/1529974.1529978"},{"key":"e_1_2_1_56_1","doi-asserted-by":"publisher","DOI":"10.14778\/3342263.3342647"},{"key":"e_1_2_1_57_1","doi-asserted-by":"publisher","DOI":"10.1145\/3286685.3286686"},{"key":"e_1_2_1_58_1","doi-asserted-by":"publisher","DOI":"10.1109\/MIC.2011.142"},{"volume-title":"https:\/\/wiki.onap.org\/display\/DW\/Software+Defined+Network+Controller+Project","year":"2019","key":"e_1_2_1_59_1","unstructured":"Software defined network controller project. https:\/\/wiki.onap.org\/display\/DW\/Software+Defined+Network+Controller+Project, 2019."},{"key":"e_1_2_1_60_1","unstructured":"SQLite. https:\/\/www.sqlite.org\/."},{"key":"e_1_2_1_61_1","unstructured":"SQL UUIDs. https:\/\/oracle-base.com\/articles\/9i\/uuid-9i."},{"volume-title":"https:\/\/www.oracle.com\/technetwork\/java\/javase\/jdbc\/index.html","year":"2019","key":"e_1_2_1_62_1","unstructured":"The java database connectivity. https:\/\/www.oracle.com\/technetwork\/java\/javase\/jdbc\/index.html, 2019."},{"key":"e_1_2_1_63_1","unstructured":"The network is reliable: An informal survey of real-world communications failures. http:\/\/www.bailis.org\/papers\/partitions-queue2014.pdf."},{"key":"e_1_2_1_64_1","unstructured":"Deploy TiDB Using TiDB Ansible. https:\/\/pingcap.com\/docs\/stable\/online-deployment-using-ansible\/."},{"key":"e_1_2_1_65_1","unstructured":"How to Run TPC-C Test on TiDB. https:\/\/pingcap.com\/docs\/stable\/benchmark\/benchmark-tidb-using-tpcc\/."},{"key":"e_1_2_1_66_1","doi-asserted-by":"publisher","DOI":"10.1145\/3183713.3196937"},{"key":"e_1_2_1_67_1","unstructured":"Zlib Compression. https:\/\/www.zlib.net\/."}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3415478.3415555","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2025,9,17]],"date-time":"2025-09-17T02:46:26Z","timestamp":1758077186000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3415478.3415555"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2020,8]]},"references-count":67,"journal-issue":{"issue":"12","published-print":{"date-parts":[[2020,8]]}},"alternative-id":["10.14778\/3415478.3415555"],"URL":"https:\/\/doi.org\/10.14778\/3415478.3415555","relation":{},"ISSN":["2150-8097"],"issn-type":[{"type":"print","value":"2150-8097"}],"subject":[],"published":{"date-parts":[[2020,8]]}}}