Modele requete mandat ad`hoc

2019-02-20 10:49

L`une des principales améliorations planifiées consiste à ajouter la possibilité d`interroger des attributs contenant du texte «long». Actuellement, la proportion de ces données dans TrialDB est assez modeste, mais nous pouvons prévoir qu`une partie importante de notre architecture est portable aux CPRSs, qui contiennent des volumes considérables de texte narratif, tels que des sommaires de décharge et des notes chirurgicales. MS SQL Server et Oracle prennent en charge l`indexation de texte intégral et la requête robuste de texte narratif, y compris le «classement de pertinence» 25 des résultats retournés. L`interface de programmation SQL ServerSQL Server est nettement plus fonctionnelle et plus facile à utiliser que celle d`Oracle, mais les deux moteurs sont en retard sur les moteurs d`indexation de texte dédiés tels que dtSearch, qui peuvent être appelés à partir de n`importe quelle interface de programmation prenant en charge Microsoft Modèle d`objet commun. Nous accumulons de l`expérience avec dtSearch, et commençons à comparer ses performances par rapport à celle de SQL Server. Le temps d`exécution des requêtes s`exécute actuellement de 30 s à 2 min, mais ces chiffres s`appliquent uniquement aux requêtes exécutées isolément. L`exécution de la requête est sérialisée: une fois qu`une requête commence à s`exécuter, elle verrouille les ressources du serveur Web jusqu`à ce qu`elle soit terminée, afin qu`une autre requête doive attendre la fin de la requête précédente. Notre conception actuelle du système a supposé une concurrence faible, car seuls quelques administrateurs privilégiés et formés sont autorisés à effectuer une requête ad hoc. L`architecture globale de l`interface de requête ad hoc pour TrialDB. Dans cette architecture «à trois niveaux», l`application réside sur un serveur Web, qui se trouve entre le navigateur Web et la base de données.

Une spécification de requête basée sur XML est générée par le navigateur via l`interaction de l`utilisateur avec les métadonnées et la recherche/identification des attributs d`intérêt. Cette spécification est ensuite vérifiée pour l`exactitude, et convertie en un plan d`action qui génère SQL pour créer plusieurs tables temporaires dans la base de données, qui peut être visualisée par l`utilisateur. La génération SQL se fait à l`aide de métadonnées et de «modèles de code», qui sont des macros paramétrables. Les requêtes peuvent être enregistrées pour une réutilisation ultérieure par toute personne disposant de privilèges de requête pour cette étude. Pour fournir une interface qui répond rapidement aux actions de l`utilisateur, une grande partie de notre code modifie directement le contenu des pages HTML dans le navigateur Web sans un aller-retour vers le serveur. Le modèle de programmation pour le faire (HTML dynamique) varie très grandement entre Netscape et MS Internet Explorer (IE), presque au point d`incompatibilité mutuelle. Nous avons choisi de s`engager à IE, et notre interface utilise des fonctionnalités spécifiques à IE qui simplifient grandement la programmation. Dans IE, les tableaux HTML illustrés à la figure 2 ? sont des objets «de première classe» qui permettent l`ajout et la suppression programmatiques de lignes sans allers-retours. Deuxièmement, la fonction ShowModalDialog () d`IE permet à une page Web d`appeler une autre en tant que sous-routine; ce dernier renvoie une chaîne qui peut être analysée et utilisée pour remplir directement le contenu d`un ou plusieurs contrôles (par exemple, les listes dérouleurs) dans la page appelante. Cette fonction permet essentiellement la création d`une interface réactive à deux niveaux tout en utilisant une architecture à trois niveaux. Enfin, IE fournit une prise en charge programmatique riche pour le modèle DOM (Document Object Model) XML, alors que Netscape a récemment commencé à le faire.

Lorsque le serveur publie un schéma, tout à coup, toute une série d`outils et de plugins deviennent possibles, ce qui peut commencer à résoudre les problèmes fondamentaux de l`utilisation des API. En fait, cela rend soudainement un serveur GraphQL + système client mieux, même si vous n`avez pas eu à faire des ”requêtes” et pourrait avoir juste obtenu loin avec REST simple. Comme indiqué précédemment, une faiblesse du système actuel réside dans ses caractéristiques de performance. Le temps requis pour les requêtes existantes est actuellement considéré (à peine) acceptable, mais cela est en partie dû à une faible simultanéité.