{'fraction_non_alphanumeric': 0.027375201288244767, 'fraction_numerical': 0.008051529790660225, 'mean_word_length': 5.341836734693878, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
The evolution of a transaction processing system

The Arjuna Transaction Service (ATS) began life in the mid 1980s as an academic project (called Arjuna) to examine the use of object-oriented techniques in the development of fault-tolerant systems [1]. It provides a set of tools for the construction of fault-tolerant distributed applications using (nested) transactions controlling operations on persistent objects. A version of the system written in C++ to run on networked UNIX systems was operational in the early nineties. The arrival of the Web and industrial acceptance of CORBA and Java technologies for distributed object computing during this period encouraged the productization of Arjuna. Through a series of acquisitions Arjuna became part of HP’s middleware product lines and was used in creating customised transactional services for new application areas, such as Web Services [2] and mobile computing. In 2002, we span out of HP to continue to evolve ATS, where it supports traditional ACID transactions and “relaxed” transaction models (e.g., compensation transactions). In this paper we shall give an overview its evolution, concentrating particularly on those changes concerned with improved performance and availability.