Anzeige:
Ergebnis 1 bis 2 von 2

Thema: richtige Programmstruktur

  1. #1
    Registrierter Benutzer Avatar von h2o471
    Registriert seit
    15.09.2006
    Ort
    Luckenwalde / Brandenburg
    Beiträge
    14

    richtige Programmstruktur

    hallo alle miteinander,

    ich werde im juni für meine kunden ein shopsystem zur verfügung stellen. es ist soweit fertig, ich überlege nur ob ich die struktur ändern soll um es leichter wartbar zu machen.
    1. fall
    im moment meldet ein neuer user einen shop an und ich lege für ihn eine datenbank an (enthält nur 4 tabellen), und erstelle ihm in dem hauptordner einen ordner mit seinen programmdateien. Dh. ich kann die einzelnen shops genau an die user anpassen wenn diese es wünschen. jetzt hab ich mir folgende frage gestellt:
    kann ich vielleicht die ganzen kleinen datenbanken zusammenlegen? ich würde dann statt der "tbl_artikel" die "tbl_[username]_artikel" haben. mit welcher variante habe ich die beste performance?

    2. fall
    angenommen ich würde die ganzen user in nur einen ordner leiten und entsprechend der $_SERVER['HTTP_HOST']; verschiedene spezifische werte und tabellen aufrufen? wie siehts da mit der performance aus. vom standpunkt der wartbarkeit wärs ja ein riesensprung. :-)
    im ersten durchgang bis september erwarte ich um die 50 kunden.

    bis dann und danke für eure hilfe
    grüße aus heidelberg
    mirko jerschabek

  2. #2
    Registrierter Benutzer
    Registriert seit
    07.05.2007
    Beiträge
    656
    Zitat Zitat von h2o471 Beitrag anzeigen
    hallo alle miteinander,

    ich werde im juni für meine kunden ein shopsystem zur verfügung stellen. es ist soweit fertig, ich überlege nur ob ich die struktur ändern soll um es leichter wartbar zu machen.
    1. fall
    im moment meldet ein neuer user einen shop an und ich lege für ihn eine datenbank an (enthält nur 4 tabellen), und erstelle ihm in dem hauptordner einen ordner mit seinen programmdateien. Dh. ich kann die einzelnen shops genau an die user anpassen wenn diese es wünschen. jetzt hab ich mir folgende frage gestellt:
    kann ich vielleicht die ganzen kleinen datenbanken zusammenlegen? ich würde dann statt der "tbl_artikel" die "tbl_[username]_artikel" haben. mit welcher variante habe ich die beste performance?

    2. fall
    angenommen ich würde die ganzen user in nur einen ordner leiten und entsprechend der $_SERVER['HTTP_HOST']; verschiedene spezifische werte und tabellen aufrufen? wie siehts da mit der performance aus. vom standpunkt der wartbarkeit wärs ja ein riesensprung. :-)
    im ersten durchgang bis september erwarte ich um die 50 kunden.

    bis dann und danke für eure hilfe
    grüße aus heidelberg
    mirko jerschabek
    Zum Fall 1: Jeder Kunde hat ja nach wie vor seine eigenen Tabellen - das sollte eigentlich keinen Unterschied machen, die Frage ist nur, ob das DBMS (welches denn?) besser mit mehreren DBs oder einer großen DB skaliert. Das lässt sich IMHO nicht so allgemein beantworten. Folgende Parameter solltest Du u. a. bestimmen:
    a) wie viele Artikel / Kunden / Aufträge / Positionen erwartest Du?
    b) wieviel RAM hat Dein DBMS zur Verfügung?
    c) Wie läuft das Caching in Deinem DBMS ab?
    d) wie viele Anfragen / Aktualisierungen erwartest Du / Stunde und Kunde?
    e) Hast Du eine homogene oder heterogene Kundschaft (gibt es 40 Kunden mit 10 Aufträgen / Tag und 2 mit 1000? Oder haben die alle ungefähr gleiches Auftragsaufkommen?)
    Im Allgemeinen versuchen DBMS, so viele Daten (Tabellen) wie möglich in den RAM zu laden. Außerdem werden Anfragen so weit wie möglich im Cache vorgehalten, sowas erleichterst Du mit Prepared Statements (kann das Dein DBMS?).

    Zu Fall 1 + 2: Ich würde mir hier eher Gedanken um Datensicherheit machen als um Performance und Wartbarkeit. Wie sicher ist die Abfrage per $_SERVER['HTTP_HOST']? Kannst Du garantieren, dass da kein Kunde in den Daten des (möglichen) Mitbewerbers rumschnüffelt? Wenn Du verschiedene Kunden in einer DB hast, dann musst Du penibel auf die Zugriffsrechte auf die DB-Objekte achten - Du kannst einfacher verschiedene DBs gegenseitig abschotten als Tabellen innerhalb einer DB.

    Nur so als Denkanstoß - ohne genauere Infos über das zugrundeliegende DBMS und die Art und Weise, wie Du auf die Daten zugreifst (CGI? Servlets?, Prepared Statements? Connection-Pooling?...), ist eine halbwegs zuverlässige technische Bewertung eh nicht möglich.

    Jan

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •