An interactive SQL relational interface for querying main-memory data structures

Research output: Contribution to journalArticleScientificpeer-review

2 Citations (Scopus)

Abstract

Query formalisms and facilities have received significant attention in the past decades resulting in the development of query languages with varying characteristics; many of them resemble sql. Query facilities typically ship as part of database management systems or, sometimes, bundled with programming languages. For applications written in imperative programming languages, database management systems impose an expensive model transformation. In-memory data structures can represent sophisticated relationships in a manner that is efficient in terms of storage and processing overhead, but most general purpose programming languages lack an interpreter and/or an expressive query language for manipulating interactive queries. Issuing interactive ad-hoc queries on program data structures is tough. This work presents a method and an implementation for representing an application’s arbitrary imperative programming data model as a queryable relational one. The Pico COllections Query Library (pico ql) uses a domain specific language to define a relational representation of application data structures and an sql interface implementation. Queries are issued interactively and are type safe. We demonstrate our relational representation for objects and the library’s usefulness on three large c++ projects. pico ql enhances query expressiveness and boosts productivity compared to querying via traditional programming constructs.

Original languageEnglish
Pages (from-to)1141-1164
Number of pages24
JournalComputing
Volume97
Issue number12
DOIs
Publication statusPublished - 1 Dec 2015
Externally publishedYes

Keywords

  • Interactive
  • Main-memory
  • Object
  • Query
  • sql

Fingerprint

Dive into the research topics of 'An interactive SQL relational interface for querying main-memory data structures'. Together they form a unique fingerprint.

Cite this