15-02-2013, 11:45 PM
Salut
Mauvaise idée. Plusieurs raisons:
- Si tu sérialize, il sera impossible, à postériori, de faire des recherches basées sur, par exemple, le niveau d'un batiment (je cherche les batiments de niveau supérieur à 9)
- Si tu sérialize, tout sera stocké sous forme de caractère ASCII ou UTF-8, soit 1 octet par caractère. Tu vas exploser la taille de la BDD (un tinyint, pour les niveaux des batiments de 0 à 255 par exemple, tient sur 1 octet alors que 255 prendra, en texte, 3 octets)
- Impossible d'utiliser des index propres, puisque les données ont été "collabées" (fusionnées) dans un champ texte; or, les index accélèrent les requêtes
- Tu vas rajouter 1 caractère d'échappement au moins pour séparer les données dans un champ, ce qui alourdis inutilement la BDD
- Si un jour tu veux rajouter des données, tu risqueras d'être coincé par la sérialization; en revanche, sans sérialiser, il est aisé de rajouter une colonne
Bref, mauvaise idée, tant du point de vue performances (pas d'indexes et des casts à tout bout de champ plus des sérializations/désérialisations) que du point de vue taille de la BDD (taille x3 si ce n'est pire) ou conception (pas possible d'ajouter des colonnes et très mauvaise habitude).
Mauvaise idée. Plusieurs raisons:
- Si tu sérialize, il sera impossible, à postériori, de faire des recherches basées sur, par exemple, le niveau d'un batiment (je cherche les batiments de niveau supérieur à 9)
- Si tu sérialize, tout sera stocké sous forme de caractère ASCII ou UTF-8, soit 1 octet par caractère. Tu vas exploser la taille de la BDD (un tinyint, pour les niveaux des batiments de 0 à 255 par exemple, tient sur 1 octet alors que 255 prendra, en texte, 3 octets)
- Impossible d'utiliser des index propres, puisque les données ont été "collabées" (fusionnées) dans un champ texte; or, les index accélèrent les requêtes
- Tu vas rajouter 1 caractère d'échappement au moins pour séparer les données dans un champ, ce qui alourdis inutilement la BDD
- Si un jour tu veux rajouter des données, tu risqueras d'être coincé par la sérialization; en revanche, sans sérialiser, il est aisé de rajouter une colonne
Bref, mauvaise idée, tant du point de vue performances (pas d'indexes et des casts à tout bout de champ plus des sérializations/désérialisations) que du point de vue taille de la BDD (taille x3 si ce n'est pire) ou conception (pas possible d'ajouter des colonnes et très mauvaise habitude).