Batches: Unified and Efficient Access to RPC, WS, and SQL Services


December 6, 2011


William Cook


University of Texas


Most large-scale applications integrate remote services and/or transactional databases. Yet building software that efficiently invokes distributed service or accesses relational databases is still quite difficult. Existing approaches to these problems are based on the Remote Procedure Call (RPC), Object-Relational Mapping (ORM), Web Services (WS), and distributed objects. ORM tools generally support a form of query sublanguage for efficient object selection, but it is not well-integrated with the host language. Web Services may seems to be a step backwards, yet document-oriented services and REST are gaining popularity. The last 20 years have produced a long litany of technologies based on these concepts, including ODBC, CORBA, DCE, DCOM, RMI, DAO, OLEDB, SQLJ, JDBC, EJB, JDO, Hibernate, XML-RPC, WSDL, Axis and LINQ. While significant progress has been made, complex design patterns for service facades and/or bulk data transfers must be followed to optimize communication between client and server or client and database, leading to programs that are difficult to modify and maintain. I present a new unified approach to invocation of distributed services and data access, called Batch Services. Batch Services introduce a novel control flow construct that partitions a program block into remote and local computations, while efficiently managing the communication between them. Batch Services do not require proxies, an embedded query language, or construction/decoding of service requests. The end result is a natural unified interface to distributed services and data, which can be added to any programming language. While hiding most of the complexity of remote communication, Batch Services also provide performance guarantees in terms of the number of round trips required to perform a batch. In the context of database access, a single batch statement always generates a constant number of SQL queries, no matter how many nested loops are used.


William Cook

William Cook is an Assistant Professor in the Department of Computer Sciences at the University of Texas at Austin. His research is focused on object-oriented programming, programming languages, modeling languages, and the interface between programming languages and databases. Prior to joining UT in 2003, Dr. Cook was Chief Technology Officer and co-founder of Allegis Corporation. He was chief architect for several award-winning products, including the eBusiness Suite at Allegis, the Writer’s Solution for Prentice Hall, and the AppleScript language at Apple Computer. At HP Labs his research focused on the foundations of object-oriented languages, including formal models of mixins, inheritance, and typed models of object-oriented languages. He completed his Ph.D. in Computer Science at Brown University in 1989.