8 consigli e trucchi sql per ottimizzare e rendere performante un Database

Nella maggior parte di siti e blog, costruiti o meno su un CMS, i contenuti sono memorizzati in un database. Tutte le richieste-utente, pertanto, coinvolgono un DB che dovrà essere il più performante possibile al fine di velocizzare i tempi di risposta e fornire le informazioni richieste nel modo più veloce possibile.

Ci sono, senza dubbio, alcune accortezze e alcune modalità specifiche da mettere in pratica per realizzare quanto detto. Inoltre, sono diversi gli errori che si commettono sia nella progettazione del database e sia nelle varie interrogazioni fatte al db stesso tramite query.

In questo articolo volevo evidenziare alcune possibili strade da percorrere per realizzare un database performante con cui interagire in modo ottimale.

Progettazione

Si tratta del primo passo a tutti gli effetti : la progettazione e realizzazione del database. Questo caso non coinvolge applicazioni e siti che si appoggiano ad una piattaforma (come Wordpress, ad esempio) dove tutto il db è già costruito e strutturato.

Ma per tutti gli altri casi in cui occorre progettare da zero la struttura dati, vi sono regole ben precise da seguire e, soprattutto errori evidenti e deleteri da non commettere.

A tal riguardo, vi consiglio di leggere questo articolo che riguarda proprio come approcciare il design di un database.

Conoscere in dettaglio la Query

Per ottimizzare una specifica query, è fondamentale sapere in dettaglio cosa ci restituirà quella query al fine di discernere il superfluo dall’utile.

Utilizzando lo statement EXPLAIN otterrete molte utili informazioni sulla query eseguita. Ecco un esempio di codice sql :

EXPLAIN SELECT * FROM ref_table,other_table WHERE  ref_table.key_column=other_table.column;

Per maggiori info su come utilizzare Explain, leggete la guida ufficiale mysql al riguardo.

Query e Cache

Come sapete, ogni richiesta effettuata al db per ottenere dati si risolve in una richiesta di risorse al server che lo ospita. Questo significa che un sistema di cache queries, laddove possibile, porta effettivamente vantaggi in termini di prestazione. Vediamo tre possibili scelte :

  • AdoDB : sta per Active Data Objects DataBase ed è una libreria che fornisce un’unica API per interfacciarsi ad uno dei DBMS supportati (MySQL, PostgreSQL, Interbase, Firebird, Informix, Oracle, MS SQL, Foxpro, Access, ADO, Sybase, FrontBase, DB2, SAP DB, SQLite, Netezza, LDAP. AdoDB fornisce, tra le altre cose, anche un potente caching system.
  • Memcached : Memcached annovera un sistema di caching utilizzato laddove si interagisce con database molto carichi di dati per alleggerirne il compito
  • CSQL Cache : è una infrastruttura open-source di data caching. Da quello che si legge al riguardo, sembra davvero molto affidabile.

Select Mirate

Si tratta, in pratica, di un errore comune, ma facilmente risolvibile. Una select del tipo :

SELECT * FROM wp_posts;

effettuata su una tabella wordpress (quella dei post, si capisce) ha senso solo se davvero vi occorrono tutti i dati di quella tabella. Ma se così non fosse, occorre filtrare a monte evitando di sprecare risorse inutili :

SELECT title, excerpt, author FROM wp_posts;

Questa potrebbe essere la select corretta qualora vi occorressero titolo,excerpt e autore dei post.

Usare LIMIT

Spesso, quello di cui abbiamo bisogno sono solo un numero limitato di records prelevati dal nostro database. Mi vengono in mente tutte quelle situazioni su Wordpress in cui, ad esempio, vogliamo solo mostrare ad esempio 10 post per pagina e simili. In tal caso, quindi, non ha senso estrarre tutti i record, ma utilizzando il parametro LIMIT possiamo selezionare solo il numero di records desiderato :

SELECT title, excerpt, author FROM wp_posts LIMIT 10;

Usare JOIN al posto delle sottoqueries

Troppo spesso si nota un abuso,da parte di alcuni programmatori, di subqueries. Potendo, l’ideale sarebbe non andarsi a complicare la vita con questo metodo, ma ricorrere al JOIN con cui ottenere, in modo più pulito, gli stessi identici risultati :

SELECT a.id,
    (SELECT MAX(created)
    FROM posts
    WHERE author_id = a.id)
AS latest_post FROM authors a

Questa select, sfruttado il JOIN, diventerebbe :

SELECT a.id, MAX(p.created) AS latest_post
FROM authors a
INNER JOIN  posts p
ON (a.id = p.author_id)
GROUP BY a.id

Usare UNION al posto di OR

Lo statement UNION consente di combinare il result sets di 2 o più select queries. A differenza dell’OR, permette esecuzioni nettamente più veloci.

SELECT * FROM a, b WHERE a.p = b.q or a.x = b.y;

diventa semplicemente :

SELECT * FROM a, b WHERE a.p = b.q
UNION
SELECT * FROM a, b WHERE a.x =  b.y

Usare Indici

Gli indici di un database sono simili a quelli di una libreria perché consentono di trovare le informazioni richieste in modo più rapido e, quindi, più performante.
Un indice può esser creato per una singola colonna o su più colonne in una tabella. Eccovi un esempio banale in cui si crea l’indice idModello sulla colonna Modello della Tabella Prodotto.

CREATE INDEX idModello ON Prodotto (Modello);

Fonte : Catswhocode

15 Blog da seguire per diventare un ottimo blogger

blogging 15 Blog da seguire per diventare un ottimo blogger

Tra le varie letture di cui ‘mi nutro’ ogni giorno, non ci sono soltanto blog tecnici o simili, ma anche articoli che trattano in modo specifico di blogging. Nessun blogger, infatti, può prescindere dal mondo di cui fa parte nè può tralasciare un aspetto fondamentale : come fare blogging.

In sostanza, nel microcosmo del blogging rientrano molteplici aspetti, ma è bene leggere, documentarsi e non tralasciare nulla. Sinceramente non credo molto ai grandi blogger (soprattutto americani) che sbandierano articoli del tipo ‘Come raggiungere 10000 utenti unici in un mese’ oppure ‘Come guadagnare 1000 dollari al giorno con un blog’ e simili. A qualcuno sarà pure successo, qualcuno avrà pure svoltato grazie a delle capacità fuori dal comune, ma diffidate del fatto che sia tutto facile, anzi.

Il blog è passione, in primis. Chi pensa di vivere di solo blog, a mio avviso inizia male l’avventura. In ogni caso, in questo post volevo consigliarvi alcuni blog davvero ben fatti e curati che trattano argomenti legati al blogging scendendo in profondità. Nulla di superficiale, quindi, come la massa, ma consigli e raccomandazioni molto importanti di cui far tesoro per migliorare stile di scrittura, modo di rapportarsi ai lettori, approccio al blogging,strategie sociali, produttività, affiliazioni, SEO  ecc

Alcuni, forse, li avrete già nel vostro feed reader, ma anche se ne scoprite due o tre, son sicuro che resteranno pur sempre punti fermi del vostro mondo blogging

Resta sempre valido l’invito ad aggiungerne altri non citati in questo elenco. Grazie a cuarts per l’immagine.

Virtual Labs : testare online Windows7 senza installarlo

Non segnalo spesso articoli che scrivo per altri blog, ma ogni tanto qualche cosa di interessante mi piace condividerlo.

E’ il caso del post scritto una settimana fà dove presento Virtual Labs, cioè un modo davvero interessante per poter  testare online Seven, il nuovo sistema operativo targato Microsoft, e soprattutto per avvicinarvi ad esso esplorandone le funzionalità e le sue potenzialità.

Non mi dilungo e vi lascio all’articolo.

Le regole CSS – I Selettori

Assodato che i CSS permettono di determinare il modo in cui il browser rappresenta i vari elementi che costituiscono una pagina html, scendiamo nel dettaglio dei singoli elementi che stanno alla base di questo linguaggio e delle sue regole. Partiamo con i selettori.

Regola Css Le regole CSS – I Selettori

L’immagine qui sopra rappresenta la struttura di una semplice dichiarazione di regola css. Ho voluto inserire una dichiarazione completa pur soffermandomi, in questo post, solo sul selettore.

Sostanzialmente, una regola è costituita da uno o più selettori separati una virgola e da un insieme di dichiarazioni racchiuse fra parentesi graffe.

Il selettore serve ad identificare precisamente l’oggetto a cui assegnare l’aspetto desiderato. Tutte le dichiarazioni tra parentesi graffe concorrono a definire l’aspetto che il browser dovrà assegnare all’elemento.

Tutte le dichiarazioni sono separete da (;) e sono costituite da due elementi separati da (:). Il primo elemento è la proprietà (background,in questo caso) mentre il secondo è il valore (#FFF) o l’insieme di valori da assegnare alla proprietà.

Come detto, per facilitare il riutilizzo di regole comuni ed ottimizzare spazio e tempo, è possibile separare i selettori con una virgola :

p,h4,h6…{ }

I selettori possono essere di tre tipi :

  • selettori di tipo
  • classi
  • identificatori

Selettori di tipo

Sono i più generici e indicano che la regola deve essere applicata a tutti gli elementi del tipo indicato. Vediamo alcuni esempi di selettori di tipo

p {..}

a {…}

div {..}

strong {..}

* {..}

Il nome del selettore si riferisce, come avrete intuito, al nome del tag cui il selettore si riferisce. Va detto che sono case insensitive, nel senso che DIV e div si equivalgono. Il selettore * è particolare ed identifica qualsiasi tipo di elemento.

Classi

Le classi servono a definire un insieme di oggetti omogenei e per associare un elemento ad una classe è sufficiente specificarne il nome. Ad esempio

<div class=”classe1”>

………..

………..

<div class=”classe2”>

Il selettore css corrispondente si scrive con il nome della classe preceduto dal (.). Continuando l’esempio precedente :

. classe1 {…}

. classe2 {…}

Una cosa interessante è la possibilità di combinare più classi fra loro. Vediamo come.

<div class=”classe1”>

<div class=”classe2”>

<div class=”classe1 classe2”>

mentre il css corrispondente sarà :

. classe1 {…}

. classe2 {…}

.classe1.classe2 {…}

Come si capisce, la regola associata a .classe1 sarà applicata a quegli elementi che annoverano la stringa classe1 (il primo e il terzo div dell’esempio) mentre la regola associata a .classe1.classe2 sarà applicata a quegli elementi che annoverano la stringa classe1 classe2 (il terzo div).

Discorso analogo nel significato quando si applica una classe ad uno specifico tipo :

<p class=”classe1”>

<h1 class=”classe1”>

con il css :

.classe1 {…}

p.classe1 {…}

h1.classe1 {…}

Identificatori

Gli identificatori servono a selezionare un unico elemento nella pagina. Vediamo un esempio.

<div id=”primo”>

…………

…………

…………

<div id=”secondo”>

Il corrispondente selettore css avrà il nome dell’identificatore preceduto dal simbolo #

#primo {…}

#secondo {…}

Va ricordato che, all’interno di un documento html, non possono esistere due elementi con lo stesso valore dell’attributo id.

Logicamente è possibile combinare i vari selettori fra di loro :

<div id=”primo””>

<div id=”primo”>

con un css del tipo :

div#primo {…}

div#primo.classe1 {…}

Per dovere di cronaca, anche se non molto utilizzati (non supportati da tutti i browser), esistono anche i selettori di attributo. Tali selettori permettono di individuare i valori degli attributi e stilizzare l’elemento stesso. Vediamo un esempio :

  • elm[att] : verifica se l’attributo att dell’elemento elm è stato impostato senza dar importanza al valore assunto
  • elm[att=val] : verifica se l’attributo att dell’elemento elm assume valore val
  • ……….

Questa voleva essere solo una miniguida di base. Per ulteriori approfondimenti vi consiglio questo link.

La qualità di scrittura

vizu blog data La qualità di scrittura

Un sondaggio di non molto tempo fà effettuato da Vizu, ha sancito una verità già di per se sacrosanta. La qualità della scrittura di un blog è il fattore che pesa di più nel giudizio finale di un visitatore.

Non che i dubbi al riguardo fossero molti, ma quando ho dato un’occhiata a questi dati mi son convinto di alcune cose.

Andiamo con ordine.

Il Sondaggio

Il sondaggio si focalizza su tre micro-sondaggi basilari : il fattore principale che indica la qualità di un blog, quello che indica la sua credibilità e in base a quale fattore un utente sceglie il blog da leggere quotidianamente.

Per ognuno dei tre stravince un fattore : la qualità di scrittura. Nel primo caso, la qualità del blog è sinonimo stretto di qualità dei suoi articoli, mentre solo dopo viene la frequenza di aggiornamento del blog.

Questo sta a significare che quanto sostengo da tempo non è solo una mia idea e convinzione : più qualità e meno quantità (a parità di tempo). Insomma, se non avete molto tempo da dedicare al vostro blog, è più proficuo scrivere articoli di qualità e di interesse, che scriverne molti, ma con poca attenzione e solo per dovere.  E’ chiaro che il vostro abbonato medio vorrebbe qualche cosa di nuovo ogni giorno, ma preferisce, ve lo assicuro, qualcosa di interessante,originale e stimolante piuttosto che il classico articolo ‘vuoto’ riempi-pagina scritto senza voglia alcuna.

Anche quando si tratta di dover scegliere quali blog seguire quotidianamente, chi ha risposto al sondaggio non ha avuto molti dubbi al riguardo anche se, va detto, in tal caso il focus su cui si concentra il blog ha avuto un’alta percentuale. E’ logico che l’argomento trattato deve sposare gli interessi dell’utente, ma ancora una volta resta subordinato a come vengono scritti gli articoli.

Molto più netto e marcato il divario del terzo sondaggio che si focalizza sulla credibilità di un blog. Ancora una volta non c’è dubbio per il gradino più alto del podio, mentre riveste, comunque, un ruolo importante la reputazione dell’autore. Credo sia giusto associare ad un blog la parola ‘affidabilità’ e ‘credibilità’ anche in relazione al suo autore, anche perché la reputazione di quest’ultimo va decisamente a braccetto con quello che scrive e pubblica. Uno è la conseguenza dell’altro, in sostanza.

Tra gli altri fattori votati nei 3 micro-sondaggi mi perplime il fatto che poco spazio abbia avuto il fattore Design. Resta, infatti, confinato con percentuali abbastanza modeste (tranne che per il 29,8% del primo sondaggio) e questo mi fa pensare che, dopo un primo impatto importante che il visitatore ha con un blog, la sostanza è altrove.

La lezione che si evince da tutto questo è che, qualità di scrittura a parte, nulla si può tralasciare e tutto concorre a far sì che un blog abbia successo e sia seguito costantemente.

6 ottimi servizi gratuiti per creare charts, grafici e diagrammi online

Vi sarete imbattuti in situazioni in cui avevate bisogno di realizzare un grafico o chart o un diagramma per qualsiasi motivo. Non per forza, infatti, solo le aziende hanno necessità di creare grafici e diagrammi per sintetizzare il loro status, ma, ad esempio, a me è capitato di voler presentare graficamente il traffico generato su un sito web.

Anche se stiamo parlando di ottime ed efficaci modalità per rappresentare le relazioni fra una o più entità, non sempre è facile trovare il software adatto per quello che si vuol realizzare. E se invece di un software provaste ad utilizzare alcuni utilissimi ed affidabili servizi-web gratuiti per creare al volo splendidi diagrammi o grafici senza installare nulla?

Io alcuni spunti interessanti ve li fornisco….
Continua a leggere »

Wordpress : Come disabilitare i commenti sui vecchi articoli via php

Se ci fate caso, molti blog disabilitano commenti,pingback e trackback sui post più vecchi di una certa data. Di solito è fatto perché tali post (magari quelli più vecchi di 4 o 5 mesi) non sono più attuali e attirerebbero solo commenti spammosi. Non sono molto convinto di questa teoria, ma, in ogni caso, senza [...]

25 ottimi tutorials Joomla per la versione 1.5

Sebbene abbia abbandonato Joomla da tempo, o meglio, resisto con il mio SerioMaNonTroppo alla versione 1.0.12 stabile e non aggiornata, non nego che si tratti effettivamente di un CMS coi fiocchi.