IEEE Access (Jan 2019)

A Model-Driven Approach to Generate Schemas for Object-Document Mappers

  • Alberto Hernandez Chillon,
  • Diego Sevilla Ruiz,
  • Jesus Garcia Molina,
  • Severino Feliciano Morales

DOI
https://doi.org/10.1109/ACCESS.2019.2915201
Journal volume & issue
Vol. 7
pp. 59126 – 59142

Abstract

Read online

Many actual NoSQL systems are schemaless, that is, the structure of the data is not defined beforehand in any schema, but it is implicit in the data itself. This characteristic is very convenient when the data structure suffers frequent changes. However, the agility and flexibility achieved is at the cost of losing some important benefits, such as 1) assuring that the data stored and retrieved fits the database schema; 2) some database utilities require to know the schema, and; 3) schema visualization helps developers to write better code. In previous work, we proposed a model-based reverse engineering approach to infer schema models from NoSQL data. Model-driven engineering (MDE) techniques can be used to take advantage of extracted models with different purposes, such as schema visualization or automatic code generation. Here, in this paper, we present an MDE solution to automate the usage of Object-NoSQL mappers when the database already exists. We will focus on mappers that are available for document systems (Object-Document mappers, ODMs), but the proposed approach is mapper-independent. These mappers are emerging to provide similar functionality to Object-Relational mappers: they are in charge of the mapping of objects into NoSQL data (documents in the case of ODMs) for object-oriented applications. We show how schemas and other artifacts (e.g. validators and indexes) for ODMs can be automatically generated from inferred schemas. The solution consists of a two-step model transformation chain, where an intermediate model is generated to ease the code generation. We have applied our approach for two popular ODMs: Mongoose and Morphia and validated it with the StackOverflow dataset.

Keywords