Dies ist eine großartige Frage und eine Reihe großartiger Antworten. Ich denke, eine Sache, die in der Diskussion fehlt, ist eine Antwort, die die Unterscheidung zwischen einer Datenbank und einem Datenbankverwaltungssystem (DBMS) untersucht. Ich mag die Definition der Datenbank, die Shark von dictionary.com bereitgestellt hat. Ich denke, es zeigt wirklich die Notwendigkeit der Unterscheidung zwischen der Datenbank und dem DBMS. Die Datenbank ist eine "umfassende Sammlung zusammengehöriger Daten, die für einen bequemen Zugriff organisiert sind". Der zweite Teil dieser Definition, der "allgemein in einem Computer" sagt, ist, wo die Unterscheidung liegt. Wenn es in einem Computer gespeichert ist, kann es in einem DBMS gespeichert sein oder nicht. Es kann in einem OS-Dateisystem gespeichert werden. Es kann in einem proprietären Dateisystem gespeichert sein. Daher stimme ich FrustratedWithFormsDesigner zu, dass ein Kartenkatalog eine "Datenbank" ist. (Na vielleicht - ist es umfassend und verwandt? Dazu später mehr). Es wird einfach in einem Archiv gespeichert. In der heutigen Welt die "umfassendste Sammlung von verwandten Daten für den bequemen Zugriff organisiertsind auf einem Computer gespeichert, so dass ich mit Shark nicht einverstanden bin, dass es schade ist, dass Dictionary.com diesen Teil hinzugefügt hat. Ich denke, es ist absolut richtig - als Definition von "Datenbank".
Wie definieren wir DBMS? Ich ging zu dictionary.com zurück und fand dies :
"Eine Reihe von Programmen, die in der Regel große strukturierte Mengen persistenter Daten verwalten und vielen Benutzern Ad-hoc-Abfragemöglichkeiten bieten. Sie werden häufig in Geschäftsanwendungen eingesetzt."
Die Definition geht weiter und ist ziemlich lang. Es werden allgemeine Funktionen eines DBMS beschrieben, z. B. Sicherheit, Datenintegrität, Transaktionsmanagement, Parallelitätskontrolle und vor allem Datenunabhängigkeit. Ein DBMS bietet eine externe Sicht auf die Daten, die von der Art und Weise, wie sie physisch gespeichert sind, abstrahiert wurden.
Mit dieser Definition, ich denke , es ist klar, dass ein DBMS ein Daten liefern muß Modell , das ist , wie die Daten für die Präsentation für den Benutzer organisiert wird. Die drei gängigen Modelle sind hierarchisch (IMS), Netzwerk (IDMS) und relational (DB2, Oracle, SQL-Server usw.). Es gibt auch das OO-Modell (OODBMS). Nur das heutige relationale Modell ist breit anwendbar. Die anderen Modelle sind nach wie vor im Einsatz, jedoch nur in Nischensituationen. Das DBMS muss auch die anderen genannten Funktionen bereitstellen. Ich würde diese zusammen als Datenverwaltungsfunktionen oder -fähigkeiten bezeichnen.
Daher sind Softwareprodukte, die Datenverwaltungsfunktionen bereitstellen, DBMS, wohingegen Produkte, die diese nicht bereitstellen, keine DBMS sind. NoSQL-Produkte sind keine DBMS. Das heißt nicht , dass sie nicht nützlich sind und auch nichtzu sagen, sie speichern keine "Datenbanken". Ich denke gerne, dass DBMS ', wie die Definition besagt, eine Reihe von Problemen im Zusammenhang mit Geschäftsanwendungen wie Buchhaltung, Lohn- und Gehaltsabrechnung, Kundenbeziehungsmanagement, Vertrieb usw. löst Eine Klasse von Problemen, die nicht mit herkömmlichen Geschäftsanwendungen zu tun haben, aber aufgrund der enormen Menge an Speicher- und Bandbreiten-Computing-Technologie, die heute in der Lage ist, auftreten. Dies sind Anwendungen wie die Internetsuche, wie Online-Auktionen, wie Twitter und wie Facebook. Das DBMS eignet sich nicht für die Lösung dieser Probleme, da das DBMS Datenverwaltungsfunktionen enthält, die für eine Geschäftsanwendung zwar unbedingt erforderlich sind, für die Speicherung und den Abruf von Craig jedoch keinen Nutzen haben. s Anzeigen oder Twitter-Feeds auflisten (naja normalerweise sowieso - das ist eine andere Diskussion für eine andere Zeit :-)). Diese Probleme erfordern eine massive Verkleinerung und eine extrem schnelle Reaktion, und das DBMS mit seinen aufgedunsenen Funktionen ist keine gute Lösung.
Ein Datenprofi muss alle diese Tools zum Speichern von Daten verstehen und wissen, für welche Art von Problemen sie geeignet sind, um das richtige Tool für den Job auszuwählen, genau wie ein Generalunternehmer wissen muss, welches seiner Konstruktionswerkzeuge es ist das richtige Werkzeug für den Job. Kein Werkzeug ist an und für sich gut oder schlecht. Es ist gut, wenn es gut passt, um ein wichtiges Problem zu lösen.
Abschließend möchte ich zwei weitere wichtige Unterschiede in der Definition von Datenbank und DBMS erwähnen, die in der bisherigen Diskussion möglicherweise übersehen werden. Die Definition der Datenbank beinhaltet eine " umfassende Sammlung verwandter Daten". Die Definition von DBMS beinhaltet "groß strukturiert verwalten"Verwenden Sie besser MS Access oder ein anderes relationales DBMS. Ein Kartenkatalog ist vielleicht doch keine Datenbank, da er zwar umfassend ist (er enthält alle Bücher in der Bibliothek), aber keine Informationen zu Büchern enthält, und keine vollständigen Informationen zu Autoren, Herausgebern, etc.
Zweitens zeichnet sich ein DBMS durch das Speichern von "strukturierten" Daten aus. Es basiert vollständig auf einem definierten Schema diskreter Datenelemente mit strukturierten Typen. Ein NoSQL-Produkt, beispielsweise ein Schlüsselwertspeicher ohne Schema, zeichnet sich durch die Speicherung unstrukturierter Daten aus. Dieses NoSQL-Produkt entspricht daher nicht der Definition eines DBMS. Wenn das Problem, das Sie lösen möchten, die Speicherung unstrukturierter Daten ist (etwas, das wir bei der Entwicklung von DBMS noch nicht versucht haben), und Sie keine Datenverwaltungsfunktionen benötigen, die von der Anwendung, in die Sie schreiben, unabhängig sind Verarbeiten Sie diese unstrukturierten Daten, ist das NoSQL-Produkt eine perfekte Werkzeuganpassung.
Ich hoffe, diese Antwort ist eine Bereicherung für die anderen großartigen Antworten, die hier veröffentlicht werden. Ich freue mich auf Kommentare und Diskussionspunkte, die uns allen helfen, unser Verständnis von Datenbanken und Technologieklassen, die datenbezogene Probleme lösen, zu erweitern.