Pages

Affichage des articles dont le libellé est héritage. Afficher tous les articles
Affichage des articles dont le libellé est héritage. Afficher tous les articles

Héritage SQL et performances sujet

mardi 8 avril 2014




Bonjour à tous,

Petite question lors de la conception d'une BDD d'une application ayant un traffic et un volume de données importants.
Cette application gère des petites annonces de véhicules de type différents (voiture, voiture sans permis, moto, vélo, trotinette, brouette :aie:, etc).
L'accès principales aux annonces se fait via une recherche qui portera soit sur tous les véhicules peu importe le type, soit sur un type particulier de véhicule.
La recherche se fait uniquement sur le nom du véhicule.
Donc soit je décide de rechercher Honda dans Tous les véhicules, soit Honda dans Moto par exemple.

Je me demande au niveau de la BDD si je dois faire un niveau d'abstraction du style :
1 table véhicule qui contiendra le type (VOITURE, MOTO, etc), le nom pour faire la recherche, les infos communes aux véhicules (nb de places etc) et une FK pour récupérer les infos des tables spécifiques ("Voiture", "Moto", "Vélo" qui contiendront les informations spécifiques à la catégorie).
Ou si je pars sur 1 table pour chaque type (1 table voiture, 1 table moto) avec pour chaque table une colonne nom, avec une vue ayant le nom de tous les véhicules pour faciliter ma recherche par nom toutes catégories confondues.
Ou si j'utilise la notion d'héritage présente dans PGSQL (INHERITS).

Générer une notion d'héritage au niveau du modèle est-il pénalisant pour les performances de lecture/écriture ?

Soyons fous (mais trop quand même), en disant que chaque table fille contient 100k enreg, ce qui donne notre table Vehicule à 1M enreg (partons sur 10 tables filles donc).
L'objectif principal est d'avoir une recherche multi catégories, et une recherche par catégorie.
Dans l'appli j'ai ma recherche multi catégorie qui prend donc en paramètre "nomVehicule" qui va me donner une query qui va fouiller les 1M d'enreg du type :
SELECT id FROM Vehicule v WHERE v.nom ILIKE '%nomVehicule%'
ou par catégorie :
SELECT id FROM Vehicule v WHERE v.nom ILIKE '%nomVehicule%' and v.type = 'VOITURE'

Est-ce suffisamment performant ou faut-il envisager les autres solutions décrites plus haut ?

Merci pour vos lumières :merci:




Programme d'étude sur le C++ bas niveau n°11 : Héritage sujet

vendredi 28 mars 2014




Poursuivant les dix premiers articles de la série d'Alex Darby que l'on peut retrouver traduite ici : Programme d'étude sur le C++ bas niveau.

Bravo à Kalite qui vient de terminer la traduction du 11e article :

Celui-ci porte sur l'héritage, il aborde la façon dont celui-ci se retrouve dans le code assembleur généré, il fait suite au 2e article qui abordait les types et structures simples.

Le prochain abordera l'héritage multiple, cela promet d'être passionnant :) !

Et vous,
:arrow: Connaissez-vous la portée de ce que vous écrivez, la façon dont cela impactera le code assembleur généré ?
:arrow: Vous intéressez-cous au code généré par votre code C++ ? Pourquoi ?



Si vous souhaitez vous lancer dans la traduction ou la rédaction d'un article, n'hésitez pas à me contacter, je pourrai ainsi vous fournir tous les renseignements et les outils nécessaires ;) !