<(we)Blog\Flyounet.net>

Calendrier

« Mars 2007 »
lun mar mer jeu ven sam dim
1234
567891011
12131415161718
19202122232425
262728293031

Par Flyounet, le 30/03/2007 à 00:41:23

Dans la plupart des applications, les types de données utilisés pour les indexes sont ceux de la famille des INT (comme les SMALLINT, TINYINT, BIGINT, etc.). Comme il s'agit d'indexes, ils sont souvent clé primaire et quasiment tout le temps auto-incrément[1].

Ce qui me perturbe avec ce principe, c'est que dans les applications Web, on trouve des indexes partout, et qu'il est assez facile de changer de page en modifiant l'URL (histoire de changer un 931 en 932 par exemple).

Dans le cas de ce (we)Blog, j'ai la possibilité d'avoir des pages privées comme celle-ci qui n'est utilisable que pour les gens à qui je donne l'URL. Ainsi, elle n'est visible de nulle part, pas même de la liste des billets de ce jour.

Et alors, me diront certains où est le rapport ? Et bien, si l'on souhaite cacher des pages à d'autres, l'utilisateur moyen++ verra que si les billets 931 et 933 sont disponibles, il essayera facilement de voir si le 932 existe, et s'il est privé il y aura quand même accès[2].
C'est pour cela que je n'utilise plus que des indexes alpha-numériques. Certes pour l'espace disque nécessaire, il est forcément plus grand qu'en utilisant des INT, mais la recherche de l'indice suivant est bien plus compliqué.

Pour comparaison, voici le nombre de combinaisons que l'on obtient avec des INT :

TNIYINT(1)   = 2561 =                         256
SMALLINT(2)  = 2562 =                       4'096
MEDIUMINT(3) = 2563 =                  16'777'216
INT(4)       = 2564 =               4'294'967'296
BIGINT(8)    = 2568 =  18'446'744'073'709'551'615

En utilisant les 26 lettres de l'alphabet et les 10 chiffres :

CHAR(1)      = 361  =                          36
CHAR(2)      = 362  =                       1'296
CHAR(3)      = 363  =                      46'656
CHAR(4)      = 364  =                   1'679'616
CHAR(5)      = 365  =                  60'466'176
CHAR(6)      = 366  =               2'176'782'336
CHAR(7)      = 367  =              78'364'164'096
CHAR(8)      = 368  =           2'821'109'907'456
CHAR(9)      = 369  =         101'559'956'668'416
CHAR(10)     = 3610 =       3'656'158'440'062'976
CHAR(11)     = 3611 =     131'621'703'842'267'136
CHAR(12)     = 3612 =   4'738'381'338'321'616'896
CHAR(13)     = 3613 = 170'581'728'179'578'208'256

En utilisant les 26 lettres de l'alphabet (avec différentiation majuscule/minuscule) et les 10 chiffes :

CHAR(1)      = 621  =                          62
CHAR(2)      = 622  =                       3'844
CHAR(3)      = 623  =                     238'328
CHAR(4)      = 624  =                  14'776'336
CHAR(5)      = 625  =                 916'132'832
CHAR(6)      = 626  =              56'800'235'584
CHAR(7)      = 627  =           3'521'614'606'208
CHAR(8)      = 628  =         218'340'105'584'896
CHAR(9)      = 629  =      13'537'086'546'263'552
CHAR(10)     = 6210 =     839'299'365'868'340'224
CHAR(11)     = 6211 =  52'036'560'683'837'093'888

Le nombre entre parenthèses indiquant le nombre d'octets utilisés pour stocker le résultat, on peut constater que ma méthode devient vite gourmande en espace disque par rapport à l'utilisation des INT. Mais bon, je m'en fous ! c'est mon idée, elle est débile[3] et je l'aime comme ça !

Je suis sûr[4] que ça ressemble à utiliser un lance-roquette[5] pour écraser un moutisque/bourdon/chien/zyva[6], mais je me complais dans ma médiocrité... Vite, je vais aller me refaire un Monsieur Le Chien, histoire de me dire qu'il est temps d'aller dormir...

Note : Les références sur les tailles[7] des objets peuvent être trouvés aux adresses suivantes : Capacités des colonnes et Types numériques.

Notes

[1] Ceux qui ont déjà décroché ferait bien d'aller réviser leurs cours de SQL.

[2] Cela n'entre en jeu que dans un cadre ou aucune protection n'est mise en place.

[3] Et je ne vous parle pas du coup CPU pour générer aléatoirement les IDs...

[4] Pour ceux qui ont tenu jusque là.

[5] Ou un BGF9000.

[6] Rayez de la carte toutes ces mentions inutiles.

[7] Oui, je sais ! C'est pas la taille qui compte, c'est le goût !

vu: 1852x - Geek Attitude - Commentaire(s): 3

Commentaire : #1

Par Derufin, le 30/03/2007 à 12:13:30

Gravatar de Derufin ??? Ca change quelque chose au fait qu'aléatoirement je puisse quand même tombé sur une page cachée ?
Bon Oki j'ai certainement plus de chance de gagner au loto, mais tout de même :oP

Commentaire : #2

Par Flyounet, le 30/03/2007 à 14:18:23

Gravatar de Flyounet Non ça ne change rien que tu puisses tomber dessus par hasard. Cependant, le script qui va devoir tester les pages sera dans un cas un bête : $compteur++, alors que dans l'autre cas il y aura nécessairement plus d'instructions donc ce sera plus lent. Et puis bon, même dans le cas de 4 milliards de requêtes, la personne en charge du site va rapidement s'en apercevoir.

Depuis mi-décembre je suis passé d'environ 500 visites par jour à environ 900 du jour au lendemain. Du coup, ça fait pas pareil

Commentaire : #3

Par consultation voyance gratuite, le 08/10/2013 à 12:57:32

Gravatar de consultation voyance gratuite Merci pour ces bons moments sur votre blog. Je suis souvent au poste pour regarder (encore et toujours) ces merveilleux articles que vous partagé. Vraiment très intéressant. Bonne continuation à vous !

Déposez votre commentaires

Les propos tenus dans ces commentaires appartiennent à leur propriétaire.


Le code HTML dans le commentaire sera affiché comme du texte, les adresses internet seront converties automatiquement.

Votre commentaire ne sera validé que si vous répondez à la question suivante :

Firefox (Take Back the Web) :

Le bon choix

Rediscover the Web

Rechercher (sur Google)

Ma vie en images

Aller à la galerie de Flyounet

Colophon

© 2003-2008, Flyounet.

Nombre de billets : 416

Nombre de commentaires : 1363

Ce site respecte les standards :

Stats (ce site/cette page) Visites : 1527946/2732 | Pages vues : 4025305/2828 | Visiteur(s) : 1/1
Temps de génération de la page XHTML : 1.4840857982635s | SQL : 0.041945219039917s avec 14 requêtes
Hébergement: Dreamhost. Navigateur: Mozilla/FireFox. Voisins: GeoURL/MultiMap.
Vous touchez le fond !Aller en haut de la page.