Performanceunterschied: alle Tabellen in einer DB oder verteilt auf mehrere DBs?

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Performanceunterschied: alle Tabellen in einer DB oder verteilt auf mehrere DBs?

    Hallo miteinander,

    geplant ist eine Datenbank zur Verwaltung von verschiedenen Kundendaten (Buchhaltung, Kontakte etc.). Dabei fallen einerseits Tabellen an, die fuer das ganze System benoetigt werden, andererseits wird es bestimmte Tabellen geben, die Pro Kunde/Mandant angelegt werden.

    Diese kann ich a) entweder ueber den Tabellennamen, mit geeignetem Präfix in die gleiche Datenbank schreiben wie die zentralen Tabellen, oder ich lege b) eine Datenbank pro Kunde/Mandant an (und spreche die verschiedenen Mandanten dann ueber den DB-Namen an).

    Bei der ersten Loesung wuerde ich an entsprechender Stelle einen Datenbankbenutzer benoetigen, der innerhalb der Datenbank Tabellen anlegen kann, im zweiten Fall sogar einen, der in der Lage ist Datenbanken anzulegen (und dann auf diese auch zugreifen kann). Schon rein Sicherheitstechnik, selbst fuer einen Backenduser doch ausserordentlich und auch bedenklich viel Rechte... wobei das zunaechst nicht so haeufig passieren wuerde... man koennte das also zunaechst auch direkt im DBMS loesen.

    Neben der Rechteproblematik frage ich mich, welche der beiden Loesungen von der Performance besser ist: alle Abfragen aus/in einer Datenbank, oder macht es da Sinn, das auf verschiedene Datenbanken eines DBServers zu verteilen?

    Gruss,
    Lenny
    Last edited by Lennynero; 09-09-2008, 21:13.

  • #2
    Neben der Rechteproblematik frage ich mich, welche der beiden Loesungen von der Performance besser ist: alle Abfragen aus/in einer Datenbank, oder macht es da Sinn, das auf verschiedene Datenbanken eines DBServers zu verteilen?
    Schau dir mal an wieviele Tabellen Anwendungen wie z.B. ein Wiki oder ein Forum in eine Datenbank schreiben. Also von der Performance her dürfte das kein grosses Problem sein. Von der Sicherheit her betrachtet würde es ggf Sinn machen pro Kunde eine DB und damit einen DB Benutzer anzulegen, damit die einzelnen Kunden zueinander abgegrenzt sind und kein Kunde mal eben so in die Tabellen des Konkurrenten blicken kann
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Comment


    • #3
      Original geschrieben von jahlives
      Schau dir mal an wieviele Tabellen Anwendungen wie z.B. ein Wiki oder ein Forum in eine Datenbank schreiben. Also von der Performance her dürfte das kein grosses Problem sein. Von der Sicherheit her betrachtet würde es ggf Sinn machen pro Kunde eine DB und damit einen DB Benutzer anzulegen, damit die einzelnen Kunden zueinander abgegrenzt sind und kein Kunde mal eben so in die Tabellen des Konkurrenten blicken kann
      Würd ich so nicht unterschreiben. Jemand der sich Zugang zu der Maindatenbank beschaffen hat kann das genau so gut für jeden User auch machen.

      Was performance angeht. Wirklich effizient ist nur anständiges Datenbankdesign. Bedeutet das du deine Datenbank durchstrukurierst, dadurch zB keine doppelten Einträge drinnen hast etc.

      Das es viele Tabellen sind ist MySql zwar nicht egal, aber stört es nicht gerade besonders

      Comment

      Working...
      X