CouchDB: l’arma vincente per un’applicazione scalabile

development & innovation - 22 Giugno, 2020

Una nuova applicazione in ambito digitale nasce sempre da una assodata necessità di business. Per dare una risposta concreta a queste necessità serve qualcuno che raccolga la sfida e, come nelle grandi storie del cinema e della narrativa, decida di accettare la missione e  mettersi in viaggio con il proprio gruppo di eroi. Ma dove sarebbe oggi Frodo Beggins senza la spada di Aragorn, l’arco di Legolas e l’ascia di Gimli? (Probabilmente non molto lontano dalla Contea). E così, come gli eroi della famosa compagnia brandiscono le loro armi migliori per raggiungere l’obiettivo designato, un operoso team di sviluppatori sceglie le tecnologie più performanti per creare l’applicazione ideale in grado di soddisfare le necessità dei propri clienti.

Come nel caso dell’applicazione che abbiamo sviluppato per un’importante azienda del settore dell’arredamento. Il cliente aveva come obiettivo principale quello di affiancare i clienti nella loro esperienza di acquisto, attraverso funzionalità smart e strumenti saldamente integrati alla complessa infrastruttura di una realtà aziendale che cresce ogni giorno sempre di più.

In un’applicazione di questo genere i dati e la loro gestione sono la prerogativa assoluta. Abbiamo quindi scelto un sistema gestionale di basi di dati che fosse veloce, flessibile e semplice da utilizzare. L’arsenale di DataBase a nostra disposizione era considerevole, ma non abbiamo avuto dubbi sulla scelta finale: La nostra arma vincente l’abbiamo trovata in CouchDB. Vediamo insieme perché.

Wikipedia docet e ci insegna che: Apache CouchDB ( CouchDB ) è un database di documenti NoSQL open source che raccoglie e archivia i dati in formato documenti basati su JSON.

Già a partire dalla sua definizione individuiamo un aspetto centrale per il nostro progetto, poiché a differenza dei database relazionali, CouchDB utilizza un modello di dati privo di schemi, che dunque semplifica la gestione dei record su vari dispositivi, smartphone, tablet e browser Web. Questa caratteristica è sicuramente importante se vogliamo che la nostra applicazione sia in grado di trattare dati con caratteristiche diverse e farlo su piattaforme diverse.

In secondo luogo CouchDB è opensource, ovvero è un progetto supportato da una comunità attiva di sviluppatori che migliora continuamente il software prestando particolare attenzione alla facilità d’uso e al supporto continuo del web. Ciò permette un maggiore controllo sul software e una maggiore flessibilità nell’adattarlo alle esigenze specifiche della nostra azienda cliente.

Ma per raggiungere il Monte Fato servono altre abilità speciali che garantiscano costanza, adattabilità e solidità alla missione… si, sto ancora parlando di CouchDB!

  • Lo Spaccascudi: nessun blocco di lettura

Nella maggior parte dei database relazionali, dove i dati sono archiviati in tabelle, se è necessario aggiornare o modificare una tabella la riga di dati che viene modificata viene bloccata su altri utenti fino a quando la richiesta di modifica non viene elaborata. Ciò può creare problemi di accessibilità per i clienti e colli di bottiglia nei processi di gestione dei dati. CouchDB utilizza MVCC (Multi-Version Concurrency Control) per gestire contemporaneamente l’accesso ai database. Ciò significa che indipendentemente dagli attuali carichi di database, CouchDB può essere eseguito alla massima velocità e senza restrizioni per i suoi utenti.

  • Sesto senso: flessibilità per ogni occasione

Grazie al sinergico lavoro di una comunità open source, CouchDB mantiene una base solida e affidabile per la gestione dei database aziendali. Sviluppato da diversi anni come soluzione priva di schemi, CouchDB offre una flessibilità senza pari che non è possibile trovare nella maggior parte delle soluzioni di database proprietarie. Inoltre, viene fornito con una suite di funzionalità progettate per ridurre qualsiasi sforzo legato all’esecuzione di sistemi distribuiti.

  • Furia dell’arciere: scalabilità e bilanciamento

Il design architettonico di CouchDB lo rende estremamente adattabile durante il partizionamento di database e il ridimensionamento dei dati su più nodi. CouchDB supporta sia il partizionamento orizzontale che la replica per creare una soluzione facilmente gestibile per bilanciare i carichi di lettura e scrittura durante una distribuzione del database. CouchDB è dotato di un motore di archiviazione molto durevole e affidabile, costruito da zero per infrastrutture multicloud e multi-database. Come database NoSQL, CouchDB è molto personalizzabile e apre le porte allo sviluppo di applicazioni prevedibili e basate sulle prestazioni, indipendentemente dal volume di dati o dal numero di utenti.

Durante un’eroica missione è necessario però calcolare ogni minimo imprevisto ed analizzare il percorso da seguire, in modo da minimizzare il rischio e superare gli ostacoli lungo la via. Per questo abbiamo bisogno di validi strumenti di viaggio per orientarci, esplorare, replicare. Così abbiamo approfondito la nostra ricerca, esaminando gli strumenti di CouchDB e il loro utilizzo in termini di sincronizzazione, approccio first-offline e gestione ottimizzata delle repliche. 

  • Replica bidirezionale

Una delle caratteristiche distintive di CouchDB è proprio la replica bidirezionale, che consente la sincronizzazione dei dati su più server e dispositivi tramite la replica bidirezionale. Questa replica consente alle aziende di massimizzare la disponibilità dei sistemi, ridurre i tempi di recupero dei dati, geo-localizzare i dati più vicini agli utenti finali e semplificare i processi di backup.
CouchDB identifica le modifiche ai documenti che si verificano da qualsiasi fonte e garantisce che tutte le copie del database rimangano sincronizzate con le informazioni più aggiornate.

  • Viste dinamiche

CouchDB utilizza le viste come strumento principale per l’esecuzione di query e la creazione di report da file di documenti memorizzati. Le viste consentono di filtrare i documenti per trovare informazioni rilevanti per un particolare processo di database. Poiché le viste CouchDB sono costruite in modo dinamico e non influiscono direttamente sugli archivi di documenti sottostanti, non vi è alcuna limitazione al numero di viste diverse degli stessi dati che è possibile eseguire.

  • Indici potenti

Un’altra grande caratteristica di CouchDB è la disponibilità di Apache MapReduce di creare indici potenti che localizzano facilmente i documenti in base a qualsiasi valore presente in essi. È quindi possibile utilizzare questi indici per stabilire relazioni da un documento al successivo ed eseguire una varietà di calcoli basati su tali connessioni.

  • API

CouchDB utilizza un’API RESTful per accedere al database da qualsiasi luogo, con flessibilità completa delle operazioni CRUD (creazione, lettura, aggiornamento, eliminazione). Questo mezzo semplice ed efficace di connettività al database rende CouchDB flessibile, veloce e potente da usare pur rimanendo altamente accessibile.

  • Costruito per l’offline

CouchDB consente alle applicazioni di archiviare i dati raccolti localmente su dispositivi mobili e browser, quindi sincronizza tali dati una volta tornati online.

  • Archiviazione efficiente dei documenti

I documenti sono le unità primarie di dati utilizzati in JSON, composti da vari campi e allegati per una facile memorizzazione. Non vi è alcun limite alla dimensione del testo o al conteggio degli elementi di ciascun documento ed è possibile accedere e aggiornare i dati da più origini di database e tra cluster di server distribuiti a livello globale.

  • Compatibilità

CouchDB è estremamente accessibile e offre una varietà di vantaggi di compatibilità quando è integrato con la tua infrastruttura attuale. CouchDB è stato scritto in Erlang (un linguaggio di programmazione e sistema di runtime pensato per sistemi distribuiti) che lo rende affidabile e facile da utilizzare.

Spero quindi che ora vi sia più chiaro il ruolo dei  database all’interno delle aziende, parliamo di  tecnologie indispensabili e importantissime su cui vengono sviluppati nuovi software ed applicazioni per ottimizzare il business.

Dopo un’attenta analisi e lunghe ricerche abbiamo quindi potuto scegliere con sicurezza e tranquillità l’arma da utilizzare nella nostra “missione” di sviluppo:  CouchDB. Affidabilità, scalabilità, flessibilità e solidità. Questo associato ad un team di sviluppatori competente che ha saputo adattare la tecnologia ai bisogni concreti del cliente, ci ha concesso di  fornire un’applicazione performante che in poco tempo è diventata indispensabile per la gestione del business.

Missione compiuta! La Terra di Mezzo può dormire sonni tranquilli.

Avatar
Antonio Petito

Project Manager & Software Developer