from it. Lack of place, we show only Cassandra
physical model (figure 5.b) generated from the
generic logical model (figure 4.a). An excerpt from
the QVT transformation script is shown in Figure
5.a.
(a) QVT Rules. (b) Cassandra Model.
Figure 5: GenericModeltoCassandraModel transformation.
7 RELATED WORK
To the best of our knowledge, there are only few
solutions that have dealt with NoSQL databases
conceptual modeling. Chevalier et al. (Chevalier,
2015) defined a set of rules to map a
multidimensional model into column-oriented and
document-oriented models. The links between facts
and dimensions have been converted using
imbrications. Although the transformation process
proposed by authors start from a conceptual level
(multidimensional model), this specific model is
different from the UML standard; it contains facts,
dimensions and one type of links only. Other studies
investigate the process of transforming relational
databases into HBase (Li, 2010) and MongoDB
(Vajk, 2013). However, the relational model does
not present the semantic richness of UML
(especially through the several types of relationships
between classes: association, composition,
generalization, etc.). Few works have presented
approaches to implement UML conceptual models
in NoSQL databases. Li et al. (Li, 2014) propose a
MDA-based approach to transform UML class
diagram into HBase. After building the source and
the target metamodels, the authors have proposed
mapping rules to realize the transformation from the
conceptual level to the physical level. These rules
are applicable to HBase, only. Daniel et al. (Daniel,
2016) describe the mapping between UML
conceptual models and graph databases via an
intermediate graph metamodel. These rules are
specific to graph databases used as a framework for
managing complex data with many connections.
Generally, this kind of NoSQL databases is used in
social networks where data are highly connected.
8 CONCLUSION AND
PERSPECTIVES
In this paper we have presented a MDA-based
approach to implement UML conceptual model
describing Big Data in NoSQL systems. Our
approach consists of a chain of transformations that
generate a generic logical model compatible with the
three types of NoSQL systems (column, document
and graph) and independent of a specific NoSQL
platform, which makes it easier to transform it into
several NoSQL physical models. As future work, we
plan to complete our transformation process and
propose a mapping for OCL expressions defined in
the conceptual model; queries languages provided
by NoSQL databases could be used for this.
REFERENCES
Angadi, A., Gull, K., 2013. Growth of New Databases &
Analysis of NOSQL Datastores. In IJARCSSE.
Cattell, R., 2011. Scalable SQL and NoSQL data stores. In
ACM SIGMOD Record.
Abelló, A., 2015. Big data design. In DOLAP.
Hutchinson, J., Rouncefield, M., Whittle, J., 2011. Model-
driven engineering practices in industry. In ICSE.
Li, C., 2010. Transforming relational database into HBase:
A case study. In ICSESS.
Douglas, L., 2001. 3d data management: Controlling data
volume, velocity and variety. Gartner.
Bézivin, J., Gerbé, O,. 2001. Towards a precise definition
of the OMG/MDA framework. In ASE.
Chevalier, M., El Malki, M., Kopliku, A., Teste, O.,
Tournier, R., 2015. How Can We Implement a
Multidimensional Data Warehouse Using NoSQL?. In
ICEIS.
Abadi, D., Madden, S., Hachem, N., 2008. Column-stores
vs. row-stores: How different are they really?. In
ICMD.
Li, Y., Gu, P., Zhang, C., 2014. Transforming UML class
diagrams into HBase based on metamodel. In ISEEE.
Daniel, G., Sunyé, G., Cabot, J., 2016. Mapping
conceptual schemas to graph databases. In ER.
Vajk, T., Feher, P., Fekete, K., Charaf, H., 2013.
Denormalizing data into schema-free databases. In
CogInfoCom.
main(){
Source.rootObjects()[DataBase]‐>
maptoKeySpace();
}
mapping
DataBase::toKeySpace():KeySpace{
name:=self.name;
columnsfamily:=self.tables‐>map
toColumnsFamily();
}
‐‐TransformingCtableto
ColumnsFamily
mappingCOLM
::Table::toColumnsFamily():Cassandr
a::ColumnsFamily{
name:=self.name;
column:=self.columns‐>map
toColumn();
}
‐‐TransformingAttributetoColumn
mappingCOLM
::Column::toColumn():Cassandra::Col
umn{
if(self.cType="Rid"){