Come funziona un database SQLite?

SQLite è un database utilizzato in milioni di software e dispositivi mobili. E’ stato inventato da D.Richard Hipp nell’agosto 2000. Lite in SQLite significa leggerezza in termini di installazione, amministrazione del database e risorse necessarie, motivo per cui è stato scelto come database in molte app per smartphone e dispositivi portatili (con esigue risorse e capacità di elaborazione).

In parole povere, SQLite è un pacchetto software di dominio pubblico che fornisce un sistema di gestione di database relazionale o RDBMS. I sistemi di database relazionali vengono utilizzati per archiviare record definiti dall’utente in tabelle di grandi dimensioni. Oltre all’archiviazione e alla gestione dei dati, un motore di database può elaborare comandi di query complessi che combinano dati da più tabelle per generare report e riepiloghi di dati. Altri prodotti RDBMS popolari includono Oracle Database, DB2 di IBM e SQL Server di Microsoft sul lato commerciale, con MySQL e PostgreSQL che sono popolari prodotti open source.

Continue Reading


Scegliere il giusto database

La scelta del database giusto dipende principalmente dalle esigenze dell’applicazione. Ci sono molti fattori da considerare nella scelta del database. In questo articolo, confrontiamo le proprietà ACID, gli attributi CAP e altre funzionalità dei database Cassandra, MongoDB e MySQL per aiutarti a scegliere il database giusto per le tue applicazioni. Continue Reading


CAP Theorem

Il teorema del CAP (ConsistencyAvailability and Partition tolerance), ideato dall’informatico statunitense Eric Brewer, afferma afferma che è impossibile per un sistema informatico distribuito fornire simultaneamente tutte e tre le seguenti garanzie: Coerenza, Disponibilità e Tolleranza delle partizioni.

Di seguito è riportata una breve definizione di questi tre termini:

  • Consistency: E’ la garanzia che ogni nodo in un cluster distribuito restituisca lo stesso dato più recente, ovvero proveniente dall’ultima scrittura dello stesso, oppure un messaggio di errore. Ogni client che interroga un qualsiasi cluster del sistema distribuito ha la stessa “vista” dei dati.  Ad esempio, un’applicazione bancaria distribuita mostrerà sempre il saldo corretto nel proprio account.
  • Availability: significa semplicemente che ogni richiesta deve ricevere una risposta. Un server funzionante non può ignorare una richiesta di un client ed è obbligato a dare una risposta. Nella maggior parte dei sistemi reali, ovviamente, una risposta sufficientemente ritardata è altrettanto negativa quanto una risposta non data.
  • Partition tolerance: il sistema continua a funzionare, nonostante il numero di messaggi ritardati dalla rete tra i nodi. Un sistema tollerante alle partizioni può sopportare qualsiasi problema di rete che non si traduce per forza in un guasto dell’intera rete. I record di dati sono sufficientemente replicati tra i nodi che garantiscono una tolleranza anche su interruzioni intermittenti. Quando si tratta di sistemi distribuiti moderni, il Partition Tolerance non è un’opzione, ma una necessità.

Lo schema seguente mostra i tre termini sopra riportati. Come si può vedere non si raggiungerà mai lo stato formato dall’unione di tutti e tre gli stati:

Teorema CAP – Coerenza, disponibilità, tolleranza delle partizioni

Continue Reading


Conoscere il Cloud computing

Nella sua forma più basilare, il cloud computing si riferisce all’uso on demand di risorse da parte di un cliente attraverso la rete Internet. Il cloud computing come idea racchiude una vasta gamma di servizi aziendali e di consumo.  Le risorse non vengono pienamente configurate e messe in opera dal fornitore appositamente per l’utente, ma gli sono assegnate, rapidamente e convenientemente, grazie a procedure automatizzate, a partire da un insieme di risorse condivise con altri utenti lasciando all’utente parte dell’onere della configurazione. Quando l’utente rilascia la risorsa, essa viene similmente riconfigurata nello stato iniziale e rimessa a disposizione nel pool condiviso delle risorse, con altrettanta velocità ed economia per il fornitore.

L’interazione con un servizio cloud viene generalmente eseguita tramite un browser Web o tramite riga di comando. Di solito non c’è alcun software da installare, nessun hardware da configurare e nessun centro dati da cui affittare lo spazio.

Google e Amazon sono stati i primi al mondo a fornire servizi di cloud computing, presto seguiti da Microsoft. Il portfolio di prodotti offerti dalle aziende cloud è maturato e si è evoluto nel tempo, così come la concorrenza. Aziende come IBM e Rackspace, tra le altre, si sono unite alla mischia. Il mondo del cloud computing include ora una miriade di aziende che offrono i servizi di qualsiasi tipo. Questo articolo si concentrerà su Google, Amazon e Microsoft poiché punto di riferimento di milioni di sviluppatori.

Continue Reading


Perchè usare GIT?

Git è un moderno sistema di controllo versione che offre le funzionalità di CVS o Subversion. Non solo. Git estende la nozione stessa di VCS (version control systems) grazie alla sua capacità di offrire quasi tutte le sue funzionalità per l’uso offline e senza un server centralizzato.

Git non è sinonimo di qualcosa… È nato da un’idea di Linus Torvalds nel 2005, il quale ha ammesso che Git può significare qualsiasi cosa, a seconda “del proprio umore”. È una combinazione casuale di tre lettere semplicemente pronunciabili e non effettivamente utilizzate da alcun comando UNIX comune. Il fatto che si tratti effettivamente di un errore di pronuncia della parola “get” può essere o non essere rilevante. La sua progettazione si ispira a strumenti analoghi come BitKeeper e Monotone. Oggi, gli sviluppatori di tutto il mondo stanno migrando a frotte verso questa piattaforma per le sue prestazioni efficienti, facilità e flessibilità di utilizzo, funzionalità offline e di collaborazione.  Continue Reading


SQL o NO-SQL?

Un filo conduttore della tecnologia è l’evoluzione – come del resto anche per gli esseri umani. Non è insolito, vedere le cose evolversi e adattarsi mentre il mondo intorno a loro cambia. Un esempio che conosciamo benissimo sono gli aggiornamenti nei software applicativi del nostro pc o del nostro smartphone… Questo adattamento significa che a volte appaiono nuove “varianti” nei nostri strumenti, per servire meglio determinati scopi specifici.

Il mondo del database non fa eccezione. Sin dai tempi di EF Codd e della sua introduzione del modello di dati relazionali, abbiamo visto i database, e le loro esigenze, evolversi da modelli puramente transazionali ACID (Atomic, Consistent, Isolated, Durable), richiedendo maggiore flessibilità, capacità di scalare (in sistemi distribuiti) e velocità (in termini di latenza e velocità effettiva).

Queste evoluzioni potrebbero essere state, in molti casi, le motivazioni per cui si è preferito, in passato, l’adozione dei sistemi RDBMS. Chi lo sa?

In questo articolo, faremo riferimento ai tradizionali database SQL – sistemi di database relazionali – come RDBMS. La loro controparte è la categoria di database NoSQL – che include molti sottotipi.

Continue Reading


Sql Injection

SQL Injection (SQLi) è un pratica informatica in cui un utente malintenzionato può eseguire istruzioni SQL maligne prendendo il controllo del database di un’applicazione web. SQL Injection può influenzare qualsiasi sito o applicazione Web che prevede l’utilizzo di un database basato su linguaggio SQL.

Questa è una tra le vulnerabilità più consolidate, più pervasive e più pericolose. Infatti, un utente malintenzionato, attraverso l’SQL Injection, può aggirare le procedure di autenticazione, verifica e approvazione di un’applicazione Web e recuperare in sostanza un intero database. SQL Injection può anche essere usato per inserire, alterare e cancellare record in un database, influenzando la correttezza delle informazioni. Nel peggiore dei casi, SQL Injection può fornire a un utente malintenzionato l’accesso non autorizzato a dati sensibili, tra cui informazioni sui clienti, dati identificativi, password e altri dati sensibili.

Continue Reading


Etica della persuasione

Il primo maggio 2018 termina di esistere Cambridge Analytica. Il motivo è stato trattato per diverse settimane dai media nazionali e internazionali e il mondo è rimasto scioccato nell’apprendere che Cambridge Analytica ha usato impropriamente i dati di un innocuo quiz pubblicato su Facebook, per indirizzare il pubblico della piattaforma con pubblicità persuasiva: l’intento era di convincere loro a votare in un certo modo. Solo una parte dei dati è stata ottenuta con il consenso al trattamento dei dati; i dati sono stati memorizzati dal creatore dell’app e poi venduti a Cambridge Analytica in violazione dei termini di utilizzo. Questo è stato uno dei tanti esempi esistenti in rete per cui si applicano tecniche di persuasione in modo ingannevole, combinato all’uso non etico delle informazioni personali…

Ma d’altra parte chi non conosce Amazon o eBay? Non vi è mai capitato di entrare in Amazon e trovare in prima pagina gli oggetti del desiderio? Magari avete fatto una ricerca di prodotti qualche settimana addietro: Amazon conserva i vostri interessi (lo fa in maniera del tutto lecita e vi informa di ciò) e crea un profilo personalizzato in base alle vostre scelte. Un po’ come fa Facebook e i suoi annunci sponsorizzati: a quanti è capitato di trovare nello stream della propria pagina, degli annunci sponsorizzati di proprio interesse?

Continue Reading


La sicurezza web dal punto di vista di uno sviluppatore

Esistono molte situazioni per cui bisogna preoccuparsi della propria sicurezza nel Web. Per citarne alcuni, ad esempio:

  • Sei un utente che giustamente è preoccupato per la sicurezza dei propri dati personali
  • Sei uno sviluppatore web interessato a rendere le proprie app web più sicure
  • Sei uno sviluppatore web che vuole saper rispondere alle eventuali domande sulla sicurezza web in un colloquio di lavoro…

L’obiettivo di questo post è quello di illustrare alcuni acronimi comuni di sicurezza Web in un modo facile da capire ma comunque accurato. Ma prima di farlo, fissiamo un paio di concetti fondamentali di sicurezza. Continue Reading


L’albero decisionale nel machine learning

In un articolo precedente abbiamo introdotto il concetto di Machine learning e come l’apprendimento statistico possa identificare automaticamente delle strutture nei dati e quindi effettuare predizioni con elevata accuratezza. In questo articolo, usando dei dati che riportano specifiche informazioni, creeremo un modello di machine learning.

Oltre ad essere un elemento così importante per la sopravvivenza degli esseri umani, gli alberi hanno anche ispirato un’ampia varietà di algoritmi nel Machine Learning sia per la classificazione che per la regressione.  Gli alberi decisionali, come suggerisce il nome, sono alberi di decisioni. Continue Reading


Utilizzando il sito, accetti l'utilizzo dei cookie da parte nostra. maggiori informazioni

Questo sito utilizza i cookie per fornire la migliore esperienza di navigazione possibile. Continuando a utilizzare questo sito senza modificare le impostazioni dei cookie o cliccando su "Accetta" permetti il loro utilizzo.

Chiudi