DensoDB è un nuovo motore di database che sposa la filosofia del movimento NoSql. Il movimento NoSql promuove una serie di strumenti per la gestione e l’archiviazione dei dati che lavorano in modo differente dalla classica struttura di dati relazionali. Questo tipo di archivi di dati non richiede una struttura fissa per l’archiviazione, e sono quindi più flessibili e tipicamente più veloci dei DB tradizionali.
DensoDB nasce con lo scopo di portare questo tipo d’implementazione più vicino al mondo .Net e di rendere la tecnologia flessibile e facilmente utilizzabile sia ad un programmatore esperto sia a chi si affaccia per la prima volta a questo mondo.
L’implementazione del DB è strutturata secondo il pattern architetturale CQRS (Command Query Responsibility Segregation) che permette un alto grado di velocità e scalabilità dell’architettura del DB.
Denso supporta inoltre un protocollo di comunicazione basato su tecnologia P2P (solitamente associata a tecniche di scambio dati in ambienti di connettività home-user). Il pattern architetturale CQRS unito al protocollo P2P e la possibilità di utilizzare il DB in modalità in-process, rende Densodb lo strumento ideale per applicazioni dove portabilità velocità e capacità di gestire il dato sono fondamentali per il successo stesso delle applicazioni.
Come altri strumenti che nascono dal movimento No-SQL, DeNSo DB ha un licensing Open-Source, con la possibilità di essere utilizzato anche in applicazioni commerciali.
Densodb può essere utilizzato in tre modi differenti.
1. InProcess: E' il modo più veloce per usarlo perchè non c'è bisogno di nessuna installazione e di nessun protocollo di comunicazione. Inoltre è possibile accedere direttamente alla memoria del database ed è possibile manipolare oggetti e dati in modo molto veloce.
2. As a Service: Installato come servizio di Windows, può essere utilizzato come un database accessibile dalla LAN. E’ possibile comunicare con il database attraverso il protocollo REST oppure attraverso WCF e SOAP. La modalità d’uso è identica alla modalità In-Process
3. On a Mesh: Questa modalità è un mix tra le due precedenti modalità di utilizzo, con in più il supporto alla rete P2P. Il protocollo P2P permette di sincronizzare in modo automatico i messaggi tra 2 o più database in modo trasparente per l’utilizzatore, che avrà in ogni momento se vuole la possibilità di intervenire nel processo di sincronia. Ciò rende densodb un prodotto estremamente scalabile ed apre le porte ad un modo di strutturare le applicazioni (in modo particolare quelle del mondo “social”) del tutto nuovo.
Caratteristiche:
1. Journaled – Ogni operazione viene loggata in modo da rendere l’architettura affidabile.
2. Costruito seguendo il pattern architetturale Command Query Responsibility Segregation.
3. Memorizza le informazioni in un formato derivato dal formato BSON
4. Accessibile via REST
5. Accessibile via WCF
6. Supporto al protocollo P2P per la sincronizzazione di 2 o più DB.
7. Permette l’implementazione di plugin lato server per modificare il comportamento del DB oppure per trattare dati complessi.
8. Implementa Linq per la scrittura delle query.
Un po’ di teoria
In un database con questo tipo di architettura, ogni informazione è considerata un documento. I dati sono memorizzati così come sono e di solito non c'è bisogno di semplificare o modificare la loro struttura, e non sono richieste operazioni di “normalizzazione”.
Ogni documento è memorizzato in formato Bson-like ed è autonomo, tutto ciò che gli occorre per comprendere le informazioni che contiene, si trova nel documento stesso. Non sono quindi necessarie operazioni aggiuntive per decodificare le informazioni presenti nel documento.
Si possono creare collezioni (elenchi) di documenti. In tal caso però non dobbiamo pensare ad una collezione come ad una tabella, ma piuttosto possiamo immaginarle come insiemi di documenti classificati nello stesso modo. Una collezione è senza schema, questo significa che ed è possibile memorizzare diversi tipi di documenti nella stessa collezione.
Ogni documento in ogni collezione è classificato con un identificatore univoco. Il DB utilizzerà un GUID per archiviare e accedere ad ogni documento direttamente.
I documenti possono in ogni momento essere cercati attraverso delle Query in formato Linq.
Leggi le recensioni