Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2228 connectés 

 


 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  478  479  480  ..  486  487  488  489  490  491
Auteur Sujet :

les développeurs de forums, les 3/4 des forums sont down /o\

n°1974002
drasche
Posté le 15-03-2010 à 17:50:25  profilanswer
 

Reprise du message précédent :

masklinn a écrit :

Pourquoi pas un autre langage clr, genre ironpython?


j'avais pas vu ta question [:petrus75]
 
Essentiellement pour approfondir C# et pour me concentrer sur un seul langage. Après on verra. Mon plus grand défi cependant est de sérieusement me mettre à ASP.NET, pas d'apprendre un langage.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
mood
Publicité
Posté le 15-03-2010 à 17:50:25  profilanswer
 

n°1974003
fabien
Vive la super 5 !
Posté le 15-03-2010 à 17:51:26  profilanswer
 

drasche a écrit :

Les forums auront toujours une utilité :o
 
Quoi alors vous êtes tous à créer un réseau social alors? [:opus dei]


ben un reseau social, c'est un forum avec un table "amis"  :lol:  
 


---------------
Découvre le HFRcoin ✈ - smilies
n°1974004
drasche
Posté le 15-03-2010 à 17:54:20  profilanswer
 

fabien a écrit :

ben un reseau social, c'est un forum avec un table "amis"  :lol:  


Ah merde! C'est à ça que sert la liste de contacts sur HFR? [:ddr555]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1974005
fabien
Vive la super 5 !
Posté le 15-03-2010 à 18:07:12  profilanswer
 

drasche a écrit :


Ah merde! C'est à ça que sert la liste de contacts sur HFR? [:ddr555]


oué, mais comme ya pas de partie privé, ca sert pas à grand chose sur un forum :D  
 


---------------
Découvre le HFRcoin ✈ - smilies
n°1974317
thomase
Posté le 16-03-2010 à 22:19:30  profilanswer
 

Est-ce que vous vous servez souvent de la fonctionnalité qui affiche les "drapeaux" (les favoris, abonnements, coups de coeur, ...) sur la page d'index d'un forum à côté des topics suivis pour savoir si un message a été posté depuis notre dernière visite?
 
Personnellement dans 99% des cas je clique directement sur le bouton qui affiche ma liste des sujets suivis.
 
Je dis ça car mélanger les "drapeaux" sur les pages d'index du forum ça résulte en une jointure un peu moche à écrire et pénible à maintenir, alors que si le suivi des sujets ne se fait que sur une page dédiée, c'est beaucoup plus simple.
 
Je souhaiterais faire sauter les drapeaux mélangés afin de faciliter la maintenance de mon forum. Qu'en pensez-vous?

 
EDIT: argh ce n'est pas possible, j'ai besoin d'afficher si un visiteur a déjà lu ou pas tel sujet.

Message cité 1 fois
Message édité par thomase le 16-03-2010 à 22:45:46
n°1974491
skeye
Posté le 17-03-2010 à 11:25:54  profilanswer
 


 
ça doit pas être si complexe niveau sql à faire en une fois, faut pas déconner...[:pingouino]
Si j'ai bien compris c'est juste un truc du style :
 

Code :
  1. SELECT thread.*, type_drapal
  2. FROM thread JOIN drapals ON drapal.id_thread = thread.id
  3. WHERE drapal.id_user = ...


 
Après c'est facile à découper en php par type de drapeau...non?


---------------
Can't buy what I want because it's free -
n°1974495
kao98
...
Posté le 17-03-2010 à 11:34:01  profilanswer
 

skeye a écrit :


 
ça doit pas être si complexe niveau sql à faire en une fois, faut pas déconner...[:pingouino]
Si j'ai bien compris c'est juste un truc du style :
 

Code :
  1. SELECT thread.*, type_drapal
  2. FROM thread JOIN drapals ON drapal.id_thread = thread.id
  3. WHERE drapal.id_user = ...


 
Après c'est facile à découper en php par type de drapeau...non?


+1
Avec un petit LEFT JOIN qui va bien, et le tour est joué. La requête n'est pas si alambiquée que ça, pas de problème de perf en perspective.
 

Code :
  1. SELECT thread.*, type_drapal
  2. FROM thread LEFT JOIN drapals ON drapal.id_thread = thread.id
  3. WHERE drapal.id_user = ... OR drapal.id_user IS NULL

n°1974497
kao98
...
Posté le 17-03-2010 à 11:37:07  profilanswer
 


C'est étonnant le problème de perf. Parce qu'avec une BDD correctement indexée, calculer une jointure externe c'est quand même pas grand chose pour le serveur.

n°1974504
thomase
Posté le 17-03-2010 à 11:42:44  profilanswer
 

@skeye: ta requête ne marche pas pour un affichage de l'index de topics d'un sous-forum (lu, non lu, participé ou pas), car si un topic n'a pas de drapeau associé pour le user, le topic ne sera pas retourné (à cause de ta clause WHERE). Par contre ça marche dans un menu qui n'affiche que les topics suivis.
 
@NazzTazz: j'ai pensé faire ça. J'avais peur des performances à cause des boucles à répétition (je bosse en Ruby), donc suite à ton post je vais creuser cette voie. Niveau maintenabilité c'est inégalable donc préferrable.
 
Question subsidiaire: vous séparez les drapeaux rouges et bleus? Personnellement je trouve qu'ils sont très similaires, et qu'un seul tableau avec une colonne supplémentaire "kind = read / write" pourrait faire l'affaire, mais j'ai peur de tomber dans un piège auquel je n'avais pas pensé.

n°1974505
kao98
...
Posté le 17-03-2010 à 11:44:03  profilanswer
 

thomase a écrit :

@skeye: ta requête ne marche pas pour un affichage de l'index de topics d'un sous-forum (lu, non lu, participé ou pas), car si un topic n'a pas de drapeau associé pour le user, le topic ne sera pas retourné (à cause de ta clause WHERE). Par contre ça marche dans un menu qui n'affiche que les topics suivis.
 


La solution de skeye devrait fonctionner avec une jointure externe !

mood
Publicité
Posté le 17-03-2010 à 11:44:03  profilanswer
 

n°1974506
skeye
Posté le 17-03-2010 à 11:44:29  profilanswer
 


 
[:ohmyeyes]
Il te manque pas des indexes quelque part?[:psywalk]
 

thomase a écrit :

@skeye: ta requête ne marche pas pour un affichage de l'index de topics d'un sous-forum (lu, non lu, participé ou pas), car si un topic n'a pas de drapeau associé pour le user, le topic ne sera pas retourné (à cause de ta clause WHERE). Par contre ça marche dans un menu qui n'affiche que les topics suivis.


Jointure externe dans ce cas, il y a deux mots à rajouter dans la requête.[:el g]


---------------
Can't buy what I want because it's free -
n°1974509
skeye
Posté le 17-03-2010 à 11:45:50  profilanswer
 


WTF?[:pingouino dei]

 

si chez toi php est systématiquement plus rapide que l'équivalent direct en SQL il y a manifestement un gros problème avec ta bdd.[:ciler]

Message cité 2 fois
Message édité par skeye le 17-03-2010 à 11:47:51

---------------
Can't buy what I want because it's free -
n°1974517
skeye
Posté le 17-03-2010 à 11:54:26  profilanswer
 


 
40 tables c'est une petite DB, vu d'ici (je travaille 90% du temps sur des DB >400 tables).
T'es sûr que ce n'est pas tout simplement que tes serveurs de DB sont sous-dimensionnés par rapport à tes serveurs http?[:dawao]


---------------
Can't buy what I want because it's free -
n°1974528
skeye
Posté le 17-03-2010 à 12:11:58  profilanswer
 

...alors des indexes manquants ou un sgbd moisi sont les seules explications qui restent...[:doc petrus]
Jamais des opérations sur des tableaux php devraient aller plus vite que l'opération équivalente via une jointure...ou en tout cas uniquement sur des cas très particuliers...


---------------
Can't buy what I want because it's free -
n°1974529
masklinn
í dag viðrar vel til loftárása
Posté le 17-03-2010 à 12:12:47  profilanswer
 

skeye a écrit :

 

40 tables c'est une petite DB, vu d'ici (je travaille 90% du temps sur des DB >400 tables).
T'es sûr que ce n'est pas tout simplement que tes serveurs de DB sont sous-dimensionnés par rapport à tes serveurs http?[:dawao]


skeye a écrit :


WTF?[:pingouino dei]

 

si chez toi php est systématiquement plus rapide que l'équivalent direct en SQL il y a manifestement un gros problème avec ta bdd.[:ciler]


Il utilise mysql? Puis si ça se trouve il join sur des colonnes en varchar en bonus?

Citation :

Regardless of what back end you choose the mysql query engine is weak. It only supports nested loop scan, no merge join, no hash join, nothing fancy. Further sub queries can’t even use indexes so they are near useless. The rule when using mysql is *don’t join*. So the case where mysql can be put to good use is where all your quires are over a single table, which is why it has done well for web apps I wold suspect.


(note: le commentaire est sur les backends "builtins", il y a des backends third-party avec des stratégies de joins moins limitées, mais uniquement à l'intérieur du backend en bypassant partiellement le query engine)

Message cité 1 fois
Message édité par masklinn le 17-03-2010 à 12:16:29

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1974532
skeye
Posté le 17-03-2010 à 12:16:41  profilanswer
 

masklinn a écrit :


Citation :

The rule when using mysql is *don’t join*.


(note: le commentaire est sur les backends "builtins", il y a des backends third-party avec des stratégies de joins moins limitées)


 
ok.[:ciler]


---------------
Can't buy what I want because it's free -
n°1974535
drasche
Posté le 17-03-2010 à 12:45:59  profilanswer
 


Je pensais qu'on l'avait assez dit sur ce topic, justement [:petrus75]
 
Perso j'avais commencé avec des jointures, c'était bien indexé et tout, pour réaliser que ça allait franchement plus vite sans, et le coût de le faire en PHP est quasi nul. J'étais dégoûté [:petrus75]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1974546
FlorentP
Posté le 17-03-2010 à 13:24:13  profilanswer
 

drasche a écrit :


Je pensais qu'on l'avait assez dit sur ce topic, justement [:petrus75]
 
Perso j'avais commencé avec des jointures, c'était bien indexé et tout, pour réaliser que ça allait franchement plus vite sans, et le coût de le faire en PHP est quasi nul. J'étais dégoûté [:petrus75]


CAD ? Tu fais une requête, t'itère sur les résultats et pour chaque tu refais une requête ?
 
Et tu veux nous faire croire que c'est plus performant qu'une seule requête réellement optimisée faisant avec jointure ? :o

n°1974548
kao98
...
Posté le 17-03-2010 à 13:26:07  profilanswer
 

Quand je vois ça, ça me conforte dans l'idée que mysql, c'est un sgbd en carton :o

n°1974550
drasche
Posté le 17-03-2010 à 13:33:27  profilanswer
 

FlorentP a écrit :

CAD ? Tu fais une requête, t'itère sur les résultats et pour chaque tu refais une requête ?
 
Et tu veux nous faire croire que c'est plus performant qu'une seule requête réellement optimisée faisant avec jointure ? :o


Non, tu fais deux requêtes dans deux tables sur un critère commun, et tu assembles le résultat en fonction de ce critère dans PHP :o
 
Dans le cas de drapeaux, le critère commun sera l'ID de sous-forum (ou catégorie, ou quelque soit le nom).


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1974551
thomase
Posté le 17-03-2010 à 13:33:55  profilanswer
 

Si avec Mysql les jointures n'apportent rien (voir pire), cela signifie qu'on peut largement utiliser sqlite comme BDD? Des arguments contre?

n°1974553
kao98
...
Posté le 17-03-2010 à 13:35:49  profilanswer
 

thomase a écrit :

Si avec Mysql les jointures n'apportent rien (voir pire), cela signifie qu'on peut largement utiliser sqlite comme BDD? Des arguments contre?


Regarde peut-être du côté de postgres !?

n°1974560
thomase
Posté le 17-03-2010 à 13:46:45  profilanswer
 

kao98 a écrit :

Regarde peut-être du côté de postgres !?


Je tourne déjà avec Postgres, mais je pense que c'est un peu overkill pour mon utilisation. Avec Rails, par défaut ActiveRecord split les jointures en multiples requêtes.
 
J'ai lu des choses à propos de lock avec sqlite, et j'ai peur de faire une bêtise en basculant à sqlite  :(

n°1974562
masklinn
í dag viðrar vel til loftárása
Posté le 17-03-2010 à 13:48:23  profilanswer
 

drasche a écrit :


Je pensais qu'on l'avait assez dit sur ce topic, justement [:petrus75]
 
Perso j'avais commencé avec des jointures, c'était bien indexé et tout, pour réaliser que ça allait franchement plus vite sans, et le coût de le faire en PHP est quasi nul. J'étais dégoûté [:petrus75]


Sinon, faut faire comme tous les gens biens et passer la db sous postgres :o


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1974563
masklinn
í dag viðrar vel til loftárása
Posté le 17-03-2010 à 13:49:14  profilanswer
 

thomase a écrit :

Si avec Mysql les jointures n'apportent rien (voir pire), cela signifie qu'on peut largement utiliser sqlite comme BDD? Des arguments contre?


Tu peux avoir des problèmes de concurrence au niveau des écritures, me semble que ça lock tout le fichier donc faut faire gaffe avec ça si t'accèdes à ta db sqlite depuis des threads multiples. À noter que sqlite sait parfaitement faire des joins, je connais pas le profil de perfs par contre

 

Sinon, tu pars sur du nosql, genre une DB Redis, MongoDB ou Tokyo Cabinet/Tokyo Tyrant.


Message édité par masklinn le 17-03-2010 à 13:52:56

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1974564
thomase
Posté le 17-03-2010 à 13:52:47  profilanswer
 

Oui ça lock tout le fichier en écriture, mais concrètement ça explose aux environs de combien de requêtes par jour / visites? Personne s'en sert en pratique pour son site web?
 
Les forums c'est un peu plus lourd niveaux requêtes qu'un site classique également.

n°1974566
masklinn
í dag viðrar vel til loftárása
Posté le 17-03-2010 à 13:56:39  profilanswer
 

thomase a écrit :

Oui ça lock tout le fichier en écriture, mais concrètement ça explose aux environs de combien de requêtes par jour / visites?


Ça dépend de ton mix lectures/écritures, de la manière dont ta couche db accède à sqlite et de la complexité des requêtes (plus une écriture est longue et plus t'as de chances qu'un lock timeout) [:spamafote]

 

Cf site de sqlite: http://www.sqlite.org/whentouse.html

Citation :

SQLite usually will work great as the database engine for low to medium traffic websites (which is to say, 99.9% of all websites). The amount of web traffic that SQLite can handle depends, of course, on how heavily the website uses its database. Generally speaking, any site that gets fewer than 100K hits/day should work fine with SQLite. The 100K hits/day figure is a conservative estimate, not a hard upper bound. SQLite has been demonstrated to work with 10 times that amount of traffic.

 

il y a plus d'infos sur http://www.sqlite.org/cvstrac/wiki?p=WhenToUseSqlite


Message édité par masklinn le 17-03-2010 à 14:02:32

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1974570
drasche
Posté le 17-03-2010 à 14:03:39  profilanswer
 

masklinn a écrit :

Sinon, faut faire comme tous les gens biens et passer la db sous postgres :o


D'abord SQL Server 2008 histoire d'apprendre, puis je repasserai à Postgres :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1974571
skeye
Posté le 17-03-2010 à 14:06:01  profilanswer
 

drasche a écrit :


Je pensais qu'on l'avait assez dit sur ce topic, justement [:petrus75]

 

Perso j'avais commencé avec des jointures, c'était bien indexé et tout, pour réaliser que ça allait franchement plus vite sans, et le coût de le faire en PHP est quasi nul. J'étais dégoûté [:petrus75]

 

Je savais que c'était mal branlé, mais pas au point d'être systématiquement (beaucoup) plus lent.[:jagstang]


Message édité par skeye le 17-03-2010 à 14:06:10

---------------
Can't buy what I want because it's free -
n°1975145
FlorentP
Posté le 19-03-2010 à 11:39:11  profilanswer
 

drasche a écrit :


Non, tu fais deux requêtes dans deux tables sur un critère commun, et tu assembles le résultat en fonction de ce critère dans PHP :o
 
Dans le cas de drapeaux, le critère commun sera l'ID de sous-forum (ou catégorie, ou quelque soit le nom).


Ok, donc déjà le cas que tu présentes c'est pas le cas classique d'utilisation de la jointure...
Là tu accoles deux tables qui ont la même PK en gros, genre t'as dénormalisé en cassant une table en deux, et tu les recolle via jointure.
C'est différent d'itérer sur des données et d'aller chercher d'autres infos pour chaque donnée dans une table à part, qui sans jointure ne se résout pas en 2 requêtes mais en N + 1 requêtes. Right?
 
Non parce qu'après on se retrouve avec des boulets de développeurs qui font N+1 requêtes parce qu'"on" leur a dit que les jointures étaient à bannir (vécu inside)...
 
 
Mais pour en revenir à ton cas de la jointure VS deux requêtes => tu compares dans quelle situation ? Avec le serveur SQL sur la même machine physique, ou distant, via le réseau ?
 
 

thomase a écrit :

Si avec Mysql les jointures n'apportent rien (voir pire), cela signifie qu'on peut largement utiliser sqlite comme BDD? Des arguments contre?


Ayé, on a un candidat à N+1 requêtes au lieu d'une jointure parce que les jointures "c'est le mal" :o

n°1975147
drasche
Posté le 19-03-2010 à 11:43:08  profilanswer
 

FlorentP a écrit :

Ok, donc déjà le cas que tu présentes c'est pas le cas classique d'utilisation de la jointure...
Là tu accoles deux tables qui ont la même PK en gros, genre t'as dénormalisé en cassant une table en deux, et tu les recolle via jointure.
C'est différent d'itérer sur des données et d'aller chercher d'autres infos pour chaque donnée dans une table à part, qui sans jointure ne se résout pas en 2 requêtes mais en N + 1 requêtes. Right?
 
Non parce qu'après on se retrouve avec des boulets de développeurs qui font N+1 requêtes parce qu'"on" leur a dit que les jointures étaient à bannir (vécu inside)...
 
 
Mais pour en revenir à ton cas de la jointure VS deux requêtes => tu compares dans quelle situation ? Avec le serveur SQL sur la même machine physique, ou distant, via le réseau ?


Non ici c'est deux requêtes sur une FK, pas une PK (enfin tu me diras, c'est pareil). C'est en MySQL et le serveur est sur la même machine. Je souligne que c'est un cas particulier, je repartirai d'une base propre sur un autre projet qui se fera sur un autre SGBD et situé sur une machine différente du serveur web.
 
Et c'est un cas précis, j'ai quand même des requêtes avec jointures un peu partout, je suis pas fou à ce point là :o


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°1975150
kao98
...
Posté le 19-03-2010 à 11:48:14  profilanswer
 

FlorentP a raison de souligner qu'il faut préciser qu'il faut être prudent, que les histoires de jointures à remplacer par x requêtes, c'est dans un cadre d'optimisation, dans des cas particuliers. Et comme il le souligne, Thomase en est la preuve !
 
Au départ, on écrit des "vrais" requêtes, avec des jointures. Et après, on optimise, après étude des goulets d'étranglements de l'application, ce qui peut amener dans certains cas à écrire deux requêtes simple plutôt qu'une requête un peu moins simple.
 
Mais dire, comme ça, de but en blanc, qu'il vaut mieux écrire x requêtes simples plutôt qu'une requête un peu plus complexe, sans préciser le contexte, c'est pas bien.

n°1975160
fabien
Vive la super 5 !
Posté le 19-03-2010 à 11:59:39  profilanswer
 

Ben pour moi, la jointure est inutile au moment ou on obtient le meme resultat pour chaque ligne de la deuxieme table, par exemple cette page (les reponse), je trouve inutile de faire une jointure entre la table cat,sujet,reponse , cependant il est utile de faire une jointure entre la table membre et reponse (pour avoir les pseudo, avatar, signature).
 
Mais est ce que c'est plus rapide de faire ça sans jointure ? ou bien c'est pareil ?  
 


---------------
Découvre le HFRcoin ✈ - smilies
n°1975167
rosco
Posté le 19-03-2010 à 12:20:50  profilanswer
 

Il faut aussi penser, dans le cas du listing des topics avec les drapeaux associés qui est décrit au-dessus, que la requête pour ramener la liste des topics peut être réutilisée par n'importe qui via le cache SQL directement, alors que ce n'est pas le cas si la requête est une jointure puisqu'elle sera destinée à une personne unique du fait de l'ID membre qui y traine. Ca peut aussi être intéressant, mais ça reste du cas par cas, car il y a trop de paramètres rentrant en ligne de compte pour être catégorique.

n°1975269
thomase
Posté le 19-03-2010 à 16:03:27  profilanswer
 

FlorentP a écrit :

Ayé, on a un candidat à N+1 requêtes au lieu d'une jointure parce que les jointures "c'est le mal" :o


Tu ne sais pas réécrire une requête par jointure sur 2 tables en 2 requêtes?  :sweat:

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  478  479  480  ..  486  487  488  489  490  491

Aller à :
Ajouter une réponse
 

Sujets relatifs
question avec les forums phpbb2[php] trouver la premier place ou inserer un enregistrement (résolu)
Forums phpBBQui connait l'algo du Passticket et sa mise en place en VB ?
[Merise] Mise en place d'un MCDFocus mal placé....
[Blabla/Prog] Les développeurs foromeurs sont-ils des feignasses?Mise en place d'un formulaire CGI
forums création de site internetJava - Mise en place d'une api (Servlet)
Plus de sujets relatifs à : les développeurs de forums, les 3/4 des forums sont down /o\


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)