<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DREAMSNET.IT - IT Solutions. Realizzazioni Siti Web, Siti Internet, Software gestionali, consulenza sistemistica Linux, Civitanova Marche &#187; Ottimizzazione database</title>
	<atom:link href="http://www.dreamsnet.it/tag/ottimizzazione-database/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dreamsnet.it</link>
	<description>Siti web e consulenze sistemistiche e software a civitanova marche.</description>
	<lastBuildDate>Thu, 15 Sep 2011 14:29:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Tuning e ottimizzazione server web linux. Quando il gioco si fa duro &#8230;</title>
		<link>http://www.dreamsnet.it/2011/04/tuning-e-ottimizzazione-server-web-linux-quando-il-gioco-si-fa-duro/</link>
		<comments>http://www.dreamsnet.it/2011/04/tuning-e-ottimizzazione-server-web-linux-quando-il-gioco-si-fa-duro/#comments</comments>
		<pubDate>Thu, 14 Apr 2011 01:04:21 +0000</pubDate>
		<dc:creator>Marco Marcoaldi</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[Sistemistica]]></category>
		<category><![CDATA[consulenza sistemistica]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[Ottimizzazione database]]></category>
		<category><![CDATA[ottimizzazione webserver]]></category>
		<category><![CDATA[realizzazione server web]]></category>
		<category><![CDATA[tuning mysql]]></category>

		<guid isPermaLink="false">http://www.dreamsnet.it/?p=583</guid>
		<description><![CDATA[&#8220;Quando il gioco si fa duro &#8230; i duri cominciano giocare&#8221; esclamava il buon John Belushi in Animal House. Questa regola era validissima nei tempi passati in cui l&#8217;informatica era un terreno poco fertile, l&#8217;hardware aveva dei prezzi proibitivi e si era disposti a passare intere nottate in bianco per risparmiare 50k di RAM ottimizzando [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-585" title="idea" src="http://www.dreamsnet.it/wp-content/uploads/idea1-150x150.jpg" alt="" width="150" height="150" />&#8220;<em>Quando il gioco si fa duro &#8230; i duri cominciano giocare</em>&#8221; esclamava il buon <strong>John Belushi</strong> in Animal House.<br />
Questa regola era validissima nei tempi passati in cui l&#8217;informatica era un terreno poco fertile, l&#8217;hardware aveva dei prezzi proibitivi e si era disposti a passare intere nottate in bianco per risparmiare 50k di RAM ottimizzando le routine più complesse direttamente in assembly.</p>
<p>Oggi il panorama è cambiato, l&#8217;hardware ha costi irrisori se paragonati a quelli dell&#8217;epoca e non c&#8217;è più tempo, capacità e voglia di ottimizzare : quando qualcosa non funziona bene si passa semplicemente ad hardware più potente. Quando la banda non basta più si compra più banda.</p>
<p><strong>La convinzione ovvero che basti mettere mano al portafogli per risolvere tutti i problemi informatici del momento</strong>.</p>
<p>Questo è vero in alcuni casi ma rimane sempre una soluzione errata ed eticamente scorretta quando magari con un&#8217;ora di intelligente ottimizzazione si può incrementare le performance di oltre il 400%.<br />
Il concetto è valido in particolar modo per i Webserver che sono spesso il risultato di sottocomponenti distinte (DBMS, Linguaggio lato server, Server web) su cui gira un sito internet che elabora dati e presenta contenuti multimediali al navigante.</p>
<p><strong>Morale della favola</strong> : aspettate prima di montare un altro processore e quadruplicare la RAM, provate invece ad ottizzare le singole componenti software per rendere il sito web snello e scattante e in grado di sopravvivvere ad un traffico di centinaia di visite al secondo senza crashare.</p>
<p>Un buon modo di iniziare è sapere su cosa metter mano, ovvero ciò che il mercato offre nell&#8217;ambito di server LAMP, cosa installare e cosa ottimizzare per avere i miglior risultati possibili.</p>
<p>Innanzitutto vale sempre il metodo top-down, ovvero <strong>risolvere il problema scomponendo il problema in più sottoproblemi</strong>, ricordando in questo caso che l&#8217;inefficienza di ogni sottocomponente si ripercuoterà in modo incisivo sull&#8217;efficienza o meno dell&#8217;intero server. L&#8217;imperativo è dunque : <strong>evitare i colli di bottiglia.</strong></p>
<p>Se ad esempio facciamo un uso massiccio di PHP, molti accessi concorrenti al Database con query complesse, utilizzo di CMS del calibro di Drupal, Joomla o WordPress e ci aspettiamo di riuscire a soddisfare una mole di richieste non indifferente bisogna seguire scrupolosamente i seguenti passi :</p>
<p><strong><img class="alignleft size-thumbnail wp-image-587" title="server" src="http://www.dreamsnet.it/wp-content/uploads/server-150x150.jpg" alt="" width="150" height="150" />Scelta di un Hardware decente</strong> : ormai un server di fascia alta ce lo si può permettere per meno di 100 euro al mese. Configurazioni interessanti basate su intel i7 o addirittura Xeon, quad o six core, 12 giga o più in triple channel e dischi raid sata3.<br />
Se si vuol essere performanti bisogna sempre fare una scelta a livello hardware adatta alle esigenze. Dischi SSD in RAID 1 sicuramente aumentano le performance diminuendo la latenza disco.<br />
Se invece siamo nella condizione di avere un &#8220;macinino&#8221; e il nostro sito diventa sempre più popolare e non abbiamo voglia di migrare tutto su hardware più potente &#8230; ottimizziamo.<br />
Qualunque siano i casi ottimizziamo a prescindere.</p>
<p><strong><img class="alignleft size-thumbnail wp-image-588" title="nginx" src="http://www.dreamsnet.it/wp-content/uploads/nginx-150x150.jpg" alt="" width="150" height="150" />Web server</strong> : è ormai uno standard, lo danno installato di default con la nostra distribuzione Linux e ce lo teniamo come se fosse il miglior webserver del mondo. <strong>Apache</strong> esatto. Ottimo webserver facilmente ottimizzabile variando i parametri in httpd.conf.<br />
Oppure possiamo optare per il meno conosciuto <strong>NGINX</strong>. Nginx si sta configurando sempre più chiaramente come una valida alternativa ad Apache: sembra infatti che, benchmark alla mano, <strong>Nginx risulti molto più leggero e performante del famoso rivale che spesso e volentieri soffre di memory leak i quali possono causare un consumo di memoria piuttosto “imbarazzante”</strong>. Se poi Nginx viene utilizzato in abbinamento con PHP FPM (FastCGI Process Manager), una versione di PHP ottimizzata per siti a traffico elevato, allora la differenza con la classica configurazione Apache+PHP diventa sensibile!</p>
<p><strong><img class="alignleft size-thumbnail wp-image-590" title="database3536174" src="http://www.dreamsnet.it/wp-content/uploads/database3536174-150x150.png" alt="" width="150" height="150" />Database</strong> : normalmente ci si appoggia a <strong>MySQL</strong> come DBMS standard, più raramente a PostgreSQL. Database relazionali destinati alla realizzazione di progetti molto ambiziosi grazie a feature come integrità referenziale, stored procedure, stored function, viste, triggers, transazioni ACID.<br />
Qualora il vostro sito non faccia uso di queste funzionalità optate per un DBMS senza queste funzioni ma più veloce e performante come ad esempio <strong>Drizzle</strong>.<br />
Se siete pigri per passare a Drizzle e l&#8217;applicazione web (o sito) non ha una business logic complessa e non avete bisogno dell&#8217;integrità referenziale e tutte le altre belle cosucce elencate prima <strong>limitatevi a utilizzare tabelle MyISAM di MySQL piuttosto che le più complete ma meno performanti InnoDB</strong>.<br />
A livello di progettazione Database vale la pena ricordare che una progettazione ad-hoc è fondamentale per una buona performance dell&#8217;intero progetto. Dunque ottimizzare i tipi di dato in uso nella creazione del database, le giuste tabelle, eliminare le ridondanze, fare un buon uso di indici, partizionare le tabelle, ma sopratutto <strong>ottimizzare le query SQL</strong>. A volte la performance di una query ottimizzata può essere di oltre il 1000 % (mille avete letto bene).<br />
Una meticolosa analisi in ambito di progettazione a partire da uno schema E/R corretto è d&#8217;obbligo.<br />
Vale la pena ricordare che un corretto tuning delle variabili d&#8217;ambiente in my.cnf (il file di configurazione di MySQL) può portare a vantaggi tangibili (spesso addirittura notevoli) sopratutto all&#8217;aumentare delle richieste concorrenti.</p>
<p><strong><img class="alignleft size-thumbnail wp-image-591" title="cache" src="http://www.dreamsnet.it/wp-content/uploads/cache-150x150.gif" alt="" width="150" height="150" />Script server side</strong> : diamo per scontato che programmiate in PHP e che dunque gli script siano scritti bene, o se magari non l&#8217;abbiate scritti voi che comunque siano performanti, o che comunque performanti o non performanti che siano non avete la possibilità o la capacità per modificarli.<br />
E&#8217; bene sapere che esistono degli opcode cacher per PHP come <strong>APC</strong> o <strong>eAccelerator</strong> che possono far risparmiare importanti risorse nella fase di fetching del codice php. Sarebbe complesso e decisamente lungo da spiegare nel dettaglio ma vi basti sapere che in media con l&#8217;adozione di tali strumenti (gratis oltretutto) le prestazioni aumentano da un 50% fino ad oltre il 400%.</p>
<p>Qualora intendiate dunque ottimizzare le performance del vostro sito web o vogliate consulenza per la realizzazione di siti web ad alto traffico, contattateci. Siamo in grado di metter mano ad ogni aspetto del vostro webserver e aumentare sensibilmente l&#8217;efficienza del vostro server benchmark alla mano.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dreamsnet.it/2011/04/tuning-e-ottimizzazione-server-web-linux-quando-il-gioco-si-fa-duro/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Progettazione, ottimizzazione e sviluppo basi di dati SQL</title>
		<link>http://www.dreamsnet.it/progettazione-ottimizzazione-sviluppo-database-sql/</link>
		<comments>http://www.dreamsnet.it/progettazione-ottimizzazione-sviluppo-database-sql/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 00:14:53 +0000</pubDate>
		<dc:creator>Marco Marcoaldi</dc:creator>
				<category><![CDATA[Senza categoria]]></category>
		<category><![CDATA[MySQL a Civitanova Marche]]></category>
		<category><![CDATA[MySQL Macerata]]></category>
		<category><![CDATA[Oracle DB]]></category>
		<category><![CDATA[Ottimizzazione database]]></category>
		<category><![CDATA[Postgres]]></category>
		<category><![CDATA[Postgresql]]></category>
		<category><![CDATA[Progettazione e sviluppo SQL]]></category>
		<category><![CDATA[software personalizzato]]></category>
		<category><![CDATA[sviluppo software gestionale]]></category>

		<guid isPermaLink="false">http://www.dreamsnet.it/?page_id=168</guid>
		<description><![CDATA[Progettiamo e sviluppiamo basi di dati sui DBMS attualmente più in voga al momento. Ovvero : MySQL (con InnoDB), Microsoft SQL Server, PostgreSQL e Oracle DB. Qualora abbiate in azienda la necessità di gestire una piccola o grossa mole di informazioni (pensiamo ad un ospedale, una biblioteca, assicurazioni, un&#8217;istituto scolastico ad esempio, o altro) siamo [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-250" title="software_developer" src="http://www.dreamsnet.it/wp-content/uploads/software_developer-150x150.jpg" alt="" width="150" height="150" />Progettiamo e sviluppiamo basi di dati sui <strong>DBMS</strong> attualmente più in voga al momento.</p>
<p>Ovvero : <strong>MySQL (con InnoDB), Microsoft SQL Server, PostgreSQL e Oracle DB</strong>.</p>
<p>Qualora abbiate in azienda la necessità di gestire una piccola o grossa mole di informazioni (pensiamo ad un ospedale, una biblioteca, assicurazioni, un&#8217;istituto scolastico ad esempio, o altro) siamo in grado di progettare e sviluppare una base di dati a partire dall&#8217;analisi delle vostre necessità, la creazione di uno schema Entità / Relazioni e le relative procedure di  manipolazione dati.</p>
<p>Qualora la base di dati debba essere progettata da zero, <strong>preferiamo adottare un approccio open source in relazione alla dimensione della base di dati  e relativi limiti che ci portano a scegliere tra MySQL Server o Postgres</strong>.</p>
<p>Qualora il cliente abbia preferenze invece, o abbia già un database server in azienda di tipo <strong>MS SQL Server</strong> o <strong>Oracle DB</strong> possiamo fornire i nostri servizi utilizzando questi ultimi.</p>
<p>La progettazione avviene tenendo conto di due fattori : Velocità e integrità dei dati.</p>
<p>Il primo obiettivo si raggiunge studiando e progettando la base di dati effettuando una normalizzazione ottimale ed eliminando informazioni ridondate e dunque superflue.</p>
<p><img class="alignright size-thumbnail wp-image-251" title="oracle-11g-database-standard-edition-one-named-user-license" src="http://www.dreamsnet.it/wp-content/uploads/oracle-11g-database-standard-edition-one-named-user-license-150x150.jpg" alt="" width="150" height="150" />Una scelta ragionata delle corrette chiavi primarie, dei tipi di dato nonchè delle chiavi esterne sono fondamentali.</p>
<p>Inoltre in fase di implementazione un&#8217;accurata sintassi delle query SQL, nonchè l&#8217;ottimizzazione degli indici aiuta sicuramente a raggiungere prestazioni eccellenti.</p>
<p>Il secondo obiettivo si raggiunge utilizzando le proprietà <strong>A.C.I.D.</strong> (<em>atomicity, consistency, isolation, durability</em>) dei moderni DBMS sopracitati.</p>
<p>In particolar modo tramite l&#8217;implementazione a livello di <strong>Stored Procedure</strong> di <strong>Transazioni</strong> che <strong>garantiscono l&#8217;integrità dei dati</strong> in caso di crash, guasti hardware, disconnessioni di rete e quant&#8217;altro di problematico (ma non inaspettato) possa succedere.</p>
<p><img class="aligncenter size-full wp-image-169" title="DBMS_SQL" src="http://www.dreamsnet.it/wp-content/uploads/DBMS_SQL.jpg" alt="" width="592" height="200" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dreamsnet.it/progettazione-ottimizzazione-sviluppo-database-sql/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

