A Query Language for Scientific Meshes
- Several scientific domains store their data in unstructured meshes. Due to the complexity of modeling and querying meshes, the database community has neglected the need for a dedicated database model and query language for scientific meshes. Thus, the scientists either use existing databases to model meshes or develop their own technologies to address mesh specific functionalities. Although relational databases can be adapted to store and query meshes, they lack sufficient abstraction for modeling and querying meshes. Scientists develop their own in-house technologies using general-purpose programming languages. Such implementations provide no high-level query language interface, require deep programming knowledge, and are tightly coupled with dataset characteristics and thus are less reusable, their maintenance cost is high, and their performance is limited to memory size.
The thesis addresses the problem of designing a high-level query language for meshes which can express essential mesh processing requirements in the literature. Previous research shows that the concept of iteration (i.e., iteration over cells, topology, geometry) is at the heart of many mesh queries. The thesis starts off by proposing a graph-based mesh data model which represents cells as nodes and topological relations as links. Each node and link act as property containers which can be used to store data fields and geometric information. The thesis shows how to verify several mesh constraints on the model. This includes properties which ensure structural validity of meshes. The semantics of a set of algebraic mesh operators based on the proposed graph model have been described. The set of operators consists of several new operators which are designed to express the mesh processing requirements and in particular the concept of iteration. MQuery has been introduced as a high-level mesh query language w.r.t. the data model and the algebraic operators which enables the user to express the mesh processing requirements. MQuery captures general mesh query processing abstraction by treating meshes and cells as first-class citizens. The iteration introduced by MQuery can be computed in finite time and thus is safe in evaluation. The language has been implemented on top of two database back-ends, namely, Neo4j graph database and PostgreSQL relational database by translating queries to Cypher (Neo4j graph query language) and SQL queries. The performance of the implementations have been compared to a mesh library using five example queries and three datasets and the results are reported.