NoSQL ist eher evolutionär als revolutionär. Es kombiniert im Wesentlichen die vorhandenen Ideen des "externen Datenbankspeichers" mit "Verwendung vertrauter Datenstrukturen, nicht relationaler Tabellen".
Es gibt mehr Datenbanktypen als relationale, beispielsweise hierarchische Datenbanken . Nach heutigen Maßstäben archaisch, passte es sehr gut zu den Datenstrukturen seiner Daten (z . B. COBOL- Datensätze). Der springende Punkt ist, dass die Daten in der Datenbank eng an die Anordnung der Datensätze in den verwendeten Programmiersprachen angelehnt wurden.
Schneller Vorlauf zur Erfindung relationaler Datenbanken , bei denen die Datenbank letztendlich die Probleme trennt und bei richtiger Normalisierung eine großartige Möglichkeit darstellt, die meisten Datentypen und Beziehungen zwischen Daten zu visualisieren. Es ist im Vergleich zu anderen Datenbanktypen sehr einfach zu verstehen. Es schlägt jedoch völlig fehl, Daten so zu speichern, dass Objekte und Klassen in einem Programm gespiegelt werden. Daher die Erfindung der objektrelationalen Abbildung . Mit anderen Worten, das Design der Datenbank ist tatsächlich ein Hindernis für das Design des Programms, das sie verwendet. Aus diesem Grund benötigen wir ORM-Bibliotheken wie Hibernate. Während sauber und konsequent, gibt es immer den nagenden Zweifel im Hinterkopf, dass etwas nicht ganz stimmt.
Dies führte zu zwei weiteren Arten von Datenbanken, Objektdatenbanken und NoSQL .
Beide versuchen, die Probleme zu lösen, die durch relationale Datenbanken verursacht werden, ohne uns den geisteskranken Schrecken hierarchischer Datenbanken auszusetzen. Daten werden immer noch in Repositorys abgelegt, die Tabellen vage ähneln, aber in Wirklichkeit eher Datenstrukturen programmieren als relationale Tabellen. Während Objektdatenbanken meist genau definierten Regeln folgen, ist meines Erachtens NoSQL eher willkürlich. Beispielsweise kann eine Tabelle als Hash-Tabelle oder als Array dargestellt werden. Es gibt keine einfache, genau definierte Möglichkeit, sie mit einem beliebigen Tool abzufragen, das mit Oracle SQL Developer oder SQL Server Management Studio vergleichbar ist .
Die Idee ist, dass man Datenstrukturen definieren kann, die einfach im Code durchsucht werden können, anstatt SQL-Abfragen zusammenzusetzen, die besser für ein SQL-Datenbankmodul geeignet sind, anstatt die gewünschte Abfrage auszudrücken. Beispielsweise sind unscharfe oder teilweise Übereinstimmungen schwieriger und führen in einer relationalen Datenbank zu einer schlechteren Leistung, während eine NoSQL-Datenbank möglicherweise eine für eine solche Suche optimierte Struktur aufweist und in einem Bruchteil der Zeit vervollständigt wird.
Es gibt Sprachen für die Abfrage von NoSQL. Es gibt jedoch keine universelle Sprache wie SQL für relationale Datenbanken.
Späte Bearbeitung:
Obwohl ich mit NoSQL-Datenbanken vertraut bin, war diese Frage der Anstoß für mich, ein Qualitätsbuch zu diesem Thema zu kaufen und es mit dem Ziel zu lesen, ein echter Experte für dieses Thema zu sein. Die restlichen Kommentare basieren auf NoSQL Distilled: Ein kurzer Leitfaden für die aufstrebende Welt der polyglotten Persistenz von Pramod Sadalage und Martin Fowler .
Die Autoren geben an, dass relationale Datenbanken nicht gut auf Cluster skaliert werden können, die die für Websites wie Amazon und Google erforderlichen Daten liefern: NoSQL wurde entwickelt, um dieser Nische gerecht zu werden und die Parallelität und Dauerhaftigkeit von ACID zu verringern, um eine große Anzahl von Anfragen zu bearbeiten Verwenden Sie weitgehend statische Daten (daher sind ACID-Transaktionen nicht so wichtig).
Darüber hinaus wird davon ausgegangen, dass NoSQL-Datenbanken ohne Schema arbeiten (Seite 10), wodurch NoSQL-Datenbanken die Struktur von Daten einfacher ändern können. Ich bin nicht sicher, ob das Vorhandensein oder Fehlen eines formalen Schemas in dieser Hinsicht von Bedeutung ist, da SQL-Datenbanken auch das Ändern von Schemas ermöglichen. Unabhängig davon machen die beiden renommierten Autoren die Behauptung, dass es sich lohnt, sie zu untersuchen.
Ich glaube, dass diese beiden Hauptpunkte nur dazu dienen, meinen Hauptpunkt durchzusetzen, dass NoSQL evolutionär und nicht revolutionär ist. Sie speichern weiterhin Daten und verbessern inkrementell den Maßstab und die Modifizierbarkeit. Sie weisen auch darauf hin, dass NoSQL nicht versucht, relationale Datenbanken als König des Datenspeichers an sich zu reißen, sondern lediglich ein alternatives Mittel zur Datenspeicherung für die Datentypen bereitzustellen, die auf eine Weise skaliert und verändert werden müssen, die (ihrer Meinung nach) relational ist Datenbanken werden nicht gut genug unterstützt.