1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Konzeptfrage zur Datenbankanbindung

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von MrJack, 14.12.2011.

  1. MrJack, 14.12.2011 #1
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Hallo Forum,

    habe mehrere Fragen zur MySQL-Datenbankanbindung.
    Ich habe schon des öfteren Tutorials gefunden, wo beschrieben wird wie man aus einer App mittels PHP (JSON) die Datenbankanfragen durchführt:

    1) PHP Skript erstellen (connect, query, close)
    2) In der Activity aufrufen und zurückgegebenenes JSON auswerten

    Meine Fragen:
    1) Wie performant ist diese Art der Datenbankanbindung, wenn - sagen wir - 1000 Benutzer gleichzeitig auf die Datenbank zugreifen
    2) Wie sieht das Ganze aus, wenn ich zig verschiedene Queries auf die Datenbank absetzen will (SELECT, INSERT, DELETE, UPDATE). Soll ich dann wirklich für jeden Query ein eigenes php-File erstellen (selectXyz.php, insertToXyz.php, ...)? Ist es dann wirklich von Vorteil, dass ich in jeder Datei immer ein connect - query - close durchführe?
    3) Muss ich diese php-Dateien am Server dann irgendwie sperren (.htaccess) und ist eine HTTPS-Verbindung ratsam?
    4) Gibt es vielleicht eine bessere Art auf die Daten zuzugreifen (WebService)?
    5) Jeder App-Benutzer sollte quasi ein eigenes Konto haben (ID), damit ich in der Datenbank eine Zugehörigkeit schaffen kann (user-Tabelle mit eindeutiger ID). Wie kann ich sowas umsetzen ohne dass man ein Benutzerkonto anlegen muss?

    Kurzer Hintergrund zur gewünschten App: Es sollen bestimmte Inhalte aus der Datenbank ausgelesen werden, jeder Benutzer kann Einträge posten, bewerten, favorisieren, Kommentare zu Einträgen schreiben.
    Deswegen brauch ich eine eindeutige Benutzerzugehörigkeit.

    Wenn ein Benutzer z.B. einen Eintrag favorisiert, soll das in der Datenbank gespeichert werden:
    Tabelle "favorites"
    Eintrag: userId = 1, entryId = 3
    Damit ist festgelegt, dass der User mit der ID 1 den Eintrag mit der ID 3 zu den Favoriten hinzugefügt hat.
    Kann man das zumindest so lassen?

    Danke
     
  2. swordi, 14.12.2011 #2
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    wenn du 1000 benutzer hast, die gleichzeitig mit der db arbeiten wollen, dann schau dir mal app engine an. php skripte werden da sicher überfordert sein.
     
    MrJack bedankt sich.
  3. MrJack, 14.12.2011 #3
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Danke für die schnelle Antwort.
    Was genau meinst du mit app engine? Und wie soll das dann funktionieren? Hast du gute Quellen oder Beispiele?
     
  4. nTraum, 14.12.2011 #4
    nTraum

    nTraum Junior Mitglied

    Beiträge:
    39
    Erhaltene Danke:
    9
    Registriert seit:
    07.11.2011
    Phone:
    HTC Sensation
    MrJack bedankt sich.
  5. swordi, 14.12.2011 #5
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    app engine bietet dir eine hohe skalierbarkeit. wenn du von 1000 benutzern gleichzeitig ausgehst, wirst du sowas mit sicherheit benötigen
     
    MrJack bedankt sich.
  6. MrJack, 14.12.2011 #6
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Cool, danke, werd ich mir mal ansehen

    Und wie siehts mit meiner Frage 5 aus? Kann mir da vielleicht auch wer weiterhelfen? (Benutzerverwaltung)
     
  7. nTraum, 14.12.2011 #7
    nTraum

    nTraum Junior Mitglied

    Beiträge:
    39
    Erhaltene Danke:
    9
    Registriert seit:
    07.11.2011
    Phone:
    HTC Sensation
    Ohne dein komplettes Modell zu kennen, ist das sehr schwer zu sagen. Die von dir vorgeschlagene Lösung ist typisch zur Darstellung von n:m Beziehungen: Ein Benutzer kann mehrere Favouriten haben und vice versa. Entspricht das dem, was du abzubilden versuchst?
     
  8. MrJack, 14.12.2011 #8
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Ja, das stimmt.
    Es geht mir aber eher um die Frage, wie ich es realisieren kann, dass jeder Benutzer, der die App verwendet, eine eindeutige ID bekommt, damit ich benutzerspezifische Informationen (wie eben z.B. Favoriten) speichern kann.
    Das Ganze natürlich ohne dass der Benutzer beim Start explizit einen neuen Benutzer anlegen muss.
    Oder soll ich beim 1. Start einfach nach einem Benutzernamen fragen?
    Ich weiß leider nicht, wie man sowas am besten macht.
     
  9. swordi, 14.12.2011 #9
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    naja du könntest die UUID nehmen, oder einen Google Account.

    hat alles vor- und nachteile
     
    MrJack bedankt sich.
  10. MrJack, 14.12.2011 #10
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Eine letzte Frage noch: Gibt's irgendwo ein richtig gutes Tutorial zu diesem Thema, das ich abarbeiten kann und genau meinen Anforderungen entsprechen würde?
     
  11. Tom299, 14.12.2011 #11
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Vielleicht kannst du auch die ANDROID_ID verwenden:
    Code:
    System.out.println("ANDROID_ID: " + Secure.getString(this.getContentResolver(), Secure.ANDROID_ID));
    
    Ich brauch auch eine eindeutige Identifizierung des Gerätes und bin darüber gestolpert. Da man die Handynummer wohl aus datenschutzrechtlichen Gründen nicht auslesen kann (hab ich mal irgendwo gelesen), ist mir bis jetzt nichts anderes bekannt, was ich sonst zur Identifikation verwenden könnte.
     
  12. Unicate, 14.12.2011 #12
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ok, angenommen wir wüssten nichts von der Google App Engine.

    Ab wie vielen Benutzern, würden sich die Anzahl der Benutzer merkbar auf die Performance auswirken?

    Sagen wir bei ca. 1-10 DB Zugriffe pro Request. Größere Seiten die mit irgendeinem PHP CMS laufen sollten das auch hinbekommen oder?
    Also ich glaube nicht das schon 1000 User einen Performance einbruch auslösen. Kennt da jemand genauere Zahlen?
     
  13. MrJack, 14.12.2011 #13
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Da fällt mir noch was auf: Wie mache ich dann am besten die Verbindung zwischen App Engine und Android? Webservice oder Restlet oder Hessian (kA was das ist)?
    Oder bin ich am besten dran, wenn ich gleich ein "App Engine Connected Android Project" erstelle (wie hier: Create a New Project - Google Plugin for Eclipse - Google Code)
    Dann bräuchte ich aber wieder einen Account für C2DM. Brauche ich das für meine Applikation?

    Ich bin irgendwie verwirrt :confused2:
     
  14. Unicate, 14.12.2011 #14
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ich empfehle einen Restservice in json.

    C2DM brauchst du nur, wenn du einen pushdienst benötigst. Und dieser funktioniert meines wissens nur, wenn der Username einen Account bei google hat.

    Gesendet von meinem HTC Desire HD mit Tapatalk
     
  15. MrJack, 14.12.2011 #15
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Ok, danke, hoffe ich bekomme es hin, ein paar Tutorials wären nicht schlecht gewesen. Ich finde zwar einige Beispiele, weiß aber nicht, inwiefern das jetzt mit Android und/oder App Engine zusammenspielt und ob das für meine Anforderungen das beste ist.
    Habe nämlich weder mit App Engine noch mit Rest Services Erfahrungen
     
  16. Unicate, 14.12.2011 #16
    Unicate

    Unicate Android-Experte

    Beiträge:
    473
    Erhaltene Danke:
    57
    Registriert seit:
    09.08.2010
    Ich hatte heute bei YouTube ein paar tutorials gefunden.

    Gesendet von meinem HTC Desire HD mit Tapatalk
     
  17. MrJack, 14.12.2011 #17
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Und nach was hast du da gesucht? Hab als einzig brauchbares das von der Google I/O gefunden, die benutzen aber das C2DM, hilft mir also nur bedingt

    Gesendet mit der Android-Hilfe.de-App
     
  18. MrJack, 15.12.2011 #18
    MrJack

    MrJack Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    67
    Erhaltene Danke:
    10
    Registriert seit:
    14.12.2011
    Phone:
    OnePlus One
    Kann ich dann Restlet verwenden? Ist ja ein Restservice mit JSON, oder?

    Gesendet mit der Android-Hilfe.de-App
     
  19. Fr4gg0r, 16.12.2011 #19
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Wer hat denn android ohne einen Google Account..
     
  20. swordi, 16.12.2011 #20
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    auch solche leute mag es geben.
     

Diese Seite empfehlen