Une IP dans une table MySQL

40 réponses
AuteurMessage

midtownmad |
Membre

 

Inscrit le : 09/05/2005

# Le 04/09/2005 à 19:26

Salut,

J'ai un outil de gestion pub fait maison, le problème c'est qu'il bouffe pas mal de ressources processeur... pas le pied !

J'ai cerné le problème, il s'agit de la table gérant le capping des campagnes. Je voulais savoir quel type de donnée de colonne est le plus approprié pour stocké l'ip d'un utilisteur ? Sachant qu'actuellement j'ai mis un varchar(15).
C'est mieux de stocker les ips dans un champ int(12) en virant les "." des ips ? plus rapide ?

A chaque affichage d'une pub je cherche dans la table capping les lignes dont l'ip est celle de l'utilisateur et l'emplacement de la pub est celui affiché.
Avant de mettre ça dans une table MySQL, je gérais ça par fichiers texte (un fichier par ip) mais j'ai ayant rajouté une campagne avec un capping affichée très souvent, le dossier avec les ips est devenus imposant et ça a finis par ralentir fortement mon serveur.

Merci ,
Gigi.

midtownmad (dit gigi par ses amis)
http://www.macreators.comOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 04/09/2005 à 19:52

Salut

Ca sera bien plus rapide avec une table qu'un fichier texte
Pense a bien mettre un index sur la colonne IP

Le type de données n'a que peu d'importance (a mon avis) si tu mets l'index correctement. Ca sera peut etre un poil plus rapide en integer...


Mais de toute facon, un gestionnnaire de capping par ip prend du cpu forcement.
Et n'est pas super fiable avec les abonnées AOL qui ont tous la meme ip. J'ai le probleme et je ne sais pas comment le resoudre...

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

midtownmad | Ronan
Membre

 

Inscrit le : 09/05/2005

# Le 04/09/2005 à 20:33

Mettre la colonne en index, c'est ce que j'avais zappé, ça passe déjà mieux .
Merci .

En attendant une autre solution pour le capping.

midtownmad (dit gigi par ses amis)
http://www.macreators.comOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 04/09/2005 à 20:51

J'ai ecrit un tuto sur l'optimisation des devs
pour la partie mysql c'est la :
[A]http://www.toutjavascript.com/savoir/optimiser_mysql.php3[/A]

Ca peut pas faire de mal je crois

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 04/09/2005 à 23:17

Et une IP "normale", tout simplement retranscrite en 32 bit ? (cf : ip2long).

Perso je suis plutot adepte du "varchar à tout va", afin de pouvoir un maximum d'infos juste en utilisant phpMyAdmin ou autre... Mais si tu passes systématiquement par tes applis, pas besoin.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 05/09/2005 à 00:14

devtribu a dit :
Ca sera bien plus rapide avec une table qu'un fichier texte
Pense a bien mettre un index sur la colonne IP


Yop

Ca depend pour quoi, mais generalement, l'acces a un fichier texte est un peu plus rapide qu'a mySQL (test effectué sur une boucle de 10.000 connexion et select sql par rapport a l'acces a un fichier texte)..

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 05/09/2005 à 00:15

+1 avec bool, ne t'embête pas a passé les ip en int, tu vas t'embeter pour pas grand chose !

La gestion des clés et des index sur mysql peux améliorer ;)

@+ Jean-Philippe

PepsiCola | Jean-Jacques
En attente

 

Inscrit le : 09/05/2005

# Le 05/09/2005 à 09:05

En dehors de l'aspect technique du stockage de l'IP je ne suis pas du tout convaincu que la gestion de capping par l'IP soit la meilleure méthode.

Dans l'absolu, déjà, une IP qui revient ne prouve pas qu'il d'agit du même utilisateur.

La plupart des utilisateurs n'ont pas d'IP fixe et la probabilité que la même IP soit réatribuée à un autre utilisateur du même site est loin d'être négligeable, surtout s'il s'agit dun site d'un certain trafic et qu'il s'agit d'un gros FAI ( wanadoo par exemple ).

Pire : beaucoup de connections passent par des proxys, soit au niveau de l'utilisateur lui-même, soit au niveau de son FAI.

Au niveau du FAI ceci est particulièrement vrai pour AOL.

La gestion du capping par cookies serait en théorie plus exacte si ce n'est que certains utilisateurs les désabilitent ou les suppriment à la fin de chaque session.

Mais en fait ce qui est important ce n'est pas de bien gérer le capping mais de le gérer de la même façon que les régies, même si elles le gèrent mal.

Et on constate que les régies ne gèrent pas toutes le capping de la même façon.

En gros il y a les 2 méthodes au dessus qui sont utilisées : IP et cookie ( et je pense même que la gestion par cookie est la plus utilisée )

Et donc l'idéal c'est que l'adserver permette d'utiliser ces 2 méthodes, selon la régie ( une zone indique si on demande une gestion par IP ou par cookie ).





abonné au gaz

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 05/09/2005 à 09:11

Pire : beaucoup de connections passent par des proxys, soit au niveau de l'utilisateur lui-même, soit au niveau de son FAI.


C'est encore plus vrai pour les sites dont une majeure partie des visiteurs est constituée d'employés se connectant du boulot
Quand tu vois que tous les employées France Telecom passent par la même IP (en fait 2, mais c'est une autre histoire), ce serait domage de ne compter qu'un seul affichage...

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 06/09/2005 à 09:46

krucial > Meme avec une table de 100 000 ip, l'acces par fichier texte est plus rapide ?

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 06/09/2005 à 09:53

M'enfin, tout dépend du SGBD (MySQL, Oracle, SQLite ?), tu type de table (pour MySQL : Heap, MyIsam, InnoDB ?), de la méthode d'accès (réseau, socket unix, accès direct, etc).

En règle générale le fichier texte montre très vite ses limites, surtout en cas de nombreuses écritures concurrentes.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

krucial | Jean Christophe
Administrateur

Photo de krucial

Inscrit le : 09/03/2005

# Le 06/09/2005 à 17:00

devtribu a dit :
krucial > Meme avec une table de 100 000 ip, l'acces par fichier texte est plus rapide ?


Hihi non Mais pour des petits fichiers, c'est souvent plus rapide

JC - Mes sitesOuvrir dans une nouvelle fenetre | Affiliation devis travauxOuvrir dans une nouvelle fenetre | Cotes voitures anciennesOuvrir dans une nouvelle fenetre

Julgates | Julien
Administrateur

Photo de Julgates

Inscrit le : 09/03/2005

# Le 06/09/2005 à 17:44

C'est une bonne technique le petit fichier,mais quand tu passes sur un cluster, y'a pu qu'à tout changer ;-) (ça sent le vécu)

Shopping Time NetworkOuvrir dans une nouvelle fenetre - Founder / CTO

lordgun |
Anonyme

 

Inscrit le : 25/07/2005

# Le 10/09/2005 à 15:33

le plus simple et rapide:
utiliser en effet un int 32bits pour stocker l ip, sans les points.

la comparaison char et int n a rien a voir, en effet chaque caractere est un int !

--
Cédric aka lordgun
http://web.ifrance.comOuvrir dans une nouvelle fenetre http://www.generiquestele.comOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 10/09/2005 à 16:08

Chaque caractère est un byte, chaque int étant généralement quatre byte. Non ?

Enfin... sauf si on commence à jouer avec l'UTF-8 ou autre...

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

flush | Jean-Philippe
Modérateur

Photo de flush

Inscrit le : 09/05/2005

# Le 10/09/2005 à 23:14

vivi ^^ enfin moi je préfère parler en octets pour éviter la confusion entre byte & bit

@+ Jean-Philippe

tybozz | Thibaud
Membre

 

Inscrit le : 09/05/2005

# Le 10/09/2005 à 23:21

lordgun a dit :
le plus simple et rapide:
utiliser en effet un int 32bits pour stocker l ip, sans les points.

la comparaison char et int n a rien a voir, en effet chaque caractere est un int !


oui mais dans ce cas, à moins que j'ai zappé quelquechose :

81.121.25.67 et 81.12.125.67 seront codés par 811212567 non ?

Elevez un dragon !Ouvrir dans une nouvelle fenetre avant qu'il ne fasse le casting pour la star on the net academyOuvrir dans une nouvelle fenetre ou qu'il ne s'empiffre de bonbons à gogoOuvrir dans une nouvelle fenetre

DarkSquall |
Membre

Photo de DarkSquall

Inscrit le : 27/08/2005

# Le 10/09/2005 à 23:50

Pas bête le tybozz, j'y avais pas penser, à ça lol...

C'est vrai...

Moi pour mes ip en tout cas, j'utilise varchar 15, j'ai pas de soucis de perf...

Isyweb.comOuvrir dans une nouvelle fenetre

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 11/09/2005 à 00:20

tybozz : non ;)

Par exemple, prends l'IP 66.249.93.99

En Hexa ça donne : 42.f9.5d.63
Ce qui correspond à l'entier 42f95d63. C'est à dire 1123638627Ouvrir dans une nouvelle fenetre .

Il n'y a aucune perte, les IP (v4) ont toujours été sur 32 bits (d'où la limitation de 0 à 255 pour chaque membre, et le nombre restreints d'IP à 2^32 = 4 milliards).

Et avec PHP, cette "conversion" est très simple : http://www.php.net/manual/fr/function.ip2long.phpOuvrir dans une nouvelle fenetre

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

tybozz | Thibaud
Membre

 

Inscrit le : 09/05/2005

# Le 11/09/2005 à 00:45

oki j'avais zappé le passage en hexa
je me disais bien aussi que ...

Elevez un dragon !Ouvrir dans une nouvelle fenetre avant qu'il ne fasse le casting pour la star on the net academyOuvrir dans une nouvelle fenetre ou qu'il ne s'empiffre de bonbons à gogoOuvrir dans une nouvelle fenetre

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 23/11/2024 21:06:30 | Généré en 14.9ms | Contacts | Mentions légales |