Mettre en place une base de données #9
Labels
No Label
bug
duplicate
enhancement
help wanted
independant
invalid
module/autre
module/backend
module/desktop
module/docs
module/frontend
module/scripts
module/sesam-vitale
module/utils
open-source
question
to-triage
wontfix
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
No due date set.
Blocks
#13 Afficher les informations d'un médicament
P4Pillon/Krys4lide
Reference: P4Pillon/Krys4lide#9
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Description des techno possibles
SQL ou NoSQL ?
Je pense qu'au regard de la culture du milieu de la santé, s'appuyer sur une BDD relationnelle (SQL) sera plus approprié que de partir sur des technologies "NoSQL" comme MongoDB ou Redis.
Le gain "initial" de souplesse apporté par du NoSQL pourrait nous couter ultérieurement, et n'est plus aussi flagrant qu'il y a 10 ans, en particulier si l'on passe par un ORM.
ORMs
Diesel & SeaORM : les "gold standards" en Rust
Les deux principaux ORMs en Rust qu'on peut brancher sur des bases SQL sont Diesel et SeaORM. Ce sont des techno assez mature, avec des communautés grandissantes, qui paraissent donc tout à fait adapté à un projet industriel.
Une comparaison + détaillée de ces deux techno et de leurs paradigmes principaux sont disponibles ici : https://chatgpt.com/share/ab626995-737a-424b-a61f-6a4cc589547f
Les deux techno permettent de faire directement appel à des requêtes SQL bas niveau en cas de besoin, pour des situations où l'on souhaiterait se passer de l'ORM.
Les deux techno sont compatibles avec PostgreSQL, MySQL et SQLite.
Autres ORM
SGBD SQL
Pour info, je sais de source sûre --- une formation à ce logiciel--- que Winpharma se base sur MariaDB.
Tu aurais les raisons derrière ce choix @nicolas_floquet ?
Ça paraît ug choix assez logique pour un logiciel de cet âge là, en mode serveur local : Oracle c'est uh peu overkill pour un tel contexte, et MySQL (qui a, depuis, été forké pour devenir MariaDB) était largement leader à l'époque.
Postgres est devenu une référence industrielle ces 10 dernières années seulement, avant c'était nu peu un truc geek :p
Nous avions parlé de DuckDB qui est une base de données type fichier comme SQLite mais avec une implémentation plus stricte du SQL, dont voici un wrapper pour Rust. Les avantages de cette base de données est d'être très rapide surtout lors de grosse base de données. Il est aussi possible d'utiliser un support S3 (seulement en read only pour l'instant ou en mode copie par exemple pour la base de données des médicaments). Il est aussi possible d'utiliser PostgreSQL en backend.
OMOP a mis en place un schéma pour DuckDB.
Je pose la question naïvement mais pourquoi vouloir mettre en place un ORM plutôt que l'implémentation direct d'un wrapper autour de la base de données que l'on aura choisi ?
Merci @florian_briand pour tes explications entre les 2 ORMs je préfère SeaORM pour le côté async mais aussi le côté moins verbeux et donc plus lisible.
SeaORM n'est pas compatible pour l'instant avec DuckDB, n'hésitez pas à mettre un +1 à la demande.
En Rust, l'avantage d'un ORM c'est le typage des requêtes et des résultats de requêtes.
Ça offre donc des garanties + fortes sur la validité des interactions avec la DB que si on écrit du SQL brut. C'est donc + robuste et + facile à maintenir, tout en ne nous bloquant pas dans les situations où l'ORM est trop limité (ou dans les situations où VIDAL nous file des requêtes SQL pré-écrites)
J'ai aussi une petite préférence pour SeaORM, en particulier pour l'async et divers petits indices qui me font penser que l'API est un peu plus "moderne" que Diesel.
Ah, merci, j'ai cherché sans succès :)
J'avais, en effet, zappé cette discussion autour de DuckDB. Le gros inconvénient, ça me parait être l'absence d'ORM compatible, qui oblige à utiliser le wrapper que tu as identifié, et qui est très bas niveau.
Je vois l'avantage de la "simplicité" de setup de DuckDB : pas besoin d'installer un serveur de DB dans chaque poste client, par exemple. Ce qu'offre aussi SQLite ... mais sans la puissance de calcul que semble offrir DuckDB (cela dit, il faudrait vérifier si ces promesses valent sur des machines "modestes" ; car ils annoncent tout traiter en mémoire ... je me demande ce que ça donne sur des PC avec peu de RAM)
Après réflexion, je pense que partir sur SeaORM avec SQLite me parait être le plus pragmatique, nous simplifiant dans un premier temps le dev/déploiement.
Ca me convient 👍