Mes exigences sont:
- Besoin de pouvoir ajouter dynamiquement des champs définis par l'utilisateur de tout type de données
- Besoin de pouvoir interroger rapidement les UDF
- Besoin de pouvoir effectuer des calculs sur les UDF en fonction du type de données
- Besoin de pouvoir trier les UDF en fonction du type de données
Les autres informations:
- Je recherche principalement la performance
- Il y a quelques millions d'enregistrements maîtres auxquels des données UDF peuvent être jointes
- Lors de ma dernière vérification, il y avait plus de 50 millions d'enregistrements UDF dans notre base de données actuelle
- La plupart du temps, un UDF n'est attaché qu'à quelques milliers de fiches maîtresses, pas toutes
- Les UDF ne sont pas jointes ou utilisées comme clés. Ce ne sont que des données utilisées pour des requêtes ou des rapports
Options:
Créez une grande table avec StringValue1, StringValue2 ... IntValue1, IntValue2, ... etc. Je déteste cette idée, mais je la considérerai si quelqu'un peut me dire qu'elle est meilleure que d'autres idées et pourquoi.
Créez une table dynamique qui ajoute une nouvelle colonne à la demande si nécessaire. Je n'aime pas non plus cette idée car je pense que les performances seraient lentes à moins que vous n'indexiez chaque colonne.
Créez une table unique contenant UDFName, UDFDataType et Value. Lorsqu'un nouvel UDF est ajouté, générez une vue qui extrait uniquement ces données et les analyse dans le type spécifié. Les éléments qui ne répondent pas aux critères d'analyse retournent NULL.
Créez plusieurs tables UDF, une par type de données. Nous aurions donc des tables pour les UDFStrings, les UDFDates, etc.
XML DataTypes? Je n'ai jamais travaillé avec ces derniers mais je les ai vus mentionnés. Je ne sais pas s'ils me donneraient les résultats que je souhaite, surtout avec la performance.
Autre chose?