Due to the scalability limitations of relational databases and the growth in the size of the data that organizations are handling, the last two decades have seen significant growth in the use of NoSQL (Not only SQL) solutions for data-intensive applications. While the NoSQL landscape is quite heterogeneous - with different data models, architectures, and goals - a common need that has arisen is that of a convenient interface to query these databases. Some of them have resorted to introducing their proprietary SQL dialect, an approach which carries as advantages SQL’s expressive power and the fact that is very widely known. The goal of this work is the design and implementation of an SQL-like language to query the new NoSQL key-value database AyraDB. The design of the language first entails a discussion of the existing NoSQL solutions, particularly concerning their approach to querying. We also need to take into consideration the most common features of SQL in relational databases, selecting the ones that should be introduced to the new language. Finally, the language needs to be extended to allow for granular querying of semi-structured data. For what concerns the implementation, Flex and Bison are used to build a parser for the new language. The goal of the parser is the translation of queries into their corresponding query tree, which can then be easily read by the database engine to execute the query. Particular care is taken in ensuring the semantic correctness of queries and in producing verbose and informative error messages for the users.

Date le limitazioni in fatto di scalabilità dei database relazionali e la crescita dei dati gestiti dalle organizzazioni, gli ultimi due decenni hanno visto una crescita significativa dell'uso di soluzioni NoSQL (Not only SQL, non solo SQL) per applicazioni data-intensive. Per quanto il panorama NoSQL sia piuttosto eterogeneo, con diversi modelli di dati, architetture e obbiettivi, si è sviluppato un bisogno comune di interfacce che siano comode per interrogare questi database. Alcuni di questi hanno fatto ricorso all'introduzione di un dialetto SQL, un approccio che porta come vantaggio la potenza espressiva di SQL ed il fatto che questo sia molto conosciuto. L'obbiettivo di questo lavoro è la progettazione ed implementazione di un linguaggio SQL-like per interrogare il nuovo database NoSQL chiave-valore AyraDB. La progettazione del linguaggio comporta prima una discussione delle soluzioni NoSQL esistenti, in particolare riguardo al loro approccio all'interrogazione. Dobbiamo anche considerare le caratteristiche più comuni di SQL nei database relazionali, selezionando quelle che dovrebbero essre introdotte nel nuovo linguaggio. Infine, il linguaggio deve essere esteso per permettere l'interrogazione granulare di dati semi-strutturati. Per quanto riguarda l'implementazione, Flex e Bison sono usati per costruire un parser per il nuovo linguaggio. L'obbiettivo del parser è quello di tradurre le query nel loro corrispondente query tree, che può essere facilmente letto dal motore del database per eseguire la query. Una particolare attenzione è riservata alla verifica della correttezza semantica delle query e alla produzione di messaggi di errore verbosi ed informativi per gli utenti.

Design and implementation of an SQL-like query language for a key-value database

Guareschi, Federico
2020/2021

Abstract

Due to the scalability limitations of relational databases and the growth in the size of the data that organizations are handling, the last two decades have seen significant growth in the use of NoSQL (Not only SQL) solutions for data-intensive applications. While the NoSQL landscape is quite heterogeneous - with different data models, architectures, and goals - a common need that has arisen is that of a convenient interface to query these databases. Some of them have resorted to introducing their proprietary SQL dialect, an approach which carries as advantages SQL’s expressive power and the fact that is very widely known. The goal of this work is the design and implementation of an SQL-like language to query the new NoSQL key-value database AyraDB. The design of the language first entails a discussion of the existing NoSQL solutions, particularly concerning their approach to querying. We also need to take into consideration the most common features of SQL in relational databases, selecting the ones that should be introduced to the new language. Finally, the language needs to be extended to allow for granular querying of semi-structured data. For what concerns the implementation, Flex and Bison are used to build a parser for the new language. The goal of the parser is the translation of queries into their corresponding query tree, which can then be easily read by the database engine to execute the query. Particular care is taken in ensuring the semantic correctness of queries and in producing verbose and informative error messages for the users.
FRANCALANCI, CHIARA
RAVANELLI, PAOLO
ING - Scuola di Ingegneria Industriale e dell'Informazione
21-dic-2021
2020/2021
Date le limitazioni in fatto di scalabilità dei database relazionali e la crescita dei dati gestiti dalle organizzazioni, gli ultimi due decenni hanno visto una crescita significativa dell'uso di soluzioni NoSQL (Not only SQL, non solo SQL) per applicazioni data-intensive. Per quanto il panorama NoSQL sia piuttosto eterogeneo, con diversi modelli di dati, architetture e obbiettivi, si è sviluppato un bisogno comune di interfacce che siano comode per interrogare questi database. Alcuni di questi hanno fatto ricorso all'introduzione di un dialetto SQL, un approccio che porta come vantaggio la potenza espressiva di SQL ed il fatto che questo sia molto conosciuto. L'obbiettivo di questo lavoro è la progettazione ed implementazione di un linguaggio SQL-like per interrogare il nuovo database NoSQL chiave-valore AyraDB. La progettazione del linguaggio comporta prima una discussione delle soluzioni NoSQL esistenti, in particolare riguardo al loro approccio all'interrogazione. Dobbiamo anche considerare le caratteristiche più comuni di SQL nei database relazionali, selezionando quelle che dovrebbero essre introdotte nel nuovo linguaggio. Infine, il linguaggio deve essere esteso per permettere l'interrogazione granulare di dati semi-strutturati. Per quanto riguarda l'implementazione, Flex e Bison sono usati per costruire un parser per il nuovo linguaggio. L'obbiettivo del parser è quello di tradurre le query nel loro corrispondente query tree, che può essere facilmente letto dal motore del database per eseguire la query. Una particolare attenzione è riservata alla verifica della correttezza semantica delle query e alla produzione di messaggi di errore verbosi ed informativi per gli utenti.
File allegati
File Dimensione Formato  
2021_12_Guareschi.pdf

non accessibile

Descrizione: tesi
Dimensione 1.58 MB
Formato Adobe PDF
1.58 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/182654