IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JDBC Java Discussion :

Besoin de clarification sur comment marche un SGBD et pourquoi on en a besoin


Sujet :

JDBC Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 39
    Points
    39
    Par défaut Besoin de clarification sur comment marche un SGBD et pourquoi on en a besoin
    Bonjour,
    je suis débutant en java, et autodidacte en programmation (autrement dit je maîtrise un peu les bases, en l'occurrence en R et en Python, mais je n'ai pas de formation bien rigoureuse), et je me pose des questions sur les rapports entre java et les bases de données. Pour me faire comprendre, le plus simple est je crois de vous expliquer mon problème concret.

    Mon objectif est à terme de créer une application Android, capable de gérer des comptes domestiques. Avant toute chose, bien sûr je me doute que ça existe plus ou moins déjà, mon but est de créer la mienne, par curiosité personnelle et pour apprendre à créer une appli au passage. Donc pas besoin de m'indiquer des applis existantes.

    Pour faire cela, il semble que Android Studio soit un logiciel approprié, et apparemment, ça demande de savoir programmer en java, donc en avant, je me suis lancé dans l'apprentissage. J'ai encore pas mal de difficultés, mais je commence à saisir le principe des classes, des objets etc. J'ai un peu plus de mal quand on commence à parler de compilation/exécution, mais ça devrait venir.

    Ayant terminé de lire plusieurs cours pour débutant, je me suis donc lancé dans ce qui me semblait une première étape raisonnable: coder un programme en java qui fasse ce que je veux, sans me préoccuper pour le moment d'Android. L'idée est qu'une fois qu'il sera opérationnel, je me lancerai dans les deux opérations suivantes, à savoir le rendre accessible depuis un terminal android, et le rendre accessible depuis plusieurs terminaux.

    En commençant à réfléchir, il m'est apparu (n'hésitez pas à me détromper) que j'avais en fait besoin d'une BDD. En fait je veux pouvoir demander au programme:
    -qui a dépensé quoi au total
    -combien le foyer a dépensé pour un type d'opération (par exemple facture EDF)
    -combien le foyer a dépensé depuis une date
    -des combinaisons de tout ça, et éventuellement quelques calculs du genre qui doit combien à qui.

    Pour ça, le plus simple me semble donc de disposer d'une BDD contenant une ligne pour chaque dépense/recette, avec des colonnes date, montant, personne concernée, sujet de l'opération. Le programme java aurait pour rôle de demander à l'utilisateur ce qu'il veut faire, puis de transmettre la requête à la BDD (entrer une dépenses, demander toutes les dépenses de X....), de réaliser les calculs éventuels, et de retourner un message à l'utilisateur (Par exemple "X a dépensé 50 € depuis le 23/04/2019").

    C'est là que je commence à ramer. J'ai bien saisi que la BDD était indépendante de Java, et qu'elle avait besoin qu'on lui parle en "SQL", que je ne maitrise pas vraiment mais qui a l'air assez simple. J'ai aussi compris que pour faire ça, il fallait un SGBD comme MySQL, mais j'ai beaucoup plus de mal à comprendre son rôle. Je crois qu'en fait ma question est: pourquoi je ne peux apparemment pas simplement avoir un fichier SQL, et dire à java de lui parler en SQL? à quoi sert le fameux SGBD?
    Je pourrais me contenter de savoir que ça marche et basta, mais mon souci est que je veux à terme que mon programme soit installable "facilement". Autrement dit, je ne veux pas que tous les utilisateurs doivent installer MySQL sur leur machine par exemple.

    Par ailleurs, vu le caractère amateur de ce projet, il n'est pas dans mon idée d'avoir un serveur dédié. Je souhaiterais, si c'est possible, utiliser un service de Cloud pour stocker la BDD (type dropbox partagée), afin qu'elle soit disponible en permanence pour les utilisateurs, qui disposeraient sur leur machine d'un accès à ce service de cloud, et du programme java.

    Voilà, comme vous le voyez, ma question n'es pas très claire et j'en suis désolé, je crois que j'ai surtout besoin qu'on m'expliquer pourquoi j'ai tant besoin d'un SGBD, et comment faire pour que ce soit relativement transparent pour l'utilisateur du programme. J'ai tenté de lire la FAQ, et d'autres choses, mais je m'y perds un peu, d'où mon message. Désolé si je suis hors sujet ou trop peu clair, je fais de mon mieux et j'essayerai de clarifier au fil des réponses.

    Merci beaucoup!

    François

  2. #2
    Membre expérimenté Avatar de Cincinnatus
    Homme Profil pro
    Développeur d'applications métier
    Inscrit en
    Mars 2007
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur d'applications métier
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2007
    Messages : 592
    Points : 1 679
    Points
    1 679
    Par défaut
    Bonjour,

    Un SGBD est un Système de Gestion de Bases de Données. Autrement dit, son rôle est de garantir la disponibilité, la sécurité des données. Il s'agit de contrôler qui y accède, qui les modifie ; il faut aussi assurer la cohérence et l'intégrité des données, gérer la concurrence des accès... Je ne vais pas faire un cours, il y en a par exemple ici : https://sgbd.developpez.com/cours/

    En deux mots : il s'agit, pour une base unique et centralisée, de garantir l'intégrité et l'unicité des données. Est-ce utile de centraliser des comptes domestiques ? Une base locale serait peut-être plus indiquée.

    De toute façon, pour Android, soit la base est locale et c'est sqlite, pas MySQL, soit c'est sur un serveur, et ça peut être MySQL ou autre, mais pas de dropbox...
    Au niveau architecture, tu as, dans le cas où l'application est sur le terminal,
    - l'application sur le terminal Android, développée en Java ou autre,
    - la base de données distante, quelle qu'elle soit.


    ref :
    https://alm.developpez.com/cours/
    https://developer.android.com/traini...ge/sqlite#java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 24
    Points : 39
    Points
    39
    Par défaut
    Bonjour, et merci pour ta réponse. En fait, j'ai bien conscience que le mieux serait de lire plein de cours, mon souci est que je viens de me taper pas mal de lecture sur java, et que j'aimerai passer un peu à la pratique avant de me replonger dans la théorie. D'où le fait que j'essaye d'avoir une idée du rôle des SGBD pour mon cas concret, pas une connaissance détaillée pour l'instant.

    J'ai bien compris la première partie de ton message, je me suis un peu perdu sur la fin, en particulier la signification exacte de "local" vs centralisé. En gros, j'ai besoin que ma base soit accessible par au moins 2 personnes, avec deux appareils différents, et probablement deux OS différents. Tout bêtement, je veux reproduire a minima ce que j'ai, à savoir un Excel sur un dossier partagé dropbox.
    Dans ma tête, "local" veut dire "stocké sur la machine qui fait tourner l'application". Ca ne me va pas, car j'ai besoin que l'utilisateur 1 puisse modifier la BDD quand l'utilisateur 2 a éteint sa machine, et vice versa. Le tout bien sûr, avec une base qui reste la même pour les 2. Mais peut-être que local ne veut pas vraiment dire cela?

    Pour la suite, je veux bien que vous me disiez si j'ai compris:
    -soit ma base est stockée sur la machine, et dans ce cas, si l'OS est Android je dois utiliser une autre SGBD à savoir SQLite. Autrement dit il y aurait un SGBD unique pour Android, alors qu'il y en a plusieurs pour d'autres plateformes. Mais de toute façon, on en revient au fait que je veux stocker ma base ailleurs que sur la machine.
    -soit ma base est stockée sur un serveur et là je peux utiliser MySql. Ma question est alors: pourquoi mon dossier dropobx partagé ne peut pas servir de serveur? Est-ce que ma seule solution est de disposer d'un serveur allumé en permanence (aka une solution que d'une part je ne maîtrise pas et que d'autre part je devrai certainement payer)?

    Encore merci pour votre aide,

    François

  4. #4
    Membre régulier Avatar de openlowcode
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2019
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2019
    Messages : 40
    Points : 94
    Points
    94
    Par défaut
    On va faire simple: tu veux stocker de la donnée structurées (des enregistrements avec des champs...), tu utilisent une base de données. Les plus simples / moins chères / plus répandues sont les bases de données mariaDB / MySQL. En prenant une base de données cloud, tu mutualises le serveur avec d'autres applications, et donc, cela coûte un minimum.

    Tu peux aller faire un tour sur OVH pour voir les prix.
    Open Lowcode Applications sur mesure, résultats rapides et à coûts réduits (repo Github)

Discussions similaires

  1. Réponses: 0
    Dernier message: 10/03/2011, 10h22
  2. Réponses: 12
    Dernier message: 29/08/2010, 18h39
  3. Besoin d'aide sur comment partir avec mon projet
    Par brutus111 dans le forum Développement 2D, 3D et Jeux
    Réponses: 17
    Dernier message: 01/09/2006, 12h08
  4. Les SGBD OPEN sources sur le marché
    Par inseaiste dans le forum Décisions SGBD
    Réponses: 16
    Dernier message: 17/03/2005, 10h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo