Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

SimpleDB: un semplice RDBMS con supporto a SQL

SimpleDB è un RDBMS (Relational Database Management System) Open Source che supporta buona parte delle funzionalità di SQL
SimpleDB: un semplice RDBMS con supporto a SQL
SimpleDB è un RDBMS (Relational Database Management System) Open Source che supporta buona parte delle funzionalità di SQL
Link copiato negli appunti

SimpleDB è un interessante progetto che ha portato alla realizzazione di un RDBMS (Relational Database Management System) in grado di supportare la maggior parte delle funzionalità del linguaggio SQL. Tra queste feature troviamo per esempio le transazioni, un Query Optimizer e un Query Parser, coprendo gran parte dei task previsti da applicazioni più complesse come per esempio MySQL.

Archiviazione dei dati e metodi di accesso

In SimpleDB i record sono indicati come tuple. Ognuna di esse si riferisce ad un insieme di campi che rappresentano i valori delle colonne di un riga. Attualmente però, gli unici tipi di campi supportati sono stringhe e interi. Le tuple che presentano lo stesso schema devono utilizzare lo stesso numero di byte indipendentemente dai valori dei campi.

Esse vengono memorizzate in pagine archiviate su disco. Ogni tabella del database è memorizzata come un'istanza di DbFile che fornisce un'interfaccia per leggere e scrivere pagine e tuple sul disco di riferimento.

L'oggetto singleton Catalog gestisce l'inserimento di nuove tabelle e la visualizzazione di schemi e chiavi primarie. BufferPool gestisce invece accessi e modifiche alle pagine. Quest'ultimo ha una visione globale degli accessi e può memorizzare in cache le pagine utilizzate più frequentemente in modo che i loro recuperi non vengano archiviati sempre su disco.

Il supporto alle transazioni

In SimpleDB le transazioni vengono eseguite in parallelo. È quindi necessario il locking per evitare conflitti di dati tra transazioni eseguite contemporaneamente. Viene allora utilizzato il protocollo Strict Two-Phase Locking (o 2PL) per il controllo della concorrenza e il blocco dei dati a livello di pagina.

Un LockManager fornisce supporto sia per i lock condivisi che per i lock esclusivi, in questo modo più lettori possono accedere agli stessi dati in parallelo. I lock vengono acquisiti quando una pagina viene recuperata da BufferPool e la funzione di recupero delle pagine si blocca fino a quando il lock non viene acquisito dal LockManager. Esiste quindi il rischio di deadlock ma SimpleDB implementa anche un DependencyGraph in grado di rilevarli.

Se dovesse essere innescato un deadlock, la transazione verrebbe abortita. In ogni caso tutti i lock detenuti da una transazione sarebbero rilasciati quando essa viene completata.

Per clonare il progetto è possibile accede al repository dedicato su GitHub. Mentre per ulteriori approfondimenti è disponibile un articolo pubblicato dallo stesso autore di SimpleDB.

Ti consigliamo anche