Diese Frage wurde viel diskutiert: Welche Datenbanktechnologien verwenden große Suchmaschinen?
So viele Diskussionen, dass ich verwirrt war. Also ... was ist überhaupt eine Datenbank? Sind nur relationale Datenbanken "Datenbanken"? Sind objektorientierte Datenbanken "Datenbanken"? Gibt es ein System, mit dem ich Informationen (wie eine Karte, eine Liste usw.) in einer Datenbank speichern und abrufen kann?
Oder muss eine Datenbank Informationen speichern / abrufen und verfügt auch über einige Verwaltungsfunktionen wie Benutzer und Berechtigungen? War dBase III plus eine Datenbank, da sie nicht wirklich relational war?
database-theory
terminology
woliveirajr
quelle
quelle
Antworten:
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.
quelle
Ich zitiere Dictionary.com , wie ich dies als die Bedeutung der Datenbank übernehmen:
Unter dieser Definition können Sie eine Datenbank von einem vollständigen RDBMS (SQL Server, Oracle usw.) bis zu einer einfachen Flat-Datei betrachten. Wenn es Daten speichert, kann es technisch als Datenbank betrachtet werden.
Nun, wie die meisten Dinge in unserer modernen Welt, gibt es die akzeptierte Bedeutung eines Namens. Und im Fall einer Datenbank ist dies von Person zu Person unterschiedlich. Viele Leute denken an eine Datenbank nur als eine Entität, die von einem Datensystem verwaltet wird.
Es ist erwähnenswert, @ FrustratedWithFormsDesigner Kommentar:
Ich stimme dieser Aussage zu und glaube nicht unbedingt, dass eine Datenbank in einem "Computer" oder einem anderen elektronischen Gerät gespeichert sein muss. Ein Kartenkatalog ist ein perfektes Beispiel für eine nicht computergestützte Datenbank.
quelle
Eine Datenbank ist für mich eine Funktion zum Speichern und Abrufen von Daten. Wir nennen Access eine Datenbank, obwohl es eigentlich nur ein hübsches Frontend für eine Sammlung von Dateien ist. Outlook (zumindest auf dem Mac) ruft in seinem Nachrichtenspeicher eine Datenbank auf. Einige Leute nennen Excel sogar eine Datenbank (aber das lässt mich schnauben - es gibt also irgendwo eine Zeile).
Ich denke, die Definition hat sich im Laufe der Zeit weiterentwickelt, und der Vergleich von dictionary.com mit wiki und Artikeln von verschiedenen Datenbankfachleuten im Laufe der letzten 30 Jahre wird eine Vielzahl von Definitionen ergeben. Auch die Definition wird sich weiterentwickeln.
Wenn es sich um eine Datenquelle handelt, die Sie oder Ihre Anwendungen zum Speichern oder Abrufen von Daten verwenden, unabhängig davon, ob es sich um relationale Daten handelt oder nicht, kann ich Sie problemlos als Datenbank bezeichnen. Wenn es sich um eine Textdatei handelt, werden Sie möglicherweise ein paar hochgezogene Augenbrauen sehen, aber ich bin mir nicht sicher, ob ich die Notwendigkeit verstehe, die Definition so genau festzulegen, dass die Leute darüber wütend werden.
Einige Leute werden anscheinend ziemlich nervös, wenn man sogar annimmt, dass BigTable (oder NoSQL oder Hadoop) eine "Datenbank" ist, und behauptet, dass der Aufruf als solche - insbesondere für Neulinge - ein großes Versprechen auf unendliche Leistung und Unsterblichkeit gibt und Einhörner. Normalerweise meinen Sie damit nur, dass hier Daten gespeichert und abgerufen werden, ohne Gewähr dafür, was die eigentliche Implementierung bewirkt, ob relational oder nicht, oder ob Sie solche Daten selbst erstellen könnten, wenn Sie sich an einem Sonntagnachmittag langweilen.
Ich gebe zu, dass ich zusammenschramme, wenn Leute über eine relationale Datenbank sprechen und Zeilen als "Datensätze" oder Spalten als "Felder" bezeichnen. Aber während es mich ein bisschen ärgert, werde ich nicht wütend und versuche nicht, sie zu korrigieren - worum geht es? Ich habe verstanden, was sie meinten, auch wenn sie nicht 100% genau sind.
quelle
Es kann sehr allgemein sein, nur eine Sammlung von Daten und Strukturen. Das System zum Verwalten einer Datenbank kann so einfach wie ein Dateisystem oder so komplex wie ein Verbundsystem wie DNS sein.
Im Allgemeinen impliziert man in der modernen Verwendung, wenn man von Datenbank spricht, sowohl die Datenspeicherung als auch die Strukturen und ein zugehöriges Datenbankverwaltungssystem, und da so viel theoretische Arbeit an den Grundlagen relationaler Datenbanken geleistet wurde, sind diese immer noch am beliebtesten So oft, wenn man Datenbank sagt, impliziert man oft eine relationale Datenbank.
Mit dem Aufkommen von NoSQL / nicht relationalen Datenbanken ist der Begriff Datenbank wieder allgemeiner und möglicherweise mehrdeutiger geworden, da ein gemeinsames Modell zum Verständnis der Daten nicht angenommen werden kann.
Vor der Einführung der relationalen Theorie variierte die Modellierung von Daten in anderen Systemen von System zu System und hatte keine gemeinsamen Leitprinzipien wie das relationale Modell - andere Arten von Datenbanken wie hierarchische Datenbanken und Netzwerkdatenbanken wurden verwendet.
quelle
Ich habe während der Entwicklung von dBASE Direct / 36 und dBASE IV für Ashton-Tate gearbeitet und dabei mein Wissen über dBASE III Plus verwendet, um ein kleines Programm zu programmieren, das beim Testen von dBASE Direct / 36 (Schnittstelle zu einem IBM System / 36 Mini-Computer) hilfreich ist. Wir mussten binäre Lade- und Aufrufanweisungen für die System / 36-SQL-Tabellen ausführen, bei denen die gleichen Lade- und Aufrufanweisungen wiederholt eingegeben werden mussten, während die Tabellennamen und Feldnamen bei der Übermittlung geändert wurden, um die Daten aus den einzelnen Datensätzen oder zu erhalten Gruppe von mehreren Datensätzen je nach Umfang der Abfrage. Mit dBASE III Plus, einer Programmiersprache für Datenbanken, konnte ich die Datei 'dbldot.prg' erstellen, die die Eingabeaufforderung mit einem einzelnen Punkt in einen doppelten Punkt umwandelte, da ich als Indikator dafür entworfen habe, dass sich das System im SQL-Abrufmodus befindet, und auch für den Text unter der Befehlszeile, die sagte: "
Zu dieser Zeit war dBASE eine Datenbankprogrammiersprache oder genauer gesagt eine Programmiersprache, die die Manipulation von Datensätzen ermöglichte. Ein Datensatz war eine Gruppe von Feldern, die Daten für ein einzelnes Element enthielten, z. B. LAST_NAME, FIRST_NAME, ADDRESS, CITY, ST, ZIP, PLUS_FOUR, SSN usw. Diese Strukturen wurden später in Tabellen dargestellt und in Zeilen und Spalten organisiert. Eine Zeile ist ein einzelner Datensatz, und eine Spalte sind die Daten in einer Reihe von Datensätzen für jeden Feldnamen. Auf diese Weise kann ein Benutzer leicht nach Feldnamen sortieren, um Datensätze nach bestimmten allgemeinen Feldern wie CITY, ST, ZIP usw. zu sortieren und zu gruppieren.
Die dBASE-Sprache ermöglichte es dem Benutzer oder Programmierer, Daten zu manipulieren, zu sortieren, Tabellen anzuzeigen, Aufzeichnungen zu erstellen und Berechnungen durchzuführen. Dies könnte mit DtoC und CtoD (Date to Character, Character to Date) erfolgen. Ohne die dBASE-Sprache wären die Datendateien einfach eine Reihe von Datensätzen (Zeilen) mit gemeinsamen Feldern (Spalten).
Relationale Datenbank - das war der Begriff, der verwendet wurde, um mehr als eine Datenbank (Tabelle) mit einer anderen zu verknüpfen, die unterschiedliche Informationen enthielt, jedoch ein oder mehrere gemeinsame Felder enthielt. Eine Datenbank mit dem Titel "Adressen" enthält beispielsweise "LNAME", "FNAME", "ADRESSE", "STADT", "ST", "ZIP", "SSN". Eine andere Datenbank mit dem Titel "CHECKING" enthält "ACCOUNT_NO", "ROUTING_NO", "CUSTLAST", "CUSTFIRST", "DOB", "SSNO", "CUST_NO". Obwohl die Feldnamen unterschiedlich sind, enthalten einige von ihnen dieselben Informationen, die miteinander verknüpft werden können, um die Daten aus einer Datenbank mit denen der anderen zu verknüpfen und beispielsweise Kontoauszüge an die Bankkunden zu senden. Verwenden der Felder für den Vor- und Nachnamen und der SS-Nummern, um die Daten in Beziehung zu setzen, Abrufen der Adresse des Kunden aus einer Datenbank und Abrufen der Kontoinformationen, die aus der anderen in den Kontoauszug eingefügt werden sollen. In größerem Maßstab kann dann eine Seriendruckfunktion stattfinden, um diese Aktionen für jeden einzelnen Kunden in der ADDRESS-Datenbank auszuführen, wobei die zugehörigen Kontoinformationen jedes Kunden abgerufen, der Kontoauszug personalisiert, gedruckt und adressiert werden, bevor mit dem nächsten fortgefahren wird Datensatz oder Kunde in der Datenbank.
So etwas wie MS ACCESS könnte eher ein DBMS sein, aber auf einer grundlegenden Ebene war dBASE eine Sprache zum Erstellen von Front-End-Benutzeroberflächen und zum Durchführen der gesamten Datenmanipulation zwischen Datenbanken, um eine Beziehung zwischen ihnen herzustellen und die resultierenden Daten für zurückzugeben Wir sind nur Menschen zu gebrauchen.
Seitdem hat sich viel verändert, aber das Fundament bleibt dasselbe. Daten sind immer noch in Datensätzen enthalten, die eine Reihe von Feldern verschiedener Datentypen enthalten. Sie müssen über einen oder mehrere gemeinsame Datenpunkte mit den Daten anderer Datenbanken verknüpft und zusammengeführt werden, damit wir Kreditkarten verwenden und Konten im Internet einrichten können Verwenden Sie unsere IDs für Google, Facebook, Twitter, verfolgen Sie unsere Kaufhistorien und so weiter. Unser Leben ist nur eine Reihe von vielen überlappenden relationalen Datenbanken, die wir jeden Tag durchlaufen, ohne an all die Bits und Bytes zu denken, die interagieren, um uns die Freuden und die ständige Entwicklung der Leichtigkeit in unserem heutigen Leben zu bringen.
Zumindest habe ich das in den vielen Jahren des Software- und Hardwaretests, die 1984 mit dBASE II begannen, immer so verstanden.
quelle
Codds wegweisendes Papier trug den Titel Ein relationales Datenmodell für große gemeinsam genutzte Datenbanken . Was er "Datenbank" nannte, würden wir als Datenbank bezeichnen.
Ich mag jedoch seine Bilder. Dies impliziert einen Ort, an dem Daten gespeichert werden können, in dem Wissen, dass sie sicher aufbewahrt werden, ordnungsgemäß ausgewiesen werden und nur an diejenigen zurückgegeben werden, die nachweisen können, dass sie berechtigt sind, darauf zuzugreifen. Wenn unsere Filiale ausgeraubt wird, haben wir die Gewissheit, dass die Bank über eine angemessene Sicherung verfügt, um sicherzustellen, dass unsere wertvollen Ressourcen nicht unwiderruflich verloren gehen.
quelle
Aus den Grundlagen des Datenbankdesigns 7. Aufl. (S. 5),
Sie sagen weiter, dass die gemeinsame Nutzung eingeschränkter ist,
In keiner Definition ist eine Datenbank explizit in irgendeiner Weise "relational", jedoch wird dies häufig angenommen, da die Branche mit Datenbankadministratoren eines bestimmten Typs gesättigt ist und die wahrscheinlich fortschrittlichste DBMS-Software relational ist. Aus dem relationalen Datenbankwörterbuch
Dieser letzte Punkt ist etwas wichtig, und ich mag auch die Unterscheidung zwischen dem DBMS / RDBMS und der Datenbank selbst.
quelle