yo,
Ich würde nicht historisch argumentieren wollen, denn was interessieren für die heutigen Anwendungen mit heutiger Hardware die Probleme von damals?
ich führe nicht die historie an, weil früher alles besser war, sondern um die gegenwart besser zu verstehen. und stand der dinge ist, das dbms immer noch das mittel sind, um daten auf professioneller ebene zu verwalten und nicht textdateien. ich wollte damit zum ausdruck bringen, dass datenbanken eine weiterentwicklung der datenhaltung gegenüber textdateien sind.
Und was ist mit XML? Das sind im Prinzip doch auch "nur Textdateien", aber der Dateiinhalt dürfte mit zum flexibelsten zählen, was man heutzutage auffinden kann.
ich bin wirklich kein xml spezialisst, kann dazu also nur wenig sinnvolles sagen. aber wenn mich nicht alles täuscht, dann ist xml mehr darin flexibel, wie man die gleichen daten darstellt und nicht darin, wie man daten verwaltet. letztlich muss sich xml den gleichen problemen stellen, wenn es die gleichen anforderungen wie moderne dbms leisten will. und dbms leisten viel mehr als einfach nur bytes auf den bildschirm zu bringen.
Eine Datei ist mit das dynamischste, was ich mir vorstellen kann. Man kann beliebig viele, beliebig gewählte Bytes dort reinspeichern. Bei einer Datenbank muß man sich aber immer an die Definition der Spalten halten.
in einer datei oder datenbank ist erst einmal gar keine dynamik drinne. die dynamik kommt erst dadurch, dass alle zugriffe über ein und daselbe dbms passieren. und damit lassen sich sehr wohl die geschäftprozesse abbilden, nicht anderes passiert tag für tag in den firmen. die praxis ist das beste bespiel dafür. ich würde nie auf die idee kommen, daten der firma in einer textdatei abzuspeichern, es sei denn, mein chef verlangt das von mir ausdrücklich. und selbst dann würde ich mir das schriftlich geben lassen. ausnahmen bilden daten, die sich nie ändern, zum beispiel abgelaufene geschäftsjahre. aber aus das nur mit sehr grosser vorsicht.
Abgesehen davon glaube ich nicht, dass eine Datenbank wirklich dynamische Prozesse abbilden kann. Dafür ist sie nicht vorgesehen. Die dynamischen Prozesse sind Aufgabe des (oder der) Layers VOR der Datenbank.
dann geh in die betriebe und schau es dir an. wir reden hier nicht von fiktiven dingen, sondern von der praxis. dort ändern sich laufend dinge und man kann es über das dbms abbilden.
Diese Argumentation halte ich für unsinnig. Wie soll denn eine Datenbank besser helfen können, wenn sich die Datenstrukturen verändern, als eine Datei. In beiden Fällen ist die abfragende Software so zu modifizieren, dass sie mit den geänderten Verhältnissen wieder zurecht kommt - aber um diese Veränderung wird man nicht herumkommen. Die Datenbank bietet da nach meiner Auffassung keine substantiellen Vorteile, die man nicht auch mit Dateien haben könnte.
ich denke mal deiner "fehler" besteht darin, dass du zu sehr auf die datenspeicherung fixiert bist, sprich textdatei oder datenbank. die dynamik kommt aber von keinen von den beiden, sondern von einer gemeinsamen schnittstelle, nämlich das dbms. und genau das ist der springende punkt. jedes system, dass diese dynamik erzeugen will braucht eine gemeinsame schnitttstelle, egal ob man das nun dbms nennt oder nicht. die blosse speicherung der datenbank über textdateien oder einer datenbank ist nicht wichtig, der zugriff über eine einzige schnittstelle ist es.
Du argumentiert aus Sicht eines einfachen Anwendungsprogrammierers.
nein, aus der sicht eines datenbank-administrators. das sollte ich wissen. und was bedeutet einfach ?
Das bedeutet doch aber nicht, dass dieser Aufwand trotzdem anfällt. Er wird nur versteckt, nämlich hinter den Kulissen der Datenbank.
es ist nicht so, dass nur die eine seite vorteile bringt und die andere seite nachteile. wir neigen sehr gerne dazu zu polarisieren. man muss beides abwägen und dabei liegen dir vorteile von datenbanken für mich um ellen vorne.
... sofern jemand vergißt, die beim Löschen der Referenz gleich mit zu löschen (wovon ich nicht ausgehe, ansonsten ist das ein Programmfehler).
ein wesentlicher aspekt der programmierung ist es, dinge für den programmierer so einfach wie möglich zu halten. dem computer würde der 01 maschinencode reichen, uns menschen aber nicht. es wird einfach zu unübersichtlich. viele moderne poragrammiersprachen und regeln (kis) gibt es nur aus einem grund, weil der mensch nun mal "nur" ein mensch ist. natürlich kann ich immer damit argumentieren, wenn ein fehler auftritt, hätte der programmierer darauf achten müssen. aber es ist ganz eindeutig ein vorteil, wenn ich schon im vorfeld dafür sorge, dass ihm eben nicht so viele solcher fehler unterlaufen könnnen. und die referentielle integrität ist genau dafür da und aus keinem anderen grund. und textdateien können genau diesen vorteil nicht leisten.
Das muß man nur, wenn tatsächlich Zugriffsrechte eingeschränkt werden sollen, sonst nicht.
das ist der springe punkt. man kann dies vielleicht für die gegenwart ausschließen, aber kannst du das auch für die zukunft ?
Aber auch in so einem Fall würde ich es durchaus als performanter einschrätzen, wenn man Bilder einfach direkt aus der Datei an den Browser sendet, als erst eine Datenbank bemühen zu müssen.
jein. die frage ist, brauche ich diesen performancegewinn überhaupt oder erkaufe ich mir dafür anicht eventuell viel größere nachteile. abwägen ist gefragt, nicht polarisieren.
Schon mal mit MySQL gearbeitet? Da ist "referentielle Integrität" ein Fremdwort, du bist als Programmierer vollkommen selbst dafür verantwortlich, dass alle Datensätze in verlinkten Tabellen verschwinden, wenn du den Master-Datensatz löschst.
ich arbeite beruflich mir oracle. nur weil etwas noch nicht entwickelt ist, heisst es nicht, dass es nicht sinnvoll ist.
Referentielle Integrität kostet dich immer Performance.
nochmal abwägen ist trumph. alles kostest etwas. die frage ist, bekomme ich dadurch aber nicht viel mehr, als ich bezahle. gehe ich auf geschwindikeit, zahle ich eventuelle viel mehr, nämlich mit statischen prozessen.
Welche Version wird wohl die meisten Bilder pro Sekunde ausliefern können?
ich behaupte mal, das ist von fall zu fall verschieden. wenn einfach nur alle der reihenfolge nach ausgegeben werden sollen, bist du schneller. wenn aber andere kritereien eine rolle spielen, dann brauchst du ein oftmals ein dbms dafür.
aber wie gesagt, abwägen und nicht nur eine seite sehen. ich greife mal dein beispiel auf und führe es weiter. in der zukunft sollen nun aber zugriffsrechte für die bilder eingeführt werden. und unterschiedliche programme wollen auf die bilder zugreifen und setzten eine andere datenstruktur vorraus. was nun herr Rautenberg ?
Ich hoffe, du gibst zu, dass die Problemlösung immer etwas mit dem Problem zu tun hat.
für hoffnung und kleine wunder ist der liebe gott zuständig und mit dem hatte ich noch nie was am hut ;-)
ich will mal versuchen anderes zu argumentieren und dich bei deiner "leibspeise" zu packen. sicherlich ist für jede situation (problem) eine spezialisierte lösung die schnellste. aber die situation ändert sich halt laufend, sprich die alte lösung ist auf einmal nicht mehr die beste. wenn ich das nun auf die browser übertrage, so bist du der erste der schreit, nur eine schnisstelle, jeder broser sollte den code gleich interpretieren und nicht sein eigenes süppchen kochen. aber genau das willst du aber von der datenhaltung, jder so wie die situation es gerade verlangt. das geht bei den browsern nicht gut und auch nicht bei der datenhaltung.
nur mal so ein gedanke für dich. gerde in der heutigen zeit, wo rechner deutlich schneller geworden sind, spielt performance, welche du immerzu ins feld führst, nur noch eine kleinere rolle als die dynamik. und selbst dieses argument der perforamce ist sehr strittig, datenbanken können nämlich sehr wohl schneller sein als die datenhaltung in einer textdatei. wie bereits merhfach erwähnt, abwägen ist trumpf, nicht polarisieren
Ilja