Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Projektplanung und -Management (https://www.delphipraxis.net/85-projektplanung-und-management/)
-   -   Webserver macht's nicht mehr lange was kann ich verbessern (https://www.delphipraxis.net/204626-webserver-machts-nicht-mehr-lange-kann-ich-verbessern.html)

Strict 12. Jun 2020 19:42

Webserver macht's nicht mehr lange was kann ich verbessern
 
Seit Jahren nutze ich statt einer MySQL-Datenbank eine SQLite-Datei. Auch schreibe ich gewisse Daten wie IPs, Anzahl von Downloads und Seitenbesuche und sowas in dafür angelegte Textdateien. Das klappt gut, bis der mega-Ansturm kam. fopen, fwrite, fclose und das Schreiben in Textdateien allgemein scheint nicht dafür gemacht zu sein, wenn pro Sekunde mehrere Anfragen eintreffen.

Sind SQL-Datenbanken vor sowas geschützt? Wenn zu ein und demselben Zeitpunkt mehrere Schreibanfragen an eine SQL-Datenbank eingehen, wie geht die Datenbank damit um?

Redeemer 12. Jun 2020 21:48

AW: Webserver macht's nicht mehr lange was kann ich verbessern
 
Kurze Antwort: Ja, Datenbankserver wie MySQL (oder MariaDB, ist im Prinzip dasselbe) können das. Man muss meist auch nicht mal was dafür tun, in deinem banalen Anwendungsgebiet sowieso. Nur eins geht auch damit weiterhin nicht: Grundlos IPs speichern und gleichzeitig nicht gegen die übliche Rechtsauffassung verstoßen.

jobo 13. Jun 2020 16:29

AW: Webserver macht's nicht mehr lange was kann ich verbessern
 
Ein paar grundsätzliche Überlegungen:

SQLite ist mit der Prämisse "kleiner Fußabdruck", viele Plattformen, .. erschaffen worden, es ist nicht bekannt für besondere Performance.
SQLite ist dabei vorwiegend für 1 Benutzerbetrieb (keine Mehrfachzugriffe) konzipiert, was je nach eingesetzten Verfahren auf einem Webserver sogar gegeben sein kann (wenn kein Multithreading genutzt wird).
SQLite kann für den jeweiligen Einsatzzweck bei Bedarf mit anderen Grundeinstellungen kompiliert werden, was die Performance verbessern kann.

Größere RDBMS sind natürlich (auch) auf Performance ausgelegt, gerade im Mehrbenutzerbetrieb, dafür sind sie gemacht.
Selbst eine kostenlos Opensource Datenbank bietet eine Menge Features und erfüllt viele teilweise widersprüchliche Anforderungen, dazu gehört bspw. der konkurrierende Schreibzugriff und die Wahrung der (definierten) Datenkonsistenz. Gewisse Funktionalität wird dabei sogar garantiert! Weshalb Banken bspw. lieber RDBMS verwenden, als einfach in Dateien zu schreiben oder noSQL Produkte zu verwenden.
Das alles hat seinen Preis, selbst bei Kleinsystemen wie SQLite.
Ein System, das viele Daten in eine "Datenbank" schreibt, dabei Transaktionen überwacht, Dateneingabefehler prüft, falsche Eingaben konsistent wieder entfernt, 100e Nutzer gleichzeitig bedient, braucht Leistung, Speicherplatz und Rechenzeit.

Es ist sehr leicht vorstellbar, dass das bloße Schreiben in eine Datei, das "Logging", -auch durch mehrere Prozesse- dagegen simpel und flott ist. Ist es das in der Praxis nicht, also z.B. langsamer als das Schreiben in eine DB, dann ist es schlecht implementiert.

Mit welchen Funktionen des Webservers man also eine DB belegt und welche über bloßes Logging erreichbar sind, kann und sollte man gut abwägen. Sämtliche Protokollierungsfunktionen sind bspw. nicht der selektiven Änderung oder Löschung im Mehrbenutzerbetrieb unterworfen, entsprechend wird keine DB benötigt.

Datenschutz muss natürlich gewährleistet sein, dieser ist u.U. in einer zugriffsgeschützten DB leichter zu erzielen, als mit Log-Dateien, die jeder Administrator ohne weiteres abrufen kann. Es hängt sehr viel vom Einsatzzweck ab.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz