Wie können RDBMS als Modeerscheinung angesehen werden?

11

Als ich 2003 mein Computing-Abitur abschloss und 2007 einen Abschluss in Computing machte und mein Handwerk in einem Unternehmen mit viel SQL-Nutzung lernte, kam ich auf die Idee, relationale Datenbanken für die Speicherung zu verwenden.

Obwohl ich relativ neu in der Entwicklung war, war ich überrascht, einen Kommentar (auf /software//q/89994/12436 ) zu lesen , der besagte:

[Einige Entwickler] verachten [SQL] und denken, dass es und RDBMS eine Modeerscheinung sind

Natürlich wird ein kompetenter Entwickler das richtige Tool für den richtigen Job verwenden und keine relationale Datenbank erstellen, wenn z. B. eine Flatfile oder eine andere Lösung für die Speicherung geeignet ist. RDBMs sind jedoch unter einer Vielzahl von Umständen nützlich. Wie könnten sie also sein? als Modeerscheinung angesehen?

StuperUser
quelle
1
Bitte geben Sie den Kontext an - wo haben Sie diesen Kommentar gelesen?
Eran Galperin
8
Alles und jedes wird von jemandem irgendwo als Modeerscheinung angesehen.
Péter Török
Sehr wahrer Péter, nur neugierig warum?
StuperUser
5
Solche Menschen haben normalerweise ein anderes Paradigma, das sie fördern möchten, was der Idee relationaler Datenbanken widerspricht. Daher sind relationale Datenbanken schlecht und müssen verschwinden. Schauen Sie sich objektorientierte Datenbanken an, die noch keine kritische Masse erreicht haben.

Antworten:

28

Der Schlüssel befindet sich im R im RDBMS, was für relational steht. Entgegen der landläufigen Meinung bedeutet dies nicht die Beziehung zwischen Tabellen, sondern die Tatsache, dass jede Tabelle eine Beziehung im mathematischen Sinne des Wortes ist .

Das relationale Modell hat erhebliche Auswirkungen. Sie müssen Ihre Daten modellieren, um sie an die Beziehungen anzupassen und dieses Modell zu normalisieren . Wenn Ihre Anwendung als objektorientiertes Modell konzipiert ist, passt das relationale Modell nicht gut. Dies ist allgemein als objektrelationale Impedanzfehlanpassung bekannt .

Ein Ansatz für diese Nichtübereinstimmung sind ORMs (Objekt-Beziehungs-Mapper), die sehr populär geworden sind. Aber sie sind nicht die wahre Lösung, sondern eher eine Lösung für das Problem. Sie lösen das Problem der Zuordnung der Klassenvererbung zum relationalen Modell immer noch nicht wirklich.

Die wahre Lösung für die objektrelationale Nichtübereinstimmung sind OODBMS , die leider nicht viel Anklang fanden. Beliebte Engine, die OOBDs nativ unterstützt, ist PostgreSQL, ein hybrides OO / RDBMS. Ein weiteres OODBMS ist Zope Object DB , das in Python erstellt wurde und in einem typischen Setup RDBMS als zugrunde liegende Engine verwendet.

Ein alternativer Ansatz besteht darin, mehr Logik in der Anwendungs- oder Middleware-Ebene zu implementieren und die NoSQL-Lösung für den zugrunde liegenden Speicher zu verwenden.

Weder OODBMS noch NoSQL sind "nur eine Flatfile".

vartec
quelle
2
@ Daniel: Er hat sicherlich nicht gesagt, dass das relationale Modell ein Problem ist, das einer Lösung bedarf. Er hat genau das gesagt, was Sie gesagt haben. Wenn Sie Ihre Software nach dem objektorientierten Paradigma modellieren möchten, ist das relationale Modell ein Problem.
Carson63000
1
@Carson: Ich entschuldige mich, aber so habe ich die Antwort nicht gelesen. @vartec sagt: "Die wahre Lösung ist das OODBMS (das leider nicht viel Traktion bekam)." Ich bin respektvoll anderer Meinung: Ich würde sagen, die wahre Lösung besteht darin, das relationale Modell zu verstehen und es effektiv zu nutzen. OODBMS ist eine Lösung für arme Leute, wenn Sie OO-Prinzipien für Ihr Datenmodell verwenden müssen, was sicherlich kein universeller Fall ist.
Daniel Pryden
1
@ Daniel: Ich dachte, er meinte, dass ein OODBMS wieder die wahre Lösung ist, wenn Sie Ihre Software nach dem objektorientierten Paradigma modellieren möchten . Nicht dass das relationale Modell an und für sich ein Problem gewesen wäre und dass OODBMS die Lösung dafür gewesen wäre. Aber trotzdem, da es nicht viel Sinn macht zu diskutieren, wer von uns Vartec richtig verstanden hat, werde ich mich zurückziehen und ihn klären lassen, ob er will. :-)
Carson63000
1
@ Daniel: Der Kontext ist wichtig. Ich sage ganz klar, dass das relationale Modell ein Problem im Kontext von OOP ist. Nun, wie universell oder nicht OOP ist, das geht über den Rahmen dieser Antwort hinaus. Und übrigens. OODBMS sind keine "Lösung für arme Männer", ORMs.
Vartec
1
@vartec: OK, ich ziehe meine Ablehnung zurück. (Ich kann es nur entfernen, wenn der Beitrag bearbeitet wurde.) Ich denke, es ist am besten zu klären, dass es Lösungen gibt, die kein OO beinhalten. Und ja, ich stimme zu, dass ein ORM sogar schlechter ist als ein OODBMS.
Daniel Pryden
13

Ich habe die Aussage gemacht, die Sie in der obigen Frage zitiert haben. Wenn Sie möchten, dass ein Zitat meine Vermutung über Entwickler auf dieser Website bestätigt, lesen Sie meine Antwort auf die folgende Frage und überprüfen Sie die Gegenreaktionen von Kommentaren und Abstimmungen, die ich für eine meiner Meinung nach noch akzeptable Antwort erhalten habe.

Sollten erfahrene Programmierer Datenbankabfragen kennen?

Ich habe die Behauptung aufgestellt, dass ein Entwickler trotz Linq oder ORM über fortgeschrittene SQL-Kenntnisse verfügen sollte, wenn eine RDBMS-Datenbank verwendet wird.

Dies war eine höchst unpopuläre Behauptung, die aufgrund respektabler Meinungsverschiedenheiten über die Bedeutung von SQL und der weniger respektablen Denkweise, dass RDBMS NoSQL-Datenbanken wie MongoDB von Natur aus unterlegen ist, zu sein scheint.

EDIT: Um meinen Anspruch weiter zu erweitern, zitiere ich Benutzer SK-Logik:

Denken Sie daran, dass all diese RDBMS-Begeisterung ein relativ neuer Trend ist. Vorher hatten wir eine Vielzahl von Ansätzen. Sie arbeiten anscheinend in einem jungen Unternehmen zusammen mit Entwicklern Ihres Alters und haben daher keine Chance, den älteren und solideren Speicheransätzen ausgesetzt zu sein. Glücklicherweise ist dieser jüngste Trend bereits rückläufig, und gute alte Wege kehren zurück, umbenannt in "nosql".

maple_shaft
quelle
Stimmen Sie voll und ganz zu, dass Entwickler, die mit DBs arbeiten, SQL verstehen sollten, um eine Abfrage in Bezug auf Beziehungen richtig konzipieren zu können. Hoffentlich optimieren Linq / ORMs Abfragen in der Abstraktion jedoch nicht so, dass sie sich auf Abfragen auswirken, die unter Berücksichtigung des Datenspeichers geschrieben wurden.
StuperUser
Der einzige Grund, warum jemand sagen würde, "dieser RDBMS-Wahn ist ein relativ neuer Trend", ist zu zeigen, wie grau ihr Bart ist. Ich habe zuerst an der Art von Unternehmens- und Geschäftsanwendungen gearbeitet, die Sie 1995 beschrieben haben - relationale Datenbanken dominierten damals, sie dominieren jetzt, sie dominierten überall, wo ich in den letzten 16 Jahren gearbeitet habe. Jetzt bin ich natürlich nicht so alt wie manche, aber wenn ich "relativ neu" sage, meine ich nicht "in den letzten zwanzig Jahren".
Carson63000
Das Problem ist, dass viele Entwickler RDBMS fälschlicherweise mit SQL gleichsetzen. SQL ist nach modernen Maßstäben eine wirklich schreckliche Sprache. Es ist eine fehlerhafte und unvollständige Implementierung einer "relationalen" Sprache (SQL ist überhaupt nicht wirklich relational und das ist Teil des Problems), die sich in den letzten 30 Jahren nicht wesentlich weiterentwickelt hat. Viele Leute, die SQL verwenden, verstehen das relationale Modell kaum - sie wissen nur SQL und gehen daher davon aus, dass das relationale Modell die Ursache für ihre Frustration ist.
Nvogel
@dportas, Sicher, SQL ist nicht perfekt, aber es war für jeden Job so wichtig, dass ich herausfand, wie viel einfacher das Leben wurde, als ich anfing, in SQL zu DENKEN. Wenn Sie mir ein relationales Modell geben und mir eine Frage im Klartext stellen, kann ich Ihnen eine "Antwort" in SQL schreiben. Sie sagen, dass "alles, was sie wissen, SQL ist und sie davon ausgehen, dass das relationale Modell die Ursache für ihre Frustration ist", dann kennen sie SQL nicht gut genug. Warum muss immer alles auf den niedrigsten gemeinsamen Dämon ausgerichtet sein, wie ein indischer Programmierer, der mit einer schlechten Ausbildung weniger als 10 US-Dollar pro Stunde verdient?
maple_shaft
@maple_shaft, wenn Sie in SQL denken, dann denken Sie an einige Dinge, die in relationaler Hinsicht sehr falsch sind. Was ermutigt werden sollte, ist, dass Entwickler grundlegende Konzepte wie das relationale Modell verstehen, anstatt sich auf Sprachen wie SQL zu konzentrieren. Wenn mehr Menschen die Grundkonzepte verstanden hätten, wäre SQL möglicherweise bereits durch bessere Dinge ersetzt worden.
Nvogel
9

Modeerscheinung :

eine Sache, die in kurzer Zeit sehr populär wird und dann mit ungefähr der gleichen Geschwindigkeit vergessen wird. "

RDBMS gibt es schon seit Ewigkeiten (zumindest in Bezug auf CS), also wer auch immer das gesagt hat, wollte entweder etwas anderes sagen oder ist ahnungslos.

l0b0
quelle
2
Ich wollte noch etwas sagen, siehe meine Antwort unten.
maple_shaft
3
Wahrscheinlich wäre es besser gewesen, ein echtes Wörterbuch als ein urbandictionary zu verwenden.
Aaronaught
Aaronaught - Wie wäre es mit Princeton? "Ein Interesse folgte mit übertriebenem Eifer." wordnetweb.princeton.edu/perl/…
Shauna
3

Die Alternative zu RDBMS ist nicht nur eine Flatfile. Als ich in der Schule war, war OODBMS das Neue und mein Professor hatte Recht, als er es als Modeerscheinung bezeichnete. Sie sollten sich die verschiedenen Modelle ansehen und die Trends beachten. Ich habe eine zunehmende Abhängigkeit von OLAP gesehen und wäre bereit zu wetten, dass ein neues mehrdimensionales System, das Daten schneller verarbeiten kann, gleich um die Ecke ist.

Christopher Bibbs
quelle
Sollte "bereit, ein neuer zu sein" => "bereit, ein neuer zu setzen"?
Binary Worrier
Oh sicher, verwendet Flat File als Beispiel. Das ist eine gute Verbindung zu den DB-Modellen.
StuperUser
@ Binär Ja und bearbeitet, um es zu reflektieren.
Christopher Bibbs
3

Das Problem ist, dass viele Entwickler RDBMS fälschlicherweise mit SQL gleichsetzen. SQL ist nach modernen Maßstäben eine wirklich schreckliche Sprache. Es ist eine fehlerhafte und unvollständige Implementierung einer "relationalen" Sprache (SQL ist überhaupt nicht wirklich relational und das ist Teil des Problems), die sich in den letzten 30 Jahren nicht wesentlich weiterentwickelt hat. Viele Leute, die SQL verwenden, verstehen das relationale Modell kaum - sie wissen nur SQL und gehen daher davon aus, dass das relationale Modell die Ursache für ihre Frustration ist.

nvogel
quelle
1

Ohne Kontext ist es schwer zu bestimmen, wer / warum die Aussage, dass RDBMs als Modeerscheinung gelten.

Kurz- bis mittelfristig (5 - 10 Jahre) und ich würde noch länger darüber nachdenken, dass sie nicht verschwinden werden. Ein RDBM bietet eine effiziente und effektive Methode zum Speichern, Verarbeiten und Abrufen relationaler Daten. Dies ist das, was die meisten Unternehmen haben, sei es Kunden / Bestellungen, Passagiere / Tickets usw.

Es gibt andere Alternativen wie NoSQL, die mit Open-Source-Projekten immer beliebter zu werden scheinen.

Als OLAP sind dies (meiner Meinung nach) wirklich spezialisierte Datenbanken, die es einem Unternehmen ermöglichen sollen, zeitnahe und nützliche statistische Informationen über ein Unternehmen bereitzustellen und "Was wäre wenn" -Szenarien für aktuelle Daten auszuführen. Natürlich stammten diese aktuellen Daten in fast allen Fällen von RDMBs und wurden manipuliert und dann in die OLAP-Datenbank eingefügt.

Armitage
quelle
1

Relationale Datenbanken sind eine Modeerscheinung in demselben Sinne wie Mikrocomputing eine Modeerscheinung.

Jeremy
quelle
1

Einfache Antwort ist nein. RDBMS sind keine Modeerscheinung. Wenn Sie etwas auf einer Website für LinqPad lesen, denken Sie daran, dass der Zweck darin besteht, Lizenzen für ihr Produkt zu verkaufen.

Tundey
quelle
Die Frage ist, warum es als Modeerscheinung angesehen wird, nicht ob es sich um LinqPads Werberhetorik handelt. Der LinqPad-Standard ist kostenlos.
StuperUser
Die Frage kam von ihm, als er LinqPads Werberhetorik las. Nur darauf hinweisen, dass er mit einem Körnchen Salz nehmen sollte.
Tundey
Nein, das hat es nicht getan, es stammt aus dem Kommentar von maple_shaft zu programmers.stackexchange.com/questions/89994/… . Die Kopie von LinqPad wurde mit einer Prise Salz aufgenommen, aber ich bin gespannt, ob Entwickler mit beiden Aussagen übereinstimmen.
StuperUser
Ja, LinqPads Werbe-Rhetorik war, dass das Schreiben von SQL zum Abfragen eines RDBMS veraltet war und nicht, dass RDBMS selbst veraltet waren. Sie verkaufen eine bessere Möglichkeit, ein RDBMS zu verwenden, keine Alternative zu ihnen.
Carson63000
@ SuperUser und Carson63000: Verstanden. Mein Fehler.
Tundey
0

Modeerscheinung ist nicht das richtige Wort, da sie schon lange zusammen sind. Ich denke, Sie könnten anfangen zu argumentieren, dass die Technologie sehr alt ist und es an der Zeit sein könnte, die nächste Sache zu entwickeln - vielleicht NoSQL-Architekturen

Bigtang
quelle
0

Das Wiki Def. of Fad definiert den Begriff "Modeerscheinung" wie folgt: Eine Modeerscheinung ist jede Form von Verhalten, die sich in einer großen Bevölkerung entwickelt und für einige Zeit kollektiv mit Begeisterung verfolgt wird, im Allgemeinen als Folge davon, dass das Verhalten in irgendeiner Weise als neuartig wahrgenommen wird. Eine Modeerscheinung soll sich "durchsetzen", wenn die Zahl der Menschen, die sie adoptieren, schnell zunimmt. Das Verhalten wird normalerweise schnell verblassen, sobald die Wahrnehmung der Neuheit verschwunden ist.

Da RDBMS-Follower nicht schnell verblasst sind und in vielen Jahren nicht mehr verschwinden werden (dank des riesigen Haufens an Produktionsanwendungen, die es verwenden), können wir nicht sagen, dass es eine Modeerscheinung ist. Tatsächlich blieben die Kernkonzepte von RDBMS ziemlich stabil, wo sich so viele der anderen Technologien dramatisch änderten (und immer noch ändern).

Das Konzept von RDBMS (und seines Hauptvehikels SQL) stellt einen technologischen Schritt dar, der wie viele andere von besseren abgelöst werden kann, das ist alles.

Keine Chance
quelle