Aller au contenu principal

Cours

Objectifs

Comment accéder aux données ?

Présentation

Langage dédié

Programmation Web et bases de données

Mapping objet-relationnel

https://www.fullstackpython.com/img/visuals/orms-bridge.png

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

Mapping objet-relationnel

https://miro.medium.com/v2/1*M9TQUWdTyN-br0JVnaP6kQ.jpeg

https://medium.com/@agpavlik/orms-in-javascript-c35f8a28db92

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é

  • 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é

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é

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

https://media.24ways.org/2018/fenn/sql-injection-1.gif

https://24ways.org/2018/securing-your-site-like-its-1999/

Injection SQL

https://media.24ways.org/2018/fenn/sql-injection-2.gif

https://24ways.org/2018/securing-your-site-like-its-1999/

Exploitation Maternelle

https://xkcd.arnaud.at/comics/327.jpg

https://xkcd.arnaud.at/327

as a service

https://hazelcast.com/wp-content/uploads/2024/12/diagram-iaas.svg

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

Pizza as a Service

https://miro.medium.com/v2/1*peN3l27025YUoY0FEqllVA.jpeg

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

Pizza as a Service

https://miro.medium.com/v2/1*WIxe9rvePZWX-VQgZDgMpQ.jpeg

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

Pizza as a Service

https://miro.medium.com/v2/0*cXOCRUl1xOyVmzrb

https://medium.zenika.com/pizza-as-a-service-les-differents-modeles-du-cloud-b18ffaa6906c

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

  • DBaaS (Database as a Service) : gère le déploiement du DBMS.

  • Uniquement PostgreSQL, depuis 2020.

  • Alternatives : Firebase (Google), Neon DB, …

F pour passer en plein écran ou O pour afficher la vue d'ensemble.
Versions sans animation, plein écran, imprimable.

Références