Datenbanken im Webspace

Beschränkungen bei Datenbanken im Webspace

Ein meist falsch verstandenes Thema im Web ist die Datenbank MySQL!

Immer wieder trifft man bei Installationen von Scripten oder Programmen auf die Aussage, „Neue Datenbank erstellen“ und „Tabellen einladen“.  Mit 3-4 Installationsprogrammen, die diese Aussage treffen, kommt man an das Limit, des vom Hoster für Ihren Web-Account zugelassenen Datenbanken.

Bei vielen Hostern die Anzahl der zu definierenden Datenbanken beschränkt. Je nach „Miete“ des Webspaces dürfen Sie 1-10 Datenbanken anlegen.

So kommt es dann zu Aussagen, wie „ich muss erst mal schauen, welche Datenbank ich noch frei habe“ u.ä.

Ich möchte Ihnen hier zeigen, dass die Datenbank eigentlich gar keine Beschränkung ist! Soviele Daten und  Tabellen können Sie gar nicht haben, damit MySQL an ein Limit stößt. Es sei denn, der Entwickler des zu installierenden Programms hat es sich leicht gemacht.

Machen wir ein Beispiel:

Sie laden sich eine Software herunter und bezahlen auch noch dafür. Diese Software wird Tabellen in einer Datenbank definieren.  Es kommt nun auf den Entwickler der Software an, was er Ihnen anbietet. Denn irgendwo müssen Sie eintragen, auf welche Datenbank Sie zugreifen.  Dazu ist es notwendig, dass Sie die Daten Ihrer Datenbank parat haben.

Der Zugriff auf eine Datenbank geschieht immer mit folgenden Bewertungen:

1.) Angabe des Datenbank Hosts (meist eine vom Hoster vergebener Name). Im Falle Ihres PCs mit Server ist dies localhost.
2.) Angabe des Datenbank Benutzernamens, auch er wird vom Hoster vordefiniert.
3.) Angabe des Datenbank Passworts, auch hier wird dies vorgegeben, bzw. von Ihnen bestimmt
4.) Name der Datenbank: Hier können Sie auch gezwungen werden nicht völlig frei einen Namen zu vergeben.

Damit ist die Definition einer Datenbank gegeben, und der Entwickler kann in seinem Programm auf die Datenbank zugreifen. Schön und gut, aber!

Ich habe mir gerade letztens ein Programm zum Verwalten eines Abonnementsystems angesehen. Genau diese Daten sollte ich angeben. Und fertig. Das bedeutet doch die Definition einer Datenbank mit irgendwelchen Tabellen wie z.B. users! Wenn ich nun eine Datenbank habe und gesetzt den Fall nur eine Datenbank in meinem Webspace anlegen darf, bin ich dann aufgeworfen, wenn ich schon eine System wie z.B. Drupal habe, das auch eine Tabelle users hat! Installiere ich das Programm 1, dann mache ich mir Drupal kaputt und visa versa!

Das zeugt von schlechter Programmierung. So hatte ich auch ein Beispiel mit einem kostenpflichtigen Autoresponder, der genau das Gleiche definierte. Völlige Überlagerung von bestehenden Tabellen in der Datenbank.

Klar ist es schwerer, wenn man irgendein Handling im Programm einbauen muss, mit dem man Tabellen unterscheidet. Das Stichwort ist das Tabellenpräfix! Schauen Sie sich die Definition einer Blog Datenbank an: Im WordPress gibt es die Datei wp-config.php. Hier stellen Sie die obigen Zugriffsdaten zu Ihrer Datenbank ein.  Doch kommt dort auch die Zeile

$table_prefix  = ‚xxxx_‘;   // Nur Zahlen, Buchstaben und Unterstriche bitte!

Hier wird für jede Tabelle ein Tabellenpräfix definiert. Die obige Tabelle heißt somit nicht mehr users sondern xxxx_users!

Und schon können Sie alle Blogs die Sie haben in  eine Datenbank speichern. Sie wählen für jeden Blog ein anderes Präfix!

Damit erhebt sich die Frage: Wieviele Tabellen kann ich in Mysql in eine Datenbank speichern?

Diese Frage ist absolut nicht eindeutig zu beantworten, denn die Tabellen in einer Datenbank wie MySQL werden in Dateien auf dem Betriebssystem abgelegt. Damit gelten die Beschränkungen der Dateien bzw. der Dateigrößen im Betriebssystem. Nehmen wir beispielsweise Linux oder Windows als Betriebssystem, so kommen wir auf eine Größe von ca. 4 Terrabytes. Die Anzahl wie viele Dateien auf einem Betriebssystem gespeichert werden können, ist von diesem abhängig.  Aber bei 4 TB, finde ich, werden Sie die Grenze nicht erreichen.

Das bedeutet, Sie können alle 100 Blogs, die Sie betreiben innerhalb innerhalb einer einzigen Datenbank betreiben. Das Tabellenpräfix macht möglich: Jeder Blog hat eine eigene wp-config und somit ein anderes Präfix.

Die Blog-Software ist also hier ausreichend. Bei dem gefundenen Autoresponder und dem Abosystem ist das etwas anderes, sie definieren kein Tabellenpräfix, überschreiben somit ggf. vorhandene Tabellen in der Datenbank, was ziemlich schlimm ist! Derweil wäre es ein einfaches, ein Präfix im Programm zu verwalten!

Deshalb sollten Sie vorsichtig sein, wenn Sie Scripte installieren, die eine Datenbankanbindung haben. Wenn Sie kein Tabellenpräfix bewerten müssen, ist es schon schlecht. Es sei denn Sie sind bereit, mehr für weitere Datenbanken an Ihren Hoster zu zahlen.

Ist es aber nun gut, viele Tabellen in eine Datenbank zu definieren oder ist es besser mehrere Datenbanken mit weniger Tabellen zu definieren?

Sicherlich wird das Admin-Programm phpMyAdmin langsamer, wenn Sie 2000 Tabellen in einer Datenbank haben. Immer dann wenn alle Tabellen angesehen werden, wird das Programm länger brauchen. Im Betrieb einer Software, werden aber solche Zugriffe auf alle Tabellen in einer Datenbank höchst selten vorkommen. Deshalb scheidet dieses Argument aus.

Das Programm MySQL muss für jede Datenbank eine eigene Verwaltung aufbauen und die Zugriffe zu der Datenbank steuern. Dies geschieht meist über Speicherbereiche sog. Cashes, die das Programm schneller machen. Damit wären also für das Betriebssystem viele Tabellen in einer Datenbank besser als umgekehrt. Und wenn ein Betriebssystem weniger zu tun hat, dann läuft die Anwendung auch schneller.

Deshalb achten Sie immer darauf, dass bei zu installierenden Programmen, die Möglichkeit gegeben ist, ein Tabellenpräfix anzugeben, und organisieren Sie Ihre Datenbanken so, dass zusammengehörige Tabellen – auch unterschiedlicher Systeme – immer in der gleichen Datenbank liegen. Software ohne ein Tabellenpräfix würde ich nur dann kaufen, wenn man mir das Recht gibt, ein fehlendes Tabellenpräfix einzubauen.

Bernd Klüppelberg

6 Responses to Datenbanken im Webspace
  1. Jörg Rothhardt
    Dezember 30, 2010 | 17:10

    Guten Abend,
    Danke für den sehr gut erklärten Artikel. Sie haben das sehr gut erklärt und sicherlich vielen anderen sowie mir damit einen große Hilfe gegeben.
    Für Ihre zukünftigen Artikel wünsche ich Ihnen auch im Jahr 2011 ein glückliches Händchen sowie Gesundheit und viel Erfolg.
    Herzliche Grüße aus Schrakau
    Jörg Rothhardt

  2. bernd
    Dezember 30, 2010 | 17:27

    Guten Abend ebenfalls,
    danke für den netten Kommentar! Ich versuche nur einige sich eingebürgerten Forderungen zu entkräften und Einfacheres zu zeigen.
    Ihnen auch ein glückliches 2011.

    Grüße aus Mannhem
    Bernd

  3. Toni
    Januar 4, 2011 | 19:19

    Hallo Bernd,
    Dieser sehr interessante Artikel schildert sehr anschaulich, wie man auch mehrere Blogs auf einer Domain einstellen kann, vor allem, wenn nur wenige Datenbanken zur Verfügung stehen. (Für mein Paket bei Strato gerade mal 2 Stck.) Die sind schon jeweils mit einem Blog und einem Autoresponder belegt.
    Nun, bei Silverline (Confixx) habe ich das mal ausprobiert und die Datenbankdaten für einen zweiten Blog in die wp-config.php eingefügt. Lediglich die Präfix war eine andere. Den Blog konnte ich nach der Installation jedoch nicht im Browser aufrufen. Bekam die Fehlermeldung: ‚Error establishing a database connection‘ .
    Woran könnte das liegen?
    Auch von meiner Seite ein erfolgreiches und gutes Neues Jahr!
    Liebe Grüße

    Toni ;o))

  4. bernd
    Januar 4, 2011 | 19:25

    Hallo Toni,
    da musst Du einen anderen Fehler gemacht haben, z.B. ein Leerzeichen beim Datenbanknamen in der wp-config.php. Schau die Datei nochmals ganz genau nach! Wenn Du’s nicht findest, dann kannst Du mir die wp-config von
    beiden Blogs mal schicken, ich schau mal nach. Die PW’s da drin kannst Du ja mit xxx ausfüllen. Das muss so klappen

    Gruß
    Bernd

  5. Toni
    Januar 4, 2011 | 21:38

    Hallo Bernd,
    das habe ich, wie schon geschrieben, nur mal testweise ausprobiert und danach wieder gelöscht.
    Demnach könnte man doch auch einen Blog doppelt in verschiedene Unterverzeichnisse installieren und lediglich eine andere Präfix zuweisen?
    Apropos Unterverzeichnisse. Den Blog bei Silverline habe ich direkt ins Hauptverzeichnis …/html hochgeladen und wollte ihn nachträglich in ein Unterverzeichnis …/html/Blog kopieren. Bekam ihn dann aber auch nicht angezeigt. (Das Unterverzeichnis hatte ich in der URL angegeben). Müsste ich dann in der Datenbank Veränderungen vornehmen?
    Danke Dir für Dein Angebot und die wertvollen Tipps.
    Habe mir auch andere Artikel von Dir angesehen, die alle sehr interessant und informativ sind.

    Gruß
    Toni

  6. bernd
    Januar 5, 2011 | 05:53

    Hallo Toni,
    mir scheint, Du hast in der Reihenfolge der Blog-Installation etwas verkehrt gemacht. Ich schicke Dir mal weitere Infos per Mail
    Gruß
    Bernd

Schreibe einen Kommentar