A Unified Metamodel for NoSQL and Relational Databases


U-Schema is a unified logical model that integrates the concepts and rules of both the relational model and the four most common NoSQL data models: columnar, document, graph, and key–value. It includes the basic concepts traditionally used to create logical schemas, which are part of well-known formalisms such as Entity-Relationship (ER) and UML Class Models: entity type, simple and multivalued attributes, key attribute, and three kinds of relationships between entity types: aggregation, reference, and inheritance. Also, U-Schema incorporates some additional concepts, such as relationship types, and structural variations of entity and relationship types.


U-Schema Engineering Projects


Athena (Abstract Schema Definition Language) is a textual DSL aimed to define abstract schemas in a platform-independent way. For doing so Athena reunites concepts of all NoSQL paradigms, based on the U-Schema metamodel. Athena has been designed using Xtext and the Eclipse Modeling Framework. Examples of Athena schemas may be found on the models folder.

Orion (Operations defined over Athena Schemas) is a textual DSL aimed to specify operations to be executed over an Athena schema in order to update (evolve) it along with the associated data. Orion has been designed using Xtext and the Eclipse Modeling Framework. It is distributed with an extension to handle code update by generating CodeQL queries.

Deimos (Data Generation and Mapping Operations) is a declarative textual language aimed to generate synthetic data.

Eirene (Entity Inheritance Discoverer in Document Stores) is a tool aimed to discover entity inheritance relationships in which a parent entity type is specialized in one or more child entity types. This tool is based on the U-Schema metamodel and its algorithm identifies existing subtypes based on feature dependencies.

SkiQL is a tool that allows developers to query U-Schema models in a platform-independent way. SkiQL provides two constructs: schema-query and relationship-query. The former allows to obtain information of entity or relationship types, and the latter that of the aggregations or references (relations among types).


U-Schema Inference Projects


These projects allow users to extract the schema of a running database and create a corresponding U-Schema model from it. If the database holds an explicit schema definition then this schema is traversed to create the model. On the other hand, if the schema is only implicit in the data then the process traverses such data, inferring the schema by processing each entry stored. Currently, the following databases are supported: MySQL, MongoDB, Cassandra, Neo4j, and Redis.