The European Patent Office a more efficient approach for processing database transactions to be technical. Here are the practical takeaways from the decision T 0568/17 (Database transactions/OPEN TEXT SOFTWARE) of 28.7.2020 of Technical Board of Appeal 3.5.07:
This European patent application relates to providing support for ACID-compliant database transactions (atomic, consistent, isolated and durable) in databases that employ an index structure based on the principle of “compressed inverted indices”. The transactions operate on data entities, which are identified by unique identifiers.
The invention proposes to provide the database as an ordered set of data stores, each data store storing versions of one or more data entities. The data stores are ordered from least recent to most recent. The version of a data entity in the most recent (“newest”) data store is the currently valid version of the entity. If a transaction comprises insert, update or delete operations, new or modified versions of data entities are stored in a newly generated “modifiable” data store. When the transaction is committed, the modifiable data store is added to the ordered set of data stores as the “newest” data store.
Here is how the invention was defined in claim 1:
Claim 1 (main request)A method for performing transactions on data entities in a database, each transaction comprises one or more query, projection, insert, update, and/or delete operations, wherein said database comprises an ordered set of data stores with at least one static data store for storing data entities and performing queries on said data entities, wherein said static data store uses an index structure which is based on a non-updatable representation of an ordered set of integers according to the principle of compressed inverted indices, wherein each of said data entities comprises an [sic] unique identifier and a plurality of fields each containing a single or multi valued value, the method comprises for a transaction the steps of:
determining the current ordered set of data stores when said transaction is started;
storing information of said current ordered set of data stores as transactional state for said transaction;
when said transaction comprises an insert, update or delete operation, generating a modifiable data store and adding said modifiable data store as newest data store to said transactional state for said transaction, wherein said modifiable data store is adapted to store data entities and to perform queries on said stored data entities;
executing said one or more operations of said transaction on the data entities in the data stores of which information has been stored in said transactional state;
when said transaction is committed and if said modifiable data store has been generated for said transaction, adding said modifiable data store as newest data store to said ordered set of data stores;
wherein, when one of said one or more operations of said transaction is a query operation with a query, said step of executing comprises:
performing said query against each of said data stores of which information has been stored in said transactional state, wherein said query returns ordered identifiers of data entities for each of said data stores that match with said query;
masking for each of said data stores those of said returned ordered identifiers for which a data entity with the same identifier already exists in a newer data store;
uniting said masked identifiers and returning said united identifiers;
wherein, when one of said one or more operations of said transaction is an insert operation for inserting a new data entity, said step of executing further comprises:
writing said new data entity in said modifiable data store, wherein a new unique identifier is used as identifier for said new data entity;
wherein said method further comprises:
converting one or more selected data stores of said ordered set of data stores to a new static data store, wherein said converting step further comprises:
reading all data entities from said one or more selected data stores;
masking for each of said one or more selected data store said read data entities for which a data entity with the same identifier already exists in a newer data store of said ordered set of data stores;
merging said masked data entities;
building a new index structure using the identifiers of said merged data entities for said new static data store, wherein said new index structure is based on said non-updatable representation of an ordered set of integers according to the principle of compressed inverted indices;
writing said merged data entities into said new static data store;
adding said new static data store to said ordered set of data stores and deleting said one or more selected data stores from said ordered set of data stores.
Is it patentable?
The first-instance examining division had decided that the subject-matter of independent claim 1 of the main request was not new over document D1. The board did not agree:
Document D1 relates to the construction of an inverted index for high-dimensional data (see paragraph  and claim 1). It does not disclose transactions, let alone a detailed mechanism for performing transactions as specified in claim 1 of the main request.
The Examining Division, in point 3.1 of the communication containing the reasons for the decision, apparently considered that “efficient transaction processing” was implicitly disclosed by the reference to current Online Analytical Processing (OLAP) systems in paragraphs  and  of the background section of document D1.
However, a reference to OLAP systems is far from a disclosure of a particular way of performing transactions.
Furthermore, the examining division had stated in its decision that it considered the term “transaction” to mean “any item which is processed within a computer system”. Also this assessment was turned over by the board:
Although this statement may explain why the Examining Division considered transaction processing to be implicit in OLAP systems, it also shows that the Examining Division failed to appreciate that claim 1 relates to the processing of a database transaction in the normal sense of the term, which is not any processed item but a unit of work that, in particular, is executed atomically, i.e. executed completely (and then “committed”) or not at all (with partial changes to the database being rolled back).
As to the claimed “ordered set of data stores”, which is an essential part of the invention’s mechanism for performing transactions, the Examining Division only stated that “the data source(s) from which data is received [in an OLAP system] can either be internal or external to a particular database system”.
But such a plurality of data sources does not disclose an “ordered set of data stores” to which a committed transaction commits a newly generated data store “as newest data store”.
As a result, the board concluded that claim 1 was novel over D1.
Moreover, the technical character of the above distinguishing features was not challenged by the board, but with respect to inventive step the board stated:
Moreover, since document D1 neither relates to providing support for database transactions nor discloses any of the key features of the invention, it cannot be regarded as a promising starting point for assessing inventive step. Therefore, it does not render the subject-matter of any of claims 1 to 15 obvious.
Since the board had doubts whether the search had been carried out completely, the case was remitted back to the first instance for further prosecution.
You can read the whole decision here: T 0568/17 (Database transactions/OPEN TEXT SOFTWARE) of 28.7.2020
Bastian is a European patent attorney at BARDEHLE PAGENBERG. He specializes in software patents in Europe both from a prosecution and litigation point of view.