Interrogation et gestion des données
Quels langages de requête le font Mendix Soutien?
Mendix propose plusieurs façons de spécifier les données que vous souhaitez récupérer :
- Mendix Studio Pro propose des moyens visuels pour spécifier vos besoins de requête via un éditeur d'expression
- Pour récupérer des objets spécifiques ou un ensemble d'objets associés, vous pouvez utiliser des expressions XPath
- Pour les besoins de reporting où l'agrégation et la jonction de plusieurs entités en un seul ensemble de résultats sont importantes, Mendix propose des requêtes OQL
- Une API Java est disponible si vous souhaitez utiliser des requêtes SQL sur la base de données de l'application
- Pour le partage de données avec d'autres applications ou outils d'analyse de données, Mendix offre un support prêt à l'emploi pour OData sur les entités de votre modèle de domaine
Vous trouverez plus de détails dans les sections ci-dessous.
XPath
XPath est un langage de requête simple à utiliser qui permet de récupérer des objets spécifiques. Vous pouvez l'utiliser pour obtenir les objets que vous souhaitez afficher ou modifier dans les pages ainsi que pour modifier ces objets via des microflows.
Avec XPath, vous pouvez définir des expressions pour filtrer les objets qui vous intéressent et utiliser des associations pour récupérer et filtrer les objets associés. Vous pouvez soit écrire vous-même les filtres XPath pour en avoir le contrôle total, soit utiliser un générateur XPath visuel pour simplifier leur création.
XPath garantit automatiquement que toutes les règles d'accès que vous définissez sur vos entités sont appliquées.
Pour plus de détails, consultez XPath dans le Mendix Guide de Studio Pro.

OQL
L'espace Mendix Object Query Language (OQL) est un langage de requête relationnelle basé sur SQL. Le principal avantage d'OQL par rapport à SQL est qu'il utilise les noms d'entité et d'association utilisés dans votre modèle au lieu des noms réels des tables de base de données.
Les entités de vue sont des requêtes OQL utilisables partout où une entité persistante est possible. Il est donc facile d'utiliser une requête OQL comme source pour un widget. Toutes les fonctionnalités par défaut d'un widget, comme le filtrage, le tri et la pagination dans le cas d'une grille de données, seront automatiquement appliquées à la requête OQL utilisée dans vos entités de vue. Cela simplifie l'utilisation des requêtes OQL comme source pour vos pages, graphiques et API. Les requêtes OQL utilisées dans les entités de vue peuvent être testées dans Studio Pro pour accélérer le développement.
OQL peut utiliser les relations prédéfinies (associations) pour joindre facilement des objets sans avoir à calculer quelles colonnes doivent être couplées. Malgré ces différences, de nombreux mots-clés SQL fonctionnent également dans OQL.
OQL peut être utilisé pour la création de rapports nécessitant des fonctions d'agrégation lors du regroupement de certains attributs. OQL est également utilisé pour la préparation de données plus complexes pour les pages et les graphiques. OQL permet également de découpler les API que vous publiez, REST et OData REST, des modèles de domaine sous-jacents. Un autre cas d'utilisation courant d'OQL est la définition d'expressions de sécurité personnalisées, qui doivent être définies manuellement.
Pour plus de détails, voir OQL dans le Mendix Guide de Studio Pro.

SQL
Toutes les données d'application sont stockées dans une base de données relationnelle. Mendix Cloud, il s'agit de PostgreSQL, mais il existe également d'autres options, en fonction de votre environnement de déploiement.
Mendix fournit des API Java pour interagir directement avec votre base de données de relations sous-jacente. Grâce à Mendix API Java : vous pouvez utiliser Java JDBC pour exécuter des requêtes SQL et exécuter des procédures stockées. Cela vous offre un moyen très puissant d'utiliser vos données, mais cela nécessite une compréhension des systèmes de bases de données relationnelles et de SQL. Vous pouvez utiliser des extensions spécifiques au fournisseur de bases de données, mais cela limitera la portabilité de votre application vers d'autres bases de données.
Pour plus d'informations sur l'accès à l'API JDBC depuis Mendix, Voir Stockage de données.executeWithConnection.
Une fois
OData fournit une interface générique d'accès et de requête de données sur le protocole REST. Il permet à une large gamme d'outils tiers d'accéder à vos données de manière contrôlée. Ces outils incluent des outils de requête de base comme LINQPad, des feuilles de calcul comme MS-Excel et des outils de veille stratégique et d'analyse comme PowerBI et R. En fournissant un accès via OData, toutes les contraintes de validation et de sécurité définies sur vos données et gérées par le Mendix L'exécution est garantie. Cela signifie qu'OData est un moyen sûr et sécurisé de fournir l'accès aux données à des parties externes.
API OData que vous définissez dans Mendix Prend en charge la lecture et la mise à jour des données. Les principales opérations REST : GET, PUT, POST et DELETE sont prises en charge. Vous pouvez définir une logique personnalisée pour chacune d'elles afin de garantir la validation correcte des données avant leur modification dans la base de données de l'application.
Vous pouvez également exposer les entités de vue sous forme d'API REST OData si vous souhaitez permettre à vos utilisateurs d'accéder aux données via des requêtes prédéfinies. L'un des principaux avantages de cette approche est de découpler vos API REST OData du modèle de données sous-jacent, ce qui vous permet de continuer à faire évoluer votre base de données tout en garantissant la stabilité de vos API OData.
Les API OData peuvent également exposer la logique de microflux sous forme d'actions OData, au cas où vous souhaiteriez que les utilisateurs de votre API accèdent à vos données via une logique prédéfinie.

Pour plus d'informations sur l'utilisation d'OData avec Mendix, voir le Transformez les données en informations avec Mendix Prise en charge OData et Utiliser R pour obtenir des informations à partir des données de votre Mendix Applications articles de blog
Comment puis-je optimiser mes requêtes ?
L'espace Mendix La plateforme offre de nombreuses optimisations prêtes à l'emploi. Par exemple, lors de la récupération de données pour vos pages via XPath, Mendix récupérera automatiquement toutes les informations associées utilisées sur la page en une seule fois. Un concept appelé schémas est utilisé à cet effet. Un schéma indique au composant de récupération de données de non seulement récupérer un ensemble spécifique d'objets de la base de données, mais également d'inclure des entités associées spécifiques dans le résultat.
Outre les requêtes optimisées, Mendix optimise également pour éviter la nécessité d'effectuer des requêtes. Cela se fait, par exemple, dans le client Web où les objets sont mis en cache et réutilisés sur plusieurs pages. Une autre optimisation effectuée dans le Mendix Le runtime utilise la connaissance de la structure de la page pour déterminer si des objets doivent être envoyés du runtime au client.
Si vous avez besoin de plus de contrôle, vous pouvez utiliser les entités de vue et les requêtes OQL pour optimiser vos requêtes. Les entités de vue remplaçant facilement les entités persistantes dans de nombreux cas, il est facile de créer une entité de vue pour une page ou un widget spécifique et de remplacer une entité persistante par une entité de vue. Les entités de vue sont particulièrement utiles lorsque vous devez extraire des données de plusieurs tables et que vous souhaitez exploiter l'optimiseur de base de données pour optimiser ces requêtes.
En plus de ces optimisations prêtes à l'emploi, vous pouvez suivre un certain nombre de mesures pour optimiser vos requêtes :
- Récupérez uniquement ce dont vous avez besoin, et assurez-vous de ne pas inclure d'attributs ou d'objets dans votre requête dont vous n'avez pas besoin
- Assurez-vous que vous avez index sur ce qui suit:
- Des colonnes qui sont régulièrement cherché ou filtré sur
- Colonnes utilisées pour tri
Dans certains cas, notamment lorsque vous disposez d'un grand nombre d'objets, il peut être utile d'utiliser des index spécifiques à la base de données. Vous pouvez les créer via l'API JDBC, comme décrit ci-dessus dans SQL.
Comment puis-je migrer des données depuis ma base de données existante ?
Vous souhaiterez peut-être utiliser des données existantes provenant d'anciens systèmes nonMendix applications dans votre nouveau Mendix application. Si vous avez besoin d'une migration ponctuelle dans votre Mendix application, vous avez les options décrites ci-dessous.
Module de réplication de base de données
L'espace Réplication de base de données module disponible à partir du Mendix Marketplace permet de se connecter à un grand nombre de types de bases de données différents. Il vous montrera quelles structures de données existent dans la base de données existante. Vous pouvez ensuite définir (via une page Web) les données que vous souhaitez migrer vers votre base de données. Mendix base de données. Vous pouvez également définir comment vous souhaitez mapper les données des colonnes existantes à vos attributs d'entité.
Connecteur de base de données
L'espace Connecteur de base de données Le module vous fournit des activités de microflux pour exécuter des requêtes sur n'importe quelle base de données avec prise en charge JDBC. Cela signifie que vous pouvez créer des microflux pour définir les données que vous souhaitez extraire de votre base de données existante ainsi que la manière dont vous souhaitez convertir ces données dans votre nouvelle base de données. Mendix .
Initialisation de votre base de données d'application à partir d'une base de données existante
Lors du déploiement d'un Mendix application pour la première fois, vous avez la possibilité de l'initialiser avec les données d'une application existante Mendix application. L'objectif principal de cette fonctionnalité est de permettre la migration d'un environnement à un autre (par exemple, à partir de Mendix Cloud vers un cloud privé). Une fois que vous avez migré votre cloud non privéMendix données dans Mendix données, vous pouvez utiliser ces données pour initialiser un nouveau Mendix application. Cela fonctionnera entre les bases de données du même fournisseur, et également lors du passage d'un fournisseur de base de données à un autre. Cela signifie que vous pouvez initialiser une base de données Azure SQL à l'aide des données d'une base de données PostgreSQL exécutée sur votre poste de travail.
Pour plus d'informations, voir Comment migrer votre Mendix Base de données et sauvegardes dans le Mendix Documentation.
Comment puis-je utiliser ma base de données SQL existante dans Mendix?
Vous pouvez utiliser le connecteur de base de données externe pour exécuter des actions SQL sur n'importe quelle base de données. Pour en savoir plus sur l'utilisation d'une base de données SQL existante, consultez Mendix, voir la rubrique Comment La Mendix Prise en charge de l'accès direct à une base de données SQL externe ? in Données externes.
À quoi servent les API Mendix Proposer d’étendre le comportement de stockage des données ?
L'espace Mendix Runtime fournit des API Java qui permettent d'étendre le comportement de stockage des données. Mendix garantit que n'importe qui dans votre équipe peut utiliser ces extensions en vous permettant de les fournir via des activités de microflow normales. Pour plus d'informations sur cette fonctionnalité d'extensibilité de Mendix, voir la rubrique Quel type d'API fait Mendix Exposer? in Ouverture (API et SDK).
Concernant l’extensibilité du stockage des données, les principales API Java fournissent les fonctionnalités suivantes :
- XPath – API pour récupérer à partir de la base de données à l'aide de requêtes XPath
- OQL – API pour récupérer des données de la base de données à l'aide de requêtes OQL
- SQL – API pour utiliser directement le sous-jacent Connexion JDBC Java pour exécuter tout SQL requis sur la base de données de votre application
- Gestionnaires d'événements d'entité – API à enregistrer écouteurs d'événements d'entité pour toutes vos entités, qui peuvent être utilisées pour extraire des informations d'audit ou effectuer une exportation en temps réel de toutes les modifications de données vers un système externe
Comment puis-je contrôler le pool de connexions ?
Vous pouvez configurer le nombre de connexions simultanées à la base de données par exécution à l'aide du paramètre personnalisé. ConnectionPoolingMaxActive.