A Data Constraint Engine (100) for enforcing data constraints in a
polyglot data tier (20) having a plurality of
database-specific data stores (21, 22, 23) of various types such as an RDBMS (21), a
Triplestore (22), and a MongoDB (23). The Data Constraint Engine uses the concept of a unified
data model based on “records” in order to allow data constraints to be defined (using so-called “
record shapes”) in a store-agnostic way. The Data Constraint Engine includes APIs (130) for
processing incoming requests from remote clients (30) relating to data in the
polyglot data tier, for example a request to create or update data in a
data store. The APIs extract, from such a request, a
record corresponding to the data specified in the request and a
data source identifier identifying the
data store holding the specified data. Then, on the basis of the
record extracted by the interface, an appropriate record shape is extracted from a shapes catalogue (110), the record shape determining the structure of the record. Validators (120) each validate the record against the record shape according to various criteria such as format,
data type, cardinality and slot count. If the record is validated, a record dispatcher (140) directs the specified data to the appropriate
data store using the
data source identifier. Data read from a data store can be validated in the same way.