<?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>Un bout de DBA &#187; Stockage</title>
	<atom:link href="http://www.noidea.ca/tag/stockage/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.noidea.ca</link>
	<description>MySQL, En long et en large</description>
	<lastBuildDate>Tue, 09 Feb 2010 13:54:47 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Mes notes: Les types de données temporelles</title>
		<link>http://www.noidea.ca/2009/04/27/mes-notes-les-types-de-donnees-temporelles/</link>
		<comments>http://www.noidea.ca/2009/04/27/mes-notes-les-types-de-donnees-temporelles/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 00:55:26 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[CMDEV]]></category>
		<category><![CDATA[Stockage]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=183</guid>
		<description><![CDATA[


Type
Bytes
Range


DATE
3
1000-01-01 à   9999-12-31


TIME
3
-838:59:59 à 838:59:59


DATETIME
8
1000-01-01 00:00:00   à 9999-12-31 23:59:59


TIMESTAMP
4
1970-01-01 00:00:00   à mi-2037


YEAR
1
1901 à   2155 pour YEAR(4) et 1970 à 2069 pour YEAR(2)



(Des valeurs peuvent excéder le range, sans garantie sur le résultat)
Chaque type peut avoir 0 comme valeur pour représenter une valeur insérée illégale. Le format par [...]]]></description>
			<content:encoded><![CDATA[<table border="1" cellpadding="0">
<tbody>
<tr>
<td><strong>Type</strong></td>
<td><strong>Bytes</strong></td>
<td><strong>Range</strong></td>
</tr>
<tr>
<td>DATE</td>
<td>3</td>
<td><code>1000-01-01 à   9999-12-31</code></td>
</tr>
<tr>
<td>TIME</td>
<td>3</td>
<td>-838:59:59 à 838:59:59</td>
</tr>
<tr>
<td>DATETIME</td>
<td>8</td>
<td>1000-01-01 00:00:00   à 9999-12-31 23:59:59</td>
</tr>
<tr>
<td>TIMESTAMP</td>
<td>4</td>
<td>1970-01-01 00:00:00   à mi-2037</td>
</tr>
<tr>
<td>YEAR</td>
<td>1</td>
<td>1901 à   2155 pour YEAR(4) et 1970 à 2069 pour YEAR(2)</td>
</tr>
</tbody>
</table>
<p>(Des valeurs peuvent excéder le range, sans garantie sur le résultat)</p>
<p>Chaque type peut avoir 0 comme valeur pour représenter une valeur insérée illégale. Le format par défaut est YYYY-MM-DD. Cependant, le format YYYY-M-D (2009-1-1) est supporté. De plus, le séparateur &#8211; n&#8217;est pas obligatoire, on peut également utiliser / (2009/01/01)</p>
<p>L&#8217;affichage des années peut se faire avec 2 ou 4 chiffres. Lorsque représenté avec 2 chiffres, 70 à 99 représente 1970 à 1999 alors que 00 à 69 représente 2000 à 2069.</p>
<p>Pour que les timestamps s&#8217;updatent automatiquement à l&#8217;insertion ou l&#8217;update, il faut spécifier l&#8217;option DEFAULT CURRENT_TIMESTAMP ou ON UPDATE CURRENT_TIMESTAMP. Cependant, pour conserver une compatibilité avec MySQL 4.1, ils sont considérés par défaut sur la première colonne timestamp.</p>
<p>Les 2 attributs peuvent être setté sur le même champ, mais il est impossible de mettre 1 différent attribut sur 2 champs. Par contre, la compatibilité avec MySQL 4.1 permet de tricher en ne spécifiant pas le DEFAULT CURRENT_TIMESTAMP sur la première colonne, et le ON UPDATE.. sur une 2ieme.</p>
<p>Si on ne veut pas qu&#8217;une colonne timestamp s&#8217;update automatiquement, il faut explicitement mettre sa par défaut à NULL.</p>
<p>Pour modifier le timezone, il faut changer la variable système : SET global time_zone = &#8216;+05 :00&#8242;; Par défaut, c&#8217;est le timezone du système. Si un client modifie le timezone, la même valeur sera différente d&#8217;un client à l&#8217;autre. Ce changement modifie aussi la valeur retournée par NOW().</p>
<p>SELECT CONVERT_TZ(&#8217;2005-01-27 13:30 :00&#8242;,&#8217;+01:00&#8242;,&#8217;+03:00);</p>
<p>2005-01-27 15:30 :00</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/04/27/mes-notes-les-types-de-donnees-temporelles/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Mes notes: Les types de données numériques</title>
		<link>http://www.noidea.ca/2009/04/26/mes-notes-les-types-de-donnees-numeriques/</link>
		<comments>http://www.noidea.ca/2009/04/26/mes-notes-les-types-de-donnees-numeriques/#comments</comments>
		<pubDate>Sun, 26 Apr 2009 18:41:25 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[CMDEV]]></category>
		<category><![CDATA[Stockage]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=160</guid>
		<description><![CDATA[Les integers, floating-point storent des valeurs approximatives, les fixed-point storent des valeurs exactes et le type BIT.
Integer



Type
Bytes
Minimum Value
Maximum Value




(Signed/Unsigned)
(Signed/Unsigned)


TINYINT
1
-128
127




0
255


SMALLINT
2
-32768
32767




0
65535


MEDIUMINT
3
-8388608
8388607




0
16777215


INT
4
-2147483648
2147483647




0
4294967295


BIGINT
8
-9223372036854775808
9223372036854775807




0
18446744073709551615



Quand on spécifie une &#8220;longueur&#8221; de champs:
Les nombres plus petits que la longueur sont paddés d&#8217;espace jusqu&#8217;à la longueur. Les longueurs par défaut de MySQL incluent le signe négatif, donc un smallint est 6 (et non 5)
Floatint-Point
Inclus [...]]]></description>
			<content:encoded><![CDATA[<p>Les integers, floating-point storent des valeurs approximatives, les fixed-point storent des valeurs exactes et le type BIT.</p>
<p><strong>Integer</strong></p>
<table border="1" cellpadding="0">
<tbody>
<tr>
<td><strong>Type</strong></td>
<td><strong>Bytes</strong></td>
<td><strong>Minimum Value</strong></td>
<td><strong>Maximum Value</strong></td>
</tr>
<tr>
<td></td>
<td></td>
<td><strong>(Signed/Unsigned)</strong></td>
<td><strong>(Signed/Unsigned)</strong></td>
</tr>
<tr>
<td><a title="10.2. Numeric Types" href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html"><code>TINYINT</code></a></td>
<td>1</td>
<td><code>-128</code></td>
<td><code>127</code></td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>0</code></td>
<td><code>255</code></td>
</tr>
<tr>
<td><a title="10.2. Numeric Types" href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html"><code>SMALLINT</code></a></td>
<td>2</td>
<td><code>-32768</code></td>
<td><code>32767</code></td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>0</code></td>
<td><code>65535</code></td>
</tr>
<tr>
<td><a title="10.2. Numeric Types" href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html"><code>MEDIUMINT</code></a></td>
<td>3</td>
<td><code>-8388608</code></td>
<td><code>8388607</code></td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>0</code></td>
<td><code>16777215</code></td>
</tr>
<tr>
<td><a title="10.2. Numeric Types" href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html"><code>INT</code></a></td>
<td>4</td>
<td><code>-2147483648</code></td>
<td><code>2147483647</code></td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>0</code></td>
<td><code>4294967295</code></td>
</tr>
<tr>
<td><a title="10.2. Numeric Types" href="http://dev.mysql.com/doc/refman/5.0/en/numeric-types.html"><code>BIGINT</code></a></td>
<td>8</td>
<td><code>-9223372036854775808</code></td>
<td><code>9223372036854775807</code></td>
</tr>
<tr>
<td></td>
<td></td>
<td><code>0</code></td>
<td><code>18446744073709551615</code></td>
</tr>
</tbody>
</table>
<p>Quand on spécifie une &#8220;longueur&#8221; de champs:<br />
Les nombres plus petits que la longueur sont paddés d&#8217;espace jusqu&#8217;à la longueur. Les longueurs par défaut de MySQL incluent le signe négatif, donc un smallint est 6 (et non 5)</p>
<p><strong>Floatint-Point</strong></p>
<p>Inclus les types FLOAT et DOUBLE. Ils peuvent être utilisés pour représenter des valeurs approximatives et utilisent le native binary floating-point format du CPU. Ils sont très performants, mais sujet aux erreurs d&#8217;arrondissement.</p>
<p>Il est possible de définir la « precision and scale ».<br />
FLOAT(10,3) indique un maximum de 10 chiffres, dont 3 après la virgule.<br />
DECIMAL(20,7) indique un maximum de 20 chiffres, dont 7 après la virgule.</p>
<p>FLOAT utilise 4 bytes maximum, ce qui donne une précision entre 0 et 23. DOUBLE utilise 8 bytes, offrant une précision de 24 à 53.</p>
<p><strong>Fixed-Point</strong></p>
<p><strong> </strong></p>
<p>Le type DECIMAL (ou NUMERIC) peut stocker des valeurs exactes. Il n&#8217;utilise pas le format binaire natif donc il est plus CPU Intensive. La précision et le scale influencent le nombre de bytes utilisé pour le stockage. Environ 4 bytes sont requis par tranche de 9 chiffres de chaque côté de la décimale.</p>
<p><strong>Bit</strong></p>
<p><strong></strong>La grosseur du champ BIT indique le nombre de bits par valeur, allant de 1 à 64. Le range de valeur se calcule 0 à 2n -1 et le nombre de bytes pour le stockage se calcule INT((n+7) / 8 ). On peut assigner des valeurs numériques ou des valeurs binaires avec la notation b&#8217;val&#8217;. Par exemple, b&#8217;1111&#8242; représente 15 alors que b&#8217;1000000&#8242; représente 64.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2009/04/26/mes-notes-les-types-de-donnees-numeriques/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stocker des fichiers dans MySQL</title>
		<link>http://www.noidea.ca/2008/06/25/des-fichiers-dans-mysql/</link>
		<comments>http://www.noidea.ca/2008/06/25/des-fichiers-dans-mysql/#comments</comments>
		<pubDate>Thu, 26 Jun 2008 01:55:10 +0000</pubDate>
		<dc:creator>PaT</dc:creator>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Modèle de données]]></category>
		<category><![CDATA[Tranche de vie]]></category>
		<category><![CDATA[Acid]]></category>
		<category><![CDATA[InnoDB]]></category>
		<category><![CDATA[Stockage]]></category>

		<guid isPermaLink="false">http://www.noidea.ca/?p=26</guid>
		<description><![CDATA[Est-il mauvais de stocker des fichiers dans MySQL ? Il n&#8217;y a pas de bonne ou mauvaise réponse à cette question. Tout dépend de vos besoins. Personnellement, je préfère stocker les fichiers à l&#8217;extérieur de la base de données pour les raisons suivantes:

Le filesystem va mieux cacher les fichiers
Le serveur MySQL va avoir plus de [...]]]></description>
			<content:encoded><![CDATA[<p>Est-il mauvais de stocker des fichiers dans MySQL ? Il n&#8217;y a pas de bonne ou mauvaise réponse à cette question. Tout dépend de vos besoins. Personnellement, je préfère stocker les fichiers à l&#8217;extérieur de la base de données pour les raisons suivantes:</p>
<ul>
<li>Le filesystem va mieux cacher les fichiers</li>
<li>Le serveur MySQL va avoir plus de facilité à cacher les autres données</li>
<li>Le débit de donnée du serveur va être moins élevé</li>
<li>Il est plus facile de réorganiser et maintenir les fichiers</li>
<li>Le tablespace demeure petit (si vous devez utiliser InnoDB)</li>
</ul>
<p>Une bonne approche est de stocker un pointeur vers les fichiers sur le filesystem plutôt que le binaire du fichier directement dans la BD. Il y a cependant des avantages à les stocker dans la base de données:</p>
<ul>
<li>Toutes les données sont centralisées à une place pour les backups</li>
<li>C&#8217;est plus simple à gérer avec la réplication et/ou du load balancing</li>
<li>Il est possible de demeurer ACID compliant.</li>
</ul>
<p>J&#8217;ai eu une situation qui aurait pu devenir très problématique dernièrement lorsque je devais faire la maintenance de la base de données de l&#8217;application <a title="RT" href="http://bestpractical.com/rt/" target="_blank">RT</a>. Pour faire une histoire courte, RT stock des attachements d&#8217;email dans une table InnoDB et le tablespace d&#8217;InnoDB est devenu corrompu lorsqu&#8217;il a atteint 40 Go. Lorsqu&#8217;on sélectionnait des enregistrements précis de la table Attachements, le serveur plantait et mysql_safe le repartait automatiquement. Heureusement, il s&#8217;agissait d&#8217;un Slave. Comme nous avions qu&#8217;un seul slave, nous avons du le &#8220;reconstruire&#8221; à partir du Master. 40Go de données, c&#8217;est long à backuper et restaurer et le downtime que ça a créé était considérablement long. Un downtime est toujours trop long. Sur les 40Go, environ 30 étaient des fichiers d&#8217;attachements.  Ça aurait été beaucoup plus simple et rapide si les fichiers n&#8217;étaient pas stockés dans MySQL&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.noidea.ca/2008/06/25/des-fichiers-dans-mysql/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>
