Passer au contenu principal

Qu’est-ce que le mappage relationnel d’objets (ORM) ?

Le mappage relationnel d’objets (ORM) est le processus d’extraction de la connexion entre les entités du langage de programmation (objets) et les éléments de base de données correspondants.

Lors de la création d’applications, les programmeurs définissent des objets dans le code qui correspondent à des concepts du monde réel. Les données d’objets sont manipulées dans le code, mais stockées dans une base de données telle que définie par la conception du système de données. Par exemple, vous pouvez avoir un objet client contenant des informations sur le client dans votre code, mais la base de données sous-jacente peut stocker ces données dans plusieurs tables.

Le mappage relationnel d’objets est une couche logicielle qui traduit les données des objets vers la base de données sous-jacente, en extrayant les détails de la base de données du programmeur. De cette façon, le code reste inchangé même si les bases de données sous-jacentes sont remplacées par des conceptions nouvelles ou différentes. Le mappage relationnel d’objets permet de créer des applications modulaires faciles à gérer et à maintenir.

Comment fonctionnent les mappages relationnels d’objets ?

Les mappages relationnels d’objets (ORM) connectent des applications écrites dans un langage de programmation orientée objet (OOP) à une base de données sous-jacente. Ces types d’applications et de bases de données sont souvent utilisés ensemble, mais chacun gère les données différemment. L’ajout d’un mappage relationnel d’objets entre eux permet à chacun d’envoyer des données dans un format compréhensible par l’autre. Vous pouvez modifier l’un sans affecter l’autre.

Langage de programmation orientée objet

Les langages OOP organisent les données en objets, qui sont des structures de code dotées d’un ou de plusieurs attributs. Par exemple, dans une application OOP, vous pouvez définir un objet représenté sous la forme d’une classe à données persistantes, telle qu’une voiture, avec des attributs tels que la marque, le modèle, le numéro d’identification du véhicule, la couleur et le kilométrage.

Parmi les langages de programmation orientée objet (OOP) les plus populaires, citons Python, Java, JavaScript, et .NET/C#.

Bases de données relationnelles

Les bases de données relationnelles structurent les données dans des tableaux, comme une série de feuilles de calcul connectées. Chaque tableau se compose d’un ensemble de colonnes contenant des enregistrements uniques dans chaque ligne.

Par exemple, votre base de données de véhicules peut contenir plusieurs tableaux. L’un d’eux peut contenir des données de marque, telles que la marque, le modèle et le numéro d’identification du véhicule. Un autre tableau pourrait stocker les attributs des voitures individuelles, tels que le propriétaire, la couleur et le kilométrage. Parmi les bases de données relationnelles les plus populaires, citons MySQL, PostgreSQL et SQL Server.

Dans le développement Web, un outil de mappage relationnel d’objets (ORM) convertit les données envoyées depuis une application orientée objet vers une base de données relationnelle sans que l’application sache comment ces données sont structurées dans la base de données.

Mappages relationnels d’objets

Vous pouvez créer un mappage relationnel d’objets, parfois appelé gestionnaire relationnel d’objets, qui indique à votre base de données où localiser toutes les données demandées par une application, même si chaque structure stocke ses données de manière différente. Lorsque votre application demande tous les attributs d’une voiture individuelle, l’ORM indique à la base de données comment récupérer toutes ces données dans plusieurs tables.

Comme les mappages sont extraits, si la structure de la base de données change ou si vous migrez vers une nouvelle base de données, l’ORM peut toujours pointer vers les données correctes avec un minimum de mises à jour.

Cadres ORM courants

Les outils ORM, ou cadres, sont disponibles pour la modélisation des données dans la plupart des langages de programmation orientée objet les plus populaires. Parmi les plus populaires, citons :

  • Hibernate pour Java
  • SQLAcademy pour Python
  • Entity Framework pour .NET/C#

Pouvez-vous utiliser un ORM avec une base de données non relationnelle ?

Non, les bases de données non relationnelles stockent les données dans différents formats et interagissent avec les applications de différentes manières. Le type de base de données non relationnelle le plus courant est une base de données documentaire. Les documents peuvent également avoir de nombreux attributs, similaires aux objets, mais ils ont des structures programmatiques différentes.

Parmi les bases de données non relationnelles les plus populaires, citons MongoDB et NoSQL.

Quelle est la différence entre ORM et ORDBMS ?

Un système de gestion de base de données relationnelle (ORDBMS) est un type de base de données qui utilise des éléments de cadres relationnels et orientés objet. Il peut stocker des enregistrements structurés sous forme d’objets similaires à ce que vous pouvez coder dans un langage OOP. Mais vous pouvez également effectuer des requêtes relationnelles de type SQL sur ces enregistrements. Cette combinaison de fonctionnalités vous permet de stocker un plus large éventail de types de données que ce qui est possible dans une base de données relationnelle standard.

Alors qu’un mappage relationnel d’objets (ORM) est une extraction de données qui fonctionne au niveau de l’application, un ORDBMS fournit des fonctionnalités orientées objet directement au niveau de la base de données.

Les ORM s’exécutent dans le code de votre application et génèrent du code SQL en arrière-plan. ORDBMS gère le stockage des données et l’exécution des requêtes au niveau de la base de données, avec un support natif pour les types d’objets avancés.

Quelle est la différence entre un ORM et le SQL ?

Le SQL (Structured Query Language) est le langage standard utilisé pour interagir avec les bases de données relationnelles. Il vous permet de créer et de gérer des schémas de base de données, d’insérer et de mettre à jour des données et d’interroger des enregistrements à l’aide de commandes déclaratives.

Le SQL permet un contrôle direct et de bas niveau de la base de données. Un ORM fournit une interface de niveau supérieur et plus abstraite, ce qui accélère souvent le développement et facilite la maintenabilité du code.

Un ORM est idéal pour simplifier les tâches courantes des bases de données et s’aligner sur le code de l’application, mais le SQL reste essentiel lorsque vous avez besoin d’un réglage des performances, de requêtes complexes ou d’un contrôle total de l’accès aux données.

Pourquoi utiliser un ORM au lieu de requêtes SQL ?

Le SQL vous oblige à écrire des commandes manuellement pour interagir avec la base de données, tandis qu’un ORM traduit automatiquement votre code orienté objet en SQL en arrière-plan.

Les ORM permettent de réduire la quantité de codage nécessaire pour développer un programme orienté objet qui doit effectuer de nombreuses requêtes de base de données. Au lieu de programmer manuellement de nombreuses requêtes de base de données qui devront être gérées, vos développeurs programment comment envoyer des requêtes à l’ORM.

Le fait de travailler dans un langage de programmation plus compréhensible facilite également la lecture et le débogage du code.

Quels sont les avantages de l’utilisation du mappage relationnel d’objets ?

Les systèmes ORM présentent les avantages suivants.

Développement plus rapide d’applications

Les ORM permettent de récupérer des données complexes à l’aide d’un code compréhensible dans le langage OOP que vos développeurs connaissent le mieux. Ils peuvent gérer les opérations de routine de base de données, telles que la création, la lecture, la mise à jour et la suppression d’enregistrements (CRUD), de telle sorte que vos développeurs ne doivent pas coder ces opérations à plusieurs reprises dans votre application.

Maintenance simplifiée des applications

En extrayant les requêtes de base de données via un ORM, les développeurs peuvent travailler dans un langage unique, ce qui facilite la compréhension et la maintenance de leur code.

Sécurité renforcée

Une attaque par injection SQL est une tentative malveillante d’accès à des données privées en envoyant des requêtes SQL via des formulaires utilisateur sur l’application. Les ORM utilisent des requêtes paramétrées qui envoient d’abord à votre base de données une requête contenant des valeurs d’espace réservé, et non des données réelles (p. ex., ? ou :param). Les données réelles sont envoyées séparément. De cette manière, les entrées de l’utilisateur sont traitées comme des données et non comme du code SQL exécutable. L’utilisation d’un outil ORM empêche donc l’accès non autorisé aux données par injection SQL.

Performances améliorées

Un ORM peut améliorer les performances du système en activant la mise en cache transparente des objets au niveau de l’application. Il peut enregistrer les données les plus fréquemment récupérées plus près de l’application pour un accès plus rapide.

Quels sont les défis liés à l’utilisation de mappages relationnels d’objets ?

Les ORM présentent les défis suivants.

Incohérences d’impédance

Les structures de données complexes peuvent être difficiles à mapper entre les programmes orientés objet et les bases de données. Les hiérarchies qu’il est possible de coder dans la programmation orientée objet peuvent être très difficiles à représenter dans une base de données, quelle que soit la complexité de votre ORM.

Problèmes de performance de plus en plus complexes

L’interrogation directe d’une base de données est plus efficace en termes de calcul que l’utilisation d’un ORM. Pour les requêtes très complexes, il peut être plus efficace d’utiliser du code SQL plutôt qu’un outil de mappage relationnel d’objets (ORM).

Courbe d’apprentissage

Bien que les ORM vous évitent de devoir apprendre du code SQL complexe, vos développeurs devront tout de même apprendre à utiliser les outils ORM.

Quand devez-vous utiliser les mappages relationnels d’objets ?

Comme un outil ORM extrait et automatise les requêtes de base de données, vos développeurs peuvent concentrer davantage leurs efforts sur l’application plutôt que de coder des requêtes potentiellement complexes. Envisagez d’utiliser un ORM lorsque :

votre application comporte de nombreux objets.

La création manuelle de requêtes pour des interfaces et des structures d’objets complexes peut être une tâche fastidieuse. Permettre à un outil ORM de mapper des objets aux données stockées dans votre base de données peut permettre une extraction précise plus rapide et plus fiable.

Votre application répète des requêtes de base de données similaires

Les ORM peuvent facilement automatiser de nombreuses opérations CRUD de routine (créer, lire, mettre à jour et supprimer des données), ce qui vous permet de réduire le code SQL nécessaire.

L’évolution du schéma est en cours

Si votre modèle de données continue d’évoluer, un ORM peut vous aider à gérer plus facilement les modifications du schéma de base de données. De nombreux ORM incluent des outils de migration qui vous permettent de versionner, d’appliquer des modifications de manière structurée et de réduire le risque d’incohérence entre les environnements.

La portabilité des bases de données compte

Un ORM est une couche d’extraction qui sépare délibérément les opérations invoquées par votre application d’une base de données spécifique. Bien qu’elle ne garantisse pas une portabilité totale, cette extraction réduit les efforts nécessaires pour passer d’un système à l’autre. Ainsi, par exemple, si votre application automobile doit passer d’une base de données MySQL à PostgreSQL, vous ne devrez pas réécrire l’intégralité de l’application. Il vous suffit d’apporter des modifications mineures à votre ORM si l’une des tables change.

Dans quels cas ne devez-vous pas utiliser les mappages relationnels d’objets ?

Bien qu’il s’agisse d’outils puissants, les mappeurs relationnels d’objets ne constituent pas toujours la meilleure solution.

Pour des interactions simples avec les bases de données

Si vous créez une application qui n’effectue que des opérations CRUD simples, le temps et les efforts nécessaires pour gérer un ORM peuvent être plus importants que la simple gestion manuelle des requêtes dans votre application.

Quand le calcul haute performance est essentiel

Pour de nombreuses applications, le temps de calcul et les ressources supplémentaires ajoutés par un ORM ne sont pas pertinents. Mais pour des tâches telles que l’analytique en temps réel, où les millisecondes comptent, cela peut ne pas être acceptable.

Quand vous devez utiliser des schémas dénormalisés

Dans certaines situations, vos développeurs souhaiteront peut-être conserver des données redondantes sur plusieurs tables de vos services Web de bases de données, appelées schémas dénormalisés. Cela peut améliorer les performances lorsqu’une application doit effectuer des requêtes relationnelles complexes qui joignent de nombreuses tables. Le mappage de ces requêtes dans un ORM n’est pas toujours efficace.

Comment AWS peut-elle vous aider pour vos besoins en matière de gestion des données ?

AWS propose une gamme de solutions de bases de données cloud qui rendent la gestion des données efficace et rentable.

Amazon Relational Database Service (Amazon RDS) est un service géré qui facilite la configuration, le fonctionnement et la mise à l’échelle d’une base de données relationnelle dans le cloud. Ce service fournit une capacité économique et redimensionnable, tout en gérant les longues tâches d’administration de base de données. Pour que vous puissiez pleinement vous consacrer à vos applications et à votre activité.

Amazon Aurora est un service de base de données relationnelle moderne qui offre des performances et une disponibilité élevées à grande échelle. Il propose des éditions entièrement open source compatibles avec MySQL et PostgreSQL ainsi qu’une gamme d’outils de développement pour créer des applications sans serveur et pilotées par machine learning (ML).

Amazon Redshift offre des solutions d’analytique des données modernes à grande échelle, avec des performances tarifaires jusqu’à trois fois supérieures et avec un débit sept fois supérieur à celui des autres entrepôts de données dans le cloud.

Amazon DocumentDB (compatible avec MongoDB) est une base de données documentaire d’entreprise rapide, évolutive, hautement disponible et entièrement gérée qui stocke les données dans des documents similaires à des objets JSON. Ils utilisent les pilotes renvoyés par les objets natifs au langage de programmation utilisé par le développeur, éliminant ainsi le besoin d’outils ORM.

Démarrez avec les bases de données sur AWS en créant un compte gratuit dès aujourd’hui.