UnDB prototipo di Database NoSql RESTful

UNDB: Un Prototipo di Database NoSQL Leggero e Flessibile scritto in C# Net 8.0

UNDB è un prototipo di database NoSQL progettato per essere semplice, leggero e facile da usare. Utilizza un formato di file JSON per memorizzare i dati, offrendo una struttura flessibile e adattabile a diverse esigenze.

Caratteristiche Principali

  • NoSQL: Non richiede uno schema predefinito, consentendo di aggiungere e modificare i dati in modo dinamico.
  • Leggerezza: Utilizza file JSON come storage, riducendo l'overhead di gestione rispetto ai database tradizionali.
  • Interfaccia HTTP: Espone un'API RESTful tramite un server HTTP, facilitando l'interazione da diversi linguaggi di programmazione.
  • Autenticazione di Base: Utilizza l'autenticazione HTTP di base per proteggere l'accesso ai dati. Per i test, le credenziali predefinite sono root:123.

Tipi di Handle e Formattazione

UNDB supporta diverse operazioni (handle) per interagire con i dati:

  • CREATE TABLE: Crea una nuova tabella specificando il nome e le colonne con i relativi tipi (autoincrement, unique, boolean, int, string).
    • Formato:GET /createtable?table=&columns=,
  • INSERT: Inserisce un nuovo record in una tabella.
    • Formato:POST /insert?table= con il corpo della richiesta contenente un oggetto JSON con i dati da inserire.
  • UPDATE: Aggiorna un record esistente in una tabella.
    • Formato:PUT /update?table=&id= con il corpo della richiesta contenente un oggetto JSON con i dati da aggiornare.
  • DELETE: Elimina un record da una tabella.
    • Formato:DELETE /delete?table=&id=
  • SELECT: Legge i dati da una tabella (non ancora implementato in questo prototipo).

C#

C#
using System.Net.Http;
using System.Net.Http.Headers;
using Newtonsoft.Json.Linq;
// ...
var client = new HttpClient();
var byteArray = Encoding.ASCII.GetBytes("root:123"); // Credenziali di testclient.
DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(byteArray));
var response = await client.GetAsync("http://localhost:8080/createtable?table=utenti&columns=id:autoincrement,nome,email:unique");
// ...

PHP

PHP
$url = 'http://localhost:8080/insert?table=utenti';
$data = json_encode(['nome' => 'Mario Rossi', 'email' => 'mario.rossi@example.com']);
$ch = curl_init($url);curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD,"root:123"); // Credenziali di test
$response = curl_exec($ch);
curl_close($ch);

C++ (usando libcurl)

C++
#include
#include
#include
// ...
CURL *curl;
CURLcode res;
std::string readBuffer;
curl = curl_easy_init();
if(curl) {
curl_easy_setopt(curl, CURLOPT_URL, "http://localhost:8080/update?table=utenti&id=1");
curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "PUT");
curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "{"nome": "Luigi Bianchi"}");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
res = curl_easy_perform(curl);
// ...
}


Python

Python
import requestsurl = 'http://localhost:8080/delete?table=utenti&id=1'
response = requests.delete(url, auth=('root', '123')) // Credenziali di test
// ...

Considerazioni Finali

UNDB è un progetto in corso di sviluppo e rappresenta un punto di partenza per la creazione di un database NoSQL personalizzato. Attualmente, mancano funzionalità importanti come il supporto per query complesse, la gestione della concorrenza e un sistema di autenticazione più robusto. Tuttavia, offre una base solida per sperimentare e costruire soluzioni su misura per le tue esigenze, tenendo presente che l'autenticazione di base è solo a scopo di test e dovrebbe essere sostituita con un meccanismo più sicuro in un ambiente di produzione.

Il database deve essere avviato con privilegi di amministazione (perchè automaticamente si instanzia su tutti gli ip del pc).

l'utente creato in automatico sul db al primo avvio è root e come password ha 123.

Download UnDb_NoSql

Il software UNDB è fornito "così com'è", senza alcuna garanzia, esplicita o implicita, inclusa, ma non limitata a, garanzie di commerciabilità, idoneità per uno scopo particolare e non violazione. In nessun caso l'autore o i contributori saranno responsabili per eventuali danni diretti, indiretti, incidentali, speciali, consequenziali o punitivi derivanti dall'uso di questo software, anche se avvisati della possibilità di tali danni.

Questo DB è stato creato da Fabiodirauso a puro scopo dimostrativo.

L'utente accetta di utilizzare il software UNDB a proprio rischio e pericolo. L'autore non si assume alcuna responsabilità per eventuali perdite di dati, danni ai sistemi o altre conseguenze derivanti dall'utilizzo di questo software.

Il software UNDB è un prototipo sperimentale e non è destinato all'uso in ambienti di produzione. L'autore non garantisce l'affidabilità, la sicurezza o la completezza di questo software.

L'utente è responsabile di valutare l'idoneità del software UNDB per le proprie esigenze e di adottare le misure appropriate per proteggere i propri dati e sistemi.