Cours
Objectifs
Comment accéder aux données ?
Présentation
Langage dédié
Programmation Web et bases de donnéesLangage dédié
Mapping objet-relationnel
Mapping objet-relationnel

https://www.fullstackpython.com/object-relational-mappers-orms.html
Mapping objet-relationnel
Mapping objet-relationnel

https://medium.com/@agpavlik/orms-in-javascript-c35f8a28db92
Mapping objet-relationnel
Mapping objet-relationnel
Object-Relational Mapping (ORM)
Correspondance entre les relations (tables) et les objets (classes)
Avantages :
Abstraction de la base de données : gérer la base de données sans SQL.
Sécurité : éviter les injections SQL.
Inconvénients :
Complexité : mise en place et maintenance.
Performance : peut être moins performant que le SQL natif.
Exemples : SQLAlchemy (Python), Sequelize (JavaScript), Hibernate (Java), …
Langage dédié
Langage dédié
Domain-Specific Language (DSL)
Création d'un langage pour un context précis.
S'oppose aux langages généraux (General-Purpose Language) comme Python, JavaScript, …
Exemples : SQL, CSS, HTML, …
Embedded domain-specific language (eDSL) : un DSL intégré dans un langage général. Exemples : ORMs, …
Langage dédié
Langage dédié
markupy : écrire du HTML en Python
# Import "elements" like they were regular Python objects
from markupy.elements import A, Body, Head, Html, Li, P, Title, Ul
menu = [("Home", "/"), ("About us", "/about"), ("Contact", "/contact")]
print(
Html[
Head[Title["My website"]],
Body[
P["Table of contents:"],
Ul(".menu")[(Li[A(href=url)[title]] for title, url in menu)],
],
]
)
Langage dédié
Langage dédié
SQLAlchemy : écrire du SQL en Python
stmt = (
select(Address)
.join(Address.user)
.where(User.name == "sandy")
.where(Address.email_address == "sandy@sqlalchemy.org")
)
sandy_address = session.scalars(stmt).one()
Injection SQL
Injection SQL

Injection SQL
Injection SQL

Exploitation Maternelle
Exploitation Maternelle

as a service
as a service
https://hazelcast.com/foundations/software-architecture/infrastructure-as-a-service-iaas/
Pizza as a Service
Pizza as a Service

https://engineering.dunelm.com/pizza-as-a-service-2-0-5085cd4c365e
Pizza as a Service
Pizza as a Service

https://engineering.dunelm.com/pizza-as-a-service-2-0-5085cd4c365e
Pizza as a Service
Pizza as a Service
https://medium.zenika.com/pizza-as-a-service-les-differents-modeles-du-cloud-b18ffaa6906c
as a service
as a service
?aaS : ? as a Service
Plusieurs étapes pour déployer une application. Qu'est-ce qu'on délègue ?
Les principaux :
SaaS : Software as a Service - l'application tourne et on doit juste le configurer pour l'utiliser.
PaaS : Platform as a Service - on déploie notre application sur la plateforme, on gère le code mais pas l'infrastructure.
IaaS : Infrastructure as a Service - location de machines (virtuelles ou physiques) sur lesquelles on peut faire ce qu'on veut.
Supabase
Supabase
DBaaS (Database as a Service) : gère le déploiement du DBMS.
Uniquement PostgreSQL, depuis 2020.
Alternatives : Firebase (Google), Neon DB, …
Versions sans animation, plein écran, imprimable.