php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Scripts > BRAINSTORMING PHP/SQL/HTML/JS/CSS
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


BRAINSTORMING PHP/SQL/HTML/JS/CSS Ihr habt eine Idee, aber keinen genauen Ansatz? Diskutiert mit anderen Usern des Forums über eure Gedankengänge um evtl. hilfreiche Ideen zu bekommen!
Normale Fragen bitte weiterhin in die entsprechenden Foren!

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 11-07-2009, 11:39
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard Datenbank Design und Backup Ablauf

Hallo,

Datenbank

Ich arbeite seit längerer Zeit mal wieder an einem Projekt was ich bis nächstes Jahr fertigstellen möchte. Das ganze ist ein Multi User System was eine ganze Menge Datensätze aus wenigen Tabellen Standhalten soll, dass ganze ließe sich allerdings auch gut in eigene Datenbanken aufteilen.

Meine Frage:
Ist es effizienter / schneller nur eine Datenbank zu benutzen oder die Datenbanken nach einzelnen Gruppen zu teilen, d.h. selbe Datenbank struktur in mehreren Datenbanken. Momentan kann ich mich allerdings nicht mehr über die Datenbank Struktur äußern.

Folgende Punkte konnte ich mir vorstellen, wie sieht die durchschnittliche Erfahrung bei euch aus?

Für eine Datenbank spricht:
- Weniger Datenbanken die die Serverleistung belasten
- Einfaches gesamt Backup

Für mehrere Datenbanken:
- Einfachere gezieltere Backups
- Schnellere Queries (weniger Datensätze zu durchsuchen)
- Sicherer (Datenbank crash betrifft nicht alle Kunden)

Backup

Bei mehreren Benutzern halte ich es für Pflicht ein vernünftiges Back up System zu laufen, allerdings habe ich noch keine Erfahrung damit gemacht, da ich bislang nicht in der größe programmiert habe.

1. Gibt es irgendwelche empfehlenswerte Informationsseiten, google liefert mir bei meinen Suchversuchen nicht viel relevantes.

2. Welche Technick sollte ich zum Backup verwenden? Es handelt sich nicht nur um Datenbanken sondern auch um Benutzerdateien und Ordner.

3. Wie wird die Nutzung der Seite dadurch beeinflusst, muss man die Seite für die Zeit der Back ups schließen um Datenbank crash's zu verhindern da das Back up volle Leistung brauch?
__________________
Webdesign und Webentwicklung - Plunix.de
Mit Zitat antworten
  #2 (permalink)  
Alt 11-07-2009, 15:35
piratos
 Guest
piratos
Beiträge: n/a
Standard

Unter Mysql ist jede Datenbank nur ein neues Verzeichnis .

Jede Tabelle besteht normal mindestens aus 3 Einzelteilen .frm, MYD und MYI.

Ob eine Aufteilung auf mehrere DB's schneller oder einfach günstiger ist, das ist die große Frage.

Da müsste man schon zig tausende von Datensätzen haben um überhaupt mal ein Test zu machen der sinnvoll wäre.

Ich glaube es nicht denn im Prinzip macht eine Suche über einen index nur 2 bis 4 Schritte aus und das bei mehreren Millionen Datensätzen.

Ich kann mir eher vorstellen, das eine Verteilung auf mehrere DB's mehr Zeit kosten wird, aber das wäre schon mal interessant das festzustellen.

Meine dickste Tabelle hat 1,833,136 Einträge, da war ein Test nur bei der Verteilung auf mehrere Tabellen (also nicht DB) negativ verlaufen, hat Zeitverluste gebracht, kann bei einer Aufteilung über mehrere DB's nicht besser sein.
Mit Zitat antworten
  #3 (permalink)  
Alt 11-07-2009, 17:01
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das system weiß welche Datenbank anzusprechen, d.h. es muss nur eine Datenbank/Tabelle nach dem Datensatz durchsuchen, die dann deutlich weniger Datensätze enthält.

Meine Frage nur, ob ca. 50-? Datenbanken den Server nicht solangsam machen würden, dass es günstiger ist einfach eine deutlich größere anzahl an datensätzen zu durchsuchen, dafür aber den server nur mit einer datenbank und auch nur verbindungen zu dieser datenbank zu belasten.
__________________
Webdesign und Webentwicklung - Plunix.de
Mit Zitat antworten
  #4 (permalink)  
Alt 11-07-2009, 19:07
piratos
 Guest
piratos
Beiträge: n/a
Standard

Also eine normale Myisam benötigt über einen Index nur 2 bis 4 Schritte normal um einen Datensatz zu finden, da spielt die Größe der Tabelle keine Geige, da reden wir über nicht mehr messbare Mikrosekunden.

Verteile ich das über mehrere DB's reden wir zunächst über deutlich messbaren Zeitaufwand um die Connections zu checken bzw. zu bilden.

Darüber muss man reden wenn eine DB vom Fassungsvermögen aus allen Nähten platzt.

Wieviel zig Millionen Datensätze hast du denn ?
Mit Zitat antworten
  #5 (permalink)  
Alt 11-07-2009, 19:20
piratos
 Guest
piratos
Beiträge: n/a
Standard

Mal ein Beispiel:

Meine CMS benötigt

SQL Queries:10 Gesamtzeit:0.044099998474121 Sekunden

um über einen ausgewählten Ort

die eine Postleitzahl aus über 1,8 Mio. gespeicherten über Land und Ortsnamen zu finden
und um alle Hotels im Rahmen einer Umkreissuche mit einem Radius von 50 km aus einer Anzahl von 2700 gespeicherten zu ermitteln

und um die komplette Seite darzustellen.

Die meisten haben irgendwelche nicht zutreffende Vorstellungen über die Leistungsfähigkeit von Mysql.

Deswegen meine Frage mit welchen Mengengerüsten da gearbeitet wird.
Mit Zitat antworten
  #6 (permalink)  
Alt 11-07-2009, 19:49
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Es wird sich vielleicht erst einmal auch nur bis an die 2 Millionen Datensätze handeln, die allerdings aus deutlich mehr als ein paar zahlenspalten bestehen (25% volltext).

Damit hätte sich die schnelligkeitsfrage erklärt, überlege jetzt eben noch über die möglichkeiten des Back ups bei einer Datenbank!
__________________
Webdesign und Webentwicklung - Plunix.de
Mit Zitat antworten
  #7 (permalink)  
Alt 11-07-2009, 20:00
piratos
 Guest
piratos
Beiträge: n/a
Standard

Zitat:
die allerdings aus deutlich mehr als ein paar zahlenspalten bestehen
Das ist vollkommen wurscht, da Mysql den Index abklappert und nicht die Inhalte durchwühlt.

Backup DB:
Ich gehe mal davon aus das du eine DB Klasse verwendest, wenn sie gut ist bietet sie dir da etwas an (die ich verwende kann das).
Mit Zitat antworten
  #8 (permalink)  
Alt 11-07-2009, 20:09
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Ich würde, wenn es ein gemeinsames System ist, eine einzelne Datenbank verwenden. Alles andere halte ich für Käse und verkompliziert das ganze nur. Wenn du dir Sorgen um die Geschwindigkeit von Queries machst, entsprechend mit EXPLAIN ungeschickte Queries erkennen und optimieren bzw. weitere Indizes erzeugen.

Backups am besten und einfachsten direkt mit mysqldump über einen Cronjob erzeugen, zusammen-tar-en und auf den Backupserver schaufeln, z.B. per SFTP.
Mit Zitat antworten
  #9 (permalink)  
Alt 11-07-2009, 22:13
Lennie
 PHP Senior
Links : Onlinestatus : Lennie ist offline
Registriert seit: May 2006
Beiträge: 1.013
Lennie ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich verwende meine eigene DB Klasse, die ich deshalb entsprechend erweitern muss.

Dass mit dem Dump habe ich mir auch schon irgendwie in der Art gedacht, allerdings ist es bei 2 Millionen datensätzen auch entsprechend groß, macht es deshalb sinn es aufzuteilen?
__________________
Webdesign und Webentwicklung - Plunix.de
Mit Zitat antworten
  #10 (permalink)  
Alt 11-07-2009, 23:22
TBT
  Moderator
Links : Onlinestatus : TBT ist offline
Registriert seit: Sep 2002
Ort: Berlin
Beiträge: 2.787
TBT befindet sich auf einem aufstrebenden Ast
TBT eine Nachricht über ICQ schicken TBT eine Nachricht über AIM schicken TBT eine Nachricht über Yahoo! schicken
Standard

du kannst da schon auf die Leistungsfähigkeit von MySQL setzen,
wenn deine DB ordentlich designd ist.

Unsere (in Firma) Hauptdatenbank hat aktuell 16.000.000 Datensätze, bei 1,3GB Größe.
Das interessiert MySQL nicht die Bohne
__________________
TBT

Die zwei wichtigsten Regeln für eine berufliche Karriere:
1. Verrate niemals alles was du weißt!


PHP 2 AllPatrizier II Browsergame
Mit Zitat antworten
  #11 (permalink)  
Alt 12-07-2009, 00:55
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Dumps mit Blobs können tricky sein. Da lohnt es sich vorher mal zu überschlagen:
BLOB fasst bis zu 64 kB. Bei 2 Mio. Datensätzen sind das bis zu 124 GB. Worst Case.
Üblich ist ein Füllstand von rund 2 kB. Entspricht 1 Seite Text. Text kann locker um 75% komprimiert werden. Macht 1,2 GB. Average Case.

Na, wie viele BLOB-Spalten hast du? Wie/wohin willst du die Dumps schreiben?

Um die Datenmenge zu verringern könntest du in einer zusätzlichen Spalte den Zeitpunkt der letzten Änderung festhalten und nur die Datensätze sichern, die seit der letzten Sicherung verändert wurden.
Außerdem könntest du die BLOB-Spalten separat sichern. Getrennt von den sonstigen Spalten, um im Ernstfall das Backup schneller wieder einspielen zu können, und getrennt voneinander um die Dumps klein zu halten.
Mit Zitat antworten
  #12 (permalink)  
Alt 12-07-2009, 14:04
piratos
 Guest
piratos
Beiträge: n/a
Standard

Beim Backup mit PHP gibt es das Problem der max_execution_time, das sollte man nicht vergessen.

Wer allerdings solch gewaltige Mengen an Daten erwartet wird auch einen entsprechenden eigenen Server besitzen, denn der ist auf extreme Besucherzahl eingerichtet.

Da bieten sich die direkten Methoden von Mysql zum Backup an, die laufen extrem schneller durch als alles andere.

Was meine o.a. Konstellation betrifft PHP Backup 42 Sekunden, Mysql direktes Backup 3 Sekunden.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
MySQL Datenbank via PHP backup salim_aliya PHP Developer Forum 3 13-07-2008 19:05
Datenbank-backup dereine SQL / Datenbanken 2 26-05-2004 14:22
Datenbank-Backup bigtail PHP Developer Forum 17 13-08-2003 15:19
Datenbank Backup!!! Roninreneo PHP Developer Forum 2 15-04-2003 11:46
Datenbank-Backup hottemp SQL / Datenbanken 2 16-09-2002 14:35

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:38 Uhr.