Was ist ein Beispiel für eine nicht-relationale Datenbank? Wo / wie werden sie verwendet?

StackOverflow https://stackoverflow.com/questions/202819

  •  03-07-2019
  •  | 
  •  

Frage

Ich habe für einige Zeit mit relationalen Datenbanken gearbeitet, aber es kam erst vor kurzem zu mir, dass es auch andere Arten von Datenbanken, die nicht -relational.

Was sind einige Beispiele für nicht-relationale Datenbanken, und wo / wie werden sie verwendet in der realen Welt? Warum würden Sie wählen, eine nicht-relationale Datenbank über relationale Datenbanken benutzen?

Bearbeiten : Zwei ähnliche Fragen haben sich in den Antworten erwähnt:

War es hilfreich?

Lösung

  • Flat-Datei
    • CSV oder andere getrennte Daten
    • Tabellen
    • / etc / passwd
    • Mbox-Mail-Dateien
  • Hierarchical
    • Windows Registry
    • Subversion mit dem Dateisystem, FSFS, statt Berkley DB

Andere Tipps

Eine zugegebenermaßen dunkel, aber interessante Alternative zu den Arten von Datenbanken hier erwähnt ist die assoziative Datenbank , wie Sätze, von LazySoft Technologie . Es gibt eine kostenlose persönliche Version, die Sie herunterladen können und versuchen, auf eigene Faust. Die Enterprise Edition ist ebenfalls kostenlos, erfordert aber eine Anfrage an das Unternehmen.

Im Wesentlichen eine assoziative Datenbank ermöglicht es Ihnen, Informationen in der gleichen Weise zu speichern, wie unser Gehirn zu tun: wie die Dinge und Assoziationen zwischen diesen Dingen. Der Name "Sätze" kommt aus dem Weg können diese Informationen in einer dargestellt werden Subjekt-Verb-Objekt Syntax:

  • Tom ist Bruder Laura
  • San Francisco befindet sich in California
  • Mike hat ein Kreditlimit von $ 10.000

Ein Satz kann das Subjekt oder Objekt eines anderen Satzes sein:

  • (Bus 570 kommt bei 8.15) auf Sonntag
  • Mary sagt (die Torte wurde gebacken William)

Also, alles eingekocht werden kann Einheiten und Verbände .

Es gibt natürlich viel mehr Sätze als das, was hier ausgedrückt werden. Ich empfehle, dass Sie einige Zeit dauern, um mehr über sie in einem Whitepaper lesen von LazySoft.

"Das assoziative Modell von Daten" ein Buch im PDF-Format von Simon Williams erhältlich ist, einer der Schöpfer von Sätzen.

Eine nicht-relationales Dokument orientierte Datenbank, die wir gesucht haben bei Apache CouchDB .

  

Apache CouchDB ist eine verteilte, fehlertolerante und Schema freien dokumentenorientierte Datenbank zugänglich über eine RESTful HTTP / JSON-API. Unter anderem bietet es robust, inkrementelle Replikation mit bidirektionaler Konflikterkennung und -lösung und ist abfragbar und Wende eines tabellenorientierte Sicht Motor mit JavaScript, die als Standardansicht Definition Sprache.

Unser Interesse war eine verteiltes Zugang Benutzereinstellungen speichern bei der Bereitstellung, die immun sein würde Veränderungen gestalten, auf die wir bevorzugen Objekte aus Java Serialisierung könnten und die, die gerade so leicht von einer XULRunner basierten Client-Anwendung mit Javascript zugreifen zu können.

Jede Datenbank, die eine „Berkley Stil-Datenbank“ oder „Key / Value“ Die Datenbank ist nicht relational vorgibt zu sein.

Diese Datenbanken sind in der Regel komplexe Hash-Algorithmen und bieten einen sehr schnellen Lookup O (1) auf der Basis aus einem Schlüssel, aber lassen Sie jede Form von relationaler Güte beenden Benutzer basieren.

Zum Beispiel in einer relationalen Datenbank, würden Sie Ihre Struktur normalisieren und viele Tabellen verbinden zusammen einen einzigen Ergebnismenge zu erstellen.

In einem Schlüssel / Wert-Datenbank, würden Sie so viel wie möglich denormalize und dann einen eindeutigen Schlüssel verwenden, um Daten nachzuschlagen.

Wenn Sie Daten aus zwei Quellen ziehen müssen, würden Sie die Ergebnismenge mit der Hand zusammenschließen müssen.

Alle Datenbanken waren ursprünglich nicht-relationale, war es nur mit der Ankunft von DB2 und Oracle in der Mitte der 1980er Jahre, dass sie sich gemeinsam. Vor, dass die meisten Datenbanken, in denen entweder flachen Dateien oder hierarchisch aufgebaut.

Flat-Dateien sind langweilig von Natur aus, aber hierarchische Datenbank ist viel weniger, besonders als DB2 auf tatsächlich umgesetzt wurde oben auf eine hierarchische Implementierung (nämlich VSAM) in der ersten Instanz. VSAM ist glaube ich immer noch um auf Mainframe-Systemen und ist von einiger erheblicher Bedeutung.

DB / 1 (so dunkel, jetzt kann ich nicht einmal ein Wikipedia-Link finden) war IBMs Vorgänger Prime-Time-Datenbank DB2 (daher der Name). Das war hierarchisch - im Grunde eine Datei hatte, die von einer beliebigen Anzahl oder ‚root‘ Aufzeichnungen bestand, in der Regel direkt zugänglich durch einen Schlüssel. Jeder Wurzeldatensatz könnte dann eine beliebige Anzahl von untergeordneten Datensätzen von ihm weg, von denen jeder wiederum könnte es eigene Kinder ist. Der Nettoeffekt ist eine Indexdatei oder Stammsätze mit jeder Wurzel die Spitze einer potentiellen baumartigen Struktur ist. die untergeordneten Datensätze Zugriff könnte schwierig sein - es Einschränkungen des direkten Zugriffs waren so in der Regel Sie den Baum für den Datensatz, den Sie benötigt der Suche durchlaufen endete. Eine ‚Datenbank‘ könnte eine beliebige Anzahl dieser Dateien darin haben, in der Regel durch Tasten zusammen.

Diese große Nachteile hatte - nicht zuletzt, die tatsächlich geschrieben ein volles Programm etwas verlangte tun - im Grunde das Äquivalent einer Tage Arbeit für das, was wir in SQL in wenigen Minuten jetzt tun können. es hat jedoch wirklich Punktzahl auf der Ausführungsgeschwindigkeit, in diesen Tagen ein Mainframe über die Verarbeitungsleistung des iPhone hatte (wenn auch für Daten-I / O optimiert) und schlechte DB2-Abfragen könnte eine Multi-Millionen-Dollar-Installation tot töten. Das war nie ein Problem mit DB / 1 und in einer Welt, wo Programmierer waren weniger teuer als CPU-Zeit machte es Sinn.

Google App Engine-Datenspeicher :

  

Der App Engine-Datenspeicher ist nicht eine relationale Datenbank. Während der Datenspeicher-Schnittstelle viele der gleichen Merkmale der traditionellen Datenbanken hat, bedeuten die Datenspeicher der einzigartigen Eigenschaften eine andere Art und Weise der Gestaltung und Verwaltung von Daten nutzen die Möglichkeiten der Anlage automatisch zu skalieren.

Das PI historische Datenbank von OSIsoft ist nicht-relational. Es ist nur timestamped Daten zu archivieren gemacht. Es ist viel von der Industrie, vor allem als die Back-End-Datenbank für alle, die ‚Dashboards‘ verwendet.

Es gibt keine Notwendigkeit darin relationalen zu sein, da es keinen beitritt.

Weitere zwei Arten von Datenbanken, die kommen noch nicht:

  1. Content Repositories sind Datenbanken für den Inhalt entworfen (das heißt Dateien, Dokumente, Bilder, usw.). Sie haben in der Regel additioan Konstrukte wie hierarchisch durchsuchen Inhalt, Suche, Transformation zwischen verschiedenen Formaten, Versionierung und vielen anderen Dingen. Beispiele - Alfresco, Documentum, hase, Tag, Open Text, viele andere ECM-Anbieter.

  2. Verzeichnisse, das heißt Active Directory oder LDAP-Verzeichnisse. Dies sind Datenbanken entworfen für Low-Schreib- / Lese hohe Szenarien und hoch über hohe geographische Entfernungen / Verbindungen mit hohen Latenz verteilt. Während vor allem für die Authentifizierung / Autorisierung verwendet, müssen sie Fall nicht, wenn Ihre Anwendung die Anforderungen entspricht.

Dimensional Datenbanken sind großartige Beispiele für nicht-relationale Datenbanken. Sie sind sehr häufig für ‚Business-Dashboards‘ / ‚Business Intelligence‘ für KPIs und andere Arten von aggregierten oder statistische Daten verwendet. Sie sind meist aus relationalen Datenbanken bevölkern und eine bessere Leistung in bestimmten Situationen anbieten können.

http://en.wikipedia.org/wiki/Dimensional_database

  1. XML-Datenbanken z Xindice
  2. Objekt-Datenbanken z db4o

Beachten Sie, dass das Konzept der relationalen Datenbanken höchst umstritten ist. Puristen wie C. J. Datum würde argumentieren, dass viele Datenbanken gemeinsam nutzen (wie Oracle und SQL Server) nicht erfüllen, ausreichend mit dem relationalen Modell bezeichnet ‚relational‘ werden.

Nicht-Relationale Datenbanken nur nicht erfüllen Codds Anforderungen. Intersystems Caché Nähte insgesamt re-write / Re-Design der alten Pick-Betriebssystem der Datenbank. Von dem kleinen ich von Caché gelesen habe scheint es ein schön gemacht Redesign zu sein. Es erlaubt .net Programme auf die Datenbank zugreifen wie es SQL würde. Cachés Lauf ist die Pick-OS-Programme ohne Änderungen zu erfordern. Durch Ihre Pick-Dateien in Caché importieren können Sie immer noch Ihre alten grünen Bildschirm-Anwendungen laufen mit ihm, sondern auch neue Programme schreiben .net verwendet, so dass Sie auf Windows-Anwendungen ohne Verzicht auf die Jahre der Daten Design migrieren können haben Sie bereits investiert. Hier einige Hintergrundinformationen auf dem Pick-DB-Modell. Eine Pick-Datenbank verwendet total Datensätze mit variabler Länge und Felder. Alle Tabelle durch einen einzigen eindeutigen Schlüssel verschlüsselt und zugänglich ist, ohne einen Index zu lesen. Wählen Sie das System, einen Hashing-Algorithmus zu verwenden, der das Element von der Festplatte liest auf allgemein auf dem ersten physischen Lese (vorausgesetzt, die Systemwartung durchgeführt wurde korrekt). Die Felder in Pick-sind nicht typisiert. Alle Daten gespeichert werden als String und Casting ist für den Programmierer auf. Nulls wird als leere Zeichenfolge gespeichert, wodurch eine Null nicht Speicherplatz in Anspruch nimmt, wie es in SQL tut. Es besteht keine Notwendigkeit für Fremdschlüssel. In der ‚Relational Welt‘ hat die DBA erstellen und Auftragskopf-Tabelle und eine Order Line Item-Tabelle. In der „Pick Model‘ gibt es eine einzige Tabelle. Ein Beispiel wäre, ‚Order Date‘ ist ein Feld, das eine Anzahl der Tage seit dem ‚13. Dezember 1967‘ speichern würde (die Daten Pick-OS wurde zum ersten Mal eingeschaltet wird). Pick-Programmierer haben nicht Y2k Probleme. Eine zweite Säule würde Kundennummer sein. Der große Unterschied ist, wenn Sie auf die Artikelnummer Spalte bekommen, wäre es ‚Mehrwertig‘ (die Codd Non-Conformance) sein. Mit anderen Worten, kann die Datenbank 1-32000 Produkte # s in dieser Spalte behandeln. Andere Spalten wie Menge wäre Bestellen in einer kontrollierenden / abhängigen Beziehung mit der Artikelnummer und würde auch mehrwertig sein. Wenn Sie auf die Menge bekommen geliefert, würde Auswahl auf eine dritte Dimension gehen und Sub-Multi-Valued Feld. Sie würden eine Sendungsnummer Spalte haben, und es wäre Mehrwertig von Einzelposten und Sub-Multi-Valued für diese Zeile für die Sendungsnummer der Sendung Menge enthält. Es gibt keine innere Joins benötigt. Alle Daten für die Bestellung werden in einer Tabelle und in einem einzigen Datensatz gespeichert. Keine Waisenzeilen aller Zeiten! Zweitens ist die Datendefinition ein bisschen anders. Unsere Wörterbücher können Definitionen für Daten enthalten, die nicht in dieser Tabelle ist oder manipuliert wird. Ein paar Beispiele sind, Kundenname. Es wäre wie folgt definiert werden ‚die Kundennummer Spalte verwenden und das Feld Name aus der Kundentabelle zurück. Ein weiteres Beispiel ist Line Item Erweiterung würde als Berechnung der Menge * Preis / PricePer definiert werden. Ich glaube, ich habe irgendwo gelesen, Caché behauptet, über 100.000 Installationen haben.

Ich würde denken, eine Flat-File-Datenbank in Excel ist nicht-relationale und von ganz wenigen Menschen genutzt werden.

Es ist wirklich nur eine Datenbanktabelle, die nicht mit anderen Tabellen verknüpft werden kann.

Objektorientierte Datenbanken sind eine interessante Art von nicht-relationalen Datenbank.

Der Handelssektor verwendet manchmal OO-Datenbanken, da jedes Angebot / Vertrag Art wie andere in dieser Kategorie suchen kann, sondern auch einzigartige Eigenschaften. Sehr schwierig, es relational darzustellen.

eXist-db ist eine XML-Datenbank, die für eine lange Zeit gewesen ist. Es ist besonders nützlich für xquery über Tonnen von XML-Dokumenten.

Jede Datei oder eine Gruppe von Dateien, die Daten enthalten, aber nicht exprimiert Beziehungen innerhalb dieser Daten ist eine nicht-relationale Datenbank.

RRDtool ist so konzipiert, speichern und aggregieren Logdaten. Sie konfigurieren einen Abtastintervall und Feed-Daten hinein, dann gibt es zeitbasierte Ergebnisse. Es ist für feste Größe Lagerung optimiert, und die letzten Ergebnisse nach einer gewissen Zeit beginnt aggregieren. Beispiel: Angenommen, Sie eine Round-Robin-Datenbank mit einem 5-Minuten-Zeitintervall haben. Auch wenn Sie es Temperaturdaten einmal pro Sekunde senden, ist es noch speichert nur die Ergebnisse in 5-Minuten-Schritten. Nach einer Woche ist es durchschnittlich diese Ergebnisse in Stundenwerte. Nach einem Monat werden stündlich Ergebnisse in der täglichen Zahlen gemittelt, und so weiter.

RRDtool wird allgemein als Backend für Werkzeuge verwendet wie Cricket und

Für eine grafische Darstellung, basierend dbms Sie Neo4j haben

Für eine hierarchische dbms Sie alle Standard-Dateisystem oder mit „Schema“ unterstützen jede LDAP-Implementierung.

Es gibt viele Antworten, aber sie alle am Ende wird in einer von zwei Hauptkategorien:

  1. Navigations. Enthält Baum / Hierarchie Datenbanken und Graph-Datenbanken.

  2. Datenbanken, die erste Normalform (mehr Werte) brechen. Inklusive Pick-Datenbanken und Lotus Notes und seine Nachkommen wie CouchDB.

EDIT: Und natürlich Schlüssel / Wert-Läden wie BDB sind nicht relational, aber das geht nur ohne zu sagen oder nicht? Ich meine, sie sind nur Schlüssel / Wert speichert.

dBase. Obwohl sie als solche in Verkehr gebracht wurde, ist es nicht die Anforderungen erfüllen.

Als OO-Datenbank Intersystems Caché in den Sinn kommt. Einige medizinischen und Bibliothekssysteme sind auf diesem gebaut.

  1. In meiner Firma www.smartsgroup.com, haben wir einen eigenen Datenbank-Engine wir eine „Transaktionsprotokoll-Datenbank“ nennen. Es basiert auf flache Dateien aufgebaut, wobei jede Datei eine Folge von „Ereignissen“ oder „Nachrichten“, im Binärformat sowie verschiedener Indizes auf diesen Daten und Algorithmen zur Wiedergabe des Zustandes eines Börse Orderbuch enthält. Es wird dringend für die sequentielle Updates optimiert und mit sequenziellem Zugriff.

  2. In der wissenschaftlichen Anwendungen ist es auch üblich, Motoren proprietäre Datenbank zu verwenden, anstatt RDBMS. Ich arbeitete auch für ein Unternehmen, das die weltweit größte Datenbank von EEG-Gehirn-Aufnahmen hat: www.brainresource.com. Es verwenden wir eine Flat-File-Datenbank, und es funktionierte gut für uns.

  3. SmartsGroup auch eine zeitliche Datenbank verwendet, die wie eine nicht-relationale Datenbanktabelle ist, mit der Ausnahme, dass wir eine Historie aller Änderungen in allen Bereichen speichern, so können wir den Zustand einer bestimmten Zeile zu einem bestimmten Zeitpunkt wiedergeben.

Die Wiki-Seite für Dimensional Datenbanken verknüpfen oben scheint verschwunden zu sein.

Einige OLAP Systeme wurden von multidimensionalen Datenbanken (MOLAP) diese gesichert werden, werden oft verwendet in Finanzanalyse. Sie bieten interaktive Clients, die es erlauben, durch die Daten auf unterschiedlichen Aggregationsebenen zu navigieren.

An meiner Universität gibt es eine Gruppe, die erforscht deduktiven Datenbanken .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top