Re: Für größeres Projekt: mySQL oder msSql?



On 17 Apr., 12:47, Dennis Odermann <oderm...@xxxxxxxxx> wrote:
Ich erstelle für einen Kunden eine recht große Anwendung mit PHP und
mySQL. Die Anwendung ist zwar nicht übermäßig zeitkritisch, da nicht
extrem viele Anfragen gleichzeitig laufen, aber es werden sehr viele
Daten in der DB gepeichert und an manchen Stellen auch umfangreich
abgefragt (z.B. für Statistiken).

PHP bietet eine Abstraktionsschicht für die Anbindung an Datenbanken,
d.h. es ist *sehr* dringend anzuraten, diese zu benutzen und keine
dedizierten Datenbank-Befehle a la mysel_close(), mysql_..., usw. Des
weiteren sollte man versuchen den SQL-Dialekt einzuschränken und keine
DB-eigenen Befehle verwenden - in der Hinsicht wird es mit Stored
Procedures nett, denn man ruft ja nur die SP auf, übergibt die
Parameter und erhält entsprechend ein Record-Set oder Rückgabewerte
(je nach Implementierung). Man kann also das ganze DB-typische Gedöns
in der SP kapseln und die Anwendung aussen ist frei von Dialekt.

Ein Partner meines Kunden, der eine ähnliche Anwendung betreibt, hat
meinem Kunden jetzt gesagt, dass msSQL für solch einen Zweck besser
geeignet wäre. Als besonderen Voteil nennt er Stored Procedures (was es
wohl seit der Version 5 auch bei mySQL gibt) und weitere
Performancevorteile.

Es gibt so gewisse Kombinationen, die kann man als "Dream Teams"
bezeichnen ... auf der einen Seite ist es PHP+MySQL, auf der anderen
ASP.NET+MSSQL ... also wenn er schon den MSSQL empfiehlt, sollte er
auch logischerweise zu ASP.NET raten, zumal es für .NET, soweit ich
weiss, eine Implementierung für PHP gibt - man kann also PHP-Sourcen
in (ASP.)NET-Code kompilieren.

Ansonsten sage ich: Never change a running system ... ich befürchte
nämlich, dass der PHP-Code sowas von MySQL-lastig programmiert wurde
und nicht auf Austauschbarkeit der DB-Schnittstelle geachtet wurde,
dass die Umstellung keinen Gewinn, nur Bauchkrämpfe bringen wird!

Ich habe nichts dagegen, mich auf eine msSQL-Datenbank umzustellen, habe
aber meine zweifel, dass msSQL nennenswerte Vorteile bietet.

Die Frage ist doch erstmal, bevor wir zum Bashing übergehen, auf
welcher Plattform das Ganze denn laufen soll? PHP+MySQL auf Windows
ist doch auch erstmal ein Krampf ... sowas gehört auf eine Unix/Linux/
BSD-Kiste, zusammen mit dem Apache!

Wenn man sich auf einer Windows-Plattform bewegt, dann spricht schon
einiges dafür, eher zu MS-Produkte zu greifen ... im Gegensatz zu
etlichen Herren hier verfüge ich schon über langjährige Erfahrung mit
MSSQL 7.0, 2000 und 2005, sowie MySQL unter HP/UX, Linux und Windows,
ASP.NET (VB.NET, C#.NET), IIS und Apache.

Wenn Du Dich auf einer grünen Wiese befindest und völlig frei
entscheiden dürftest, wäre mein Rat zu einem Linux-Server mit Apache
und MySQL. Bei PHP bin ich recht skeptisch, zeigt es doch viele
Möglichkeiten, etwas falsch zu machen - ich halte PHP für
konzeptionell für eine Katastrophe! Dann eher Java Servlets, evtl.
Mono oder Python - wobei ich zu letzteren wenig/nichts sagen kann. Zu
Mono tendiere ich, denn die Basis - .NET ist so schlecht nicht. Und zu
Python, weil die Jungs schonmal ein gutes Konzept hingelegt haben, auf
das sie aufsetzen, und nicht wie bei PHP auf uralten Sachen immer noch
eines draufsetzen (ich finde die Operatoren === und !== einfach nur
furchtbar, ganz zu schweigen von der "gewachsenen" Art und Weise, wie
Methoden und Funktionen Parameter mal so, mal so verwursteln ...).

Wenn man schon durch eine gewisse Infrastruktur festgelegt ist, dass
sollte man das jeweilige Dream-Team in Betracht ziehen. Oder mit Java
plattformneutral entwickeln. Ich halte recht wenig davon, den Apache
unter Windows zu betreiben - da merkt man halt doch, dass der
konzeptionell mehr für Unix entwickelt wurde (wenn Apache, dann Unix-
OS!). Und der IIS 5.1/6.0 ist besser als seine Vorgänger.

Ich möchte hier keinen "Glaubenskrieg" hören, sondern würde mich für
Eure Meinung und vor allem Erfahrungen interessieren (ich habe nämlich
keine mit msSQL).

Wie gesagt - ich habe mit beiden meine Erfahrungen gesammelt. MySQL
hinkt halt noch immer stark dem Standard hinterher, wohingegen die
Konformität von MSSQL zum SQL-Sprachstandard sehr gut ist. Was Stored
Procedures anbelangt ... da spreche ich sowohl MySQL als auch MSSQL
ab, die Fähigkeiten zu haben, die Oracle bereits in Version 7.3.4 oder
8.0 vor 10 Jahren hatte! So Spielchen wie, dass mit mit Pipes zwischen
zwei DB-SPs kommunizieren kann oder per Alert benachrichtigen ... die
Mail-Sende-Funktion eines MSSQL 2000 ist auch nur als grausam zu
bezeichnen ... da greift man lieber gleich zu einer extended Stored
Procedure (XP) und programmiert es selber! (Ist recht einfach und
leidlich gut dokumentiert beim MSSQL ... man sollte sich aber der
Risiken bewusst sein!)

Ich hab' auch nicht verstanden, warum man das Konzept von Oracle, was
SPs anbelangt, nicht übernehmen konnte: Bei Oracle RDBMS kannst Du
einem User die Berechtigung zum Ausführen einer SP geben, er braucht
aber keine Rechte auf die Tabellen zu haben, auf die zugegriffen wird.
Damit kannst Du per SP einen Zugriffsschutz etablieren - MSSQL legt
immer die User-Rechte auch auf die Tabellen fest. Ich vermute - ich
hab's nicht getestet - MySQL verhält sich in dem Punkt wie MSSQL.

Gruß, Dirk

.



Relevant Pages