2010-11-23 10 views
3

Es scheint eine Menge neuer Datenbanken vom Typ "NoSQL" zu geben. Einige der beliebtesten sind CouchDB, Cassandra und MongoDB.Was sind die Unterschiede zwischen den NoSQL-Datenbanken und wie unterscheiden sie sich von traditionellen relationalen Datenbanken?

Was sind die Unterschiede zwischen solchen Datenbanken und wie unterscheiden sie sich von herkömmlichen relationalen Datenbanken? Was sind die Vor- und Nachteile der Auswahl von NoSQL DBs gegenüber SQL DBs?

+0

Sie sind nicht besser, sie lösen ein anderes Problem. Diese Frage ist ziemlich beleidigend in ihrem Titel. – HLGEM

+0

Ich habe die wichtigsten Unterschiede zwischen SQL und NoSQL in [diese Antwort] hervorgehoben (http://stackoverflow.com/questions/4255895/why-googles-bigtable-referred-as-a-nosql-database/4256209#4256209). –

Antwort

3

Vereinbart, die Frage ist "nicht was ist besser", es ist "welche Lösung oder eine Reihe von Lösungen ist am besten für diese besondere Situation."

NoSQL deckt eine Vielzahl verschiedener Speichertechnologien wie CouchDB, MongoDB, Cassandra und Solr ab.

CouchDB und MongoDB speichern mehrdimensionale Datenstrukturen. MongoDB ist auch schemalos. Cassandra ist eine spaltenbasierte Speicher-Engine für schnelles Retrieval, und Solr hilft bei der Lösung anderer Probleme wie Facettierung.

NoSQL bezieht sich einfach auf jede Speichereinrichtung, mit der nicht über SQL-Abfragen interagiert wird.

4

Der Begriff NoSQL deckt viele verschiedene Ansätze zur Datenspeicherung ab, vom einfachen Schlüssel/Wert-Speicher bis hin zu anspruchsvollen Dokumentendatenbanken. Es ist ein einprägsamer Schlagwort, aber nicht sehr beschreibend IMHO.

Für eine schnelle Intro Sie einen Blick auf the Wikipedia entry for NoSQL

1

Sie sind nicht besser nehmen könnte. NOSQL beinhaltet keine neue Innovation oder spezielle Funktion. NOSQL bezieht sich nur auf eine Sammlung von Softwareprodukten, die für bestimmte Arten von Anwendungen verwendet werden, aber nicht notwendigerweise viel gemeinsam haben. NOSQL muss keine nicht-relationale Datenbank sein.

0

Folks, Es ist eine heiße Debatte jetzt Tage, SQL oder NoSQL, Während einige die Eleganz in Bezug auf die Leistung von NoSQL-Datenbanken bewundern, während andere mit dem Erbe der SQL oder dem RDBMS leben wollen. Während jeder seine Vorzüge und Mängel hat, habe ich versucht, es mit einigen Punkten kurz zu kontrastieren.

While RDBMS uses relations and joins to make data simpler in database tables  
NoSQL don't use joins for performance. 
NoSQL scales freely when we talk in terms of schema and data, while its very tough to scale a RDBMS if data grows. 
There are restriction in size of data in RDBMS in terms of data-types capability, files of any size can be used in NoSQL databases. 
Data integrity enforcement comes to play only in RDBMS not in NoSQL databases. 
ACID is not the cup of tea for NoSQL databases but for RDBMS. 
RDBMS supports complex transactions whereas NoSQL keeps mum for transactions. 
NoSQL does not support constraints and validations while its the basic ingredient in RDBMS. 
Data is not structured in NoSQL but is highly structured in form of tables in RDBMS. 

Es hängt alles von der Art und Notwendigkeit des Projekts ab, ob SQL oder NoSQL verwendet werden soll.

+0

Sehr schöne detaillierte Erklärung –

0

RDBMS ist eine vollständig strukturierte Methode zum Speichern von Daten. Während der NoSQL ist eine unstrukturierte Art der Speicherung der Daten. Und ein weiterer Hauptunterschied besteht darin, dass die Menge der gespeicherten Daten hauptsächlich vom physischen Speicher des Systems abhängt. Während Sie im NoSQL sind, haben Sie keine Beschränkungen, da Sie das System horizontal skalieren können.

Sie werden feststellen, dass die NoSQL-Datenbank nur wenige gemeinsame Merkmale aufweist. Sie lassen sich grob in einige Kategorien unterteilt werden:

Schlüssel/Wert speichert Bigtable inspiriert Datenbanken (basierend auf dem Google Bigtable Papier) Dynamo inspiriert Datenbanken verteilten Datenbanken Dokument Datenbanken

0

Nun, Der grundlegende Unterschied sind unten diskutiert.Natürlich, jetzt No-SQL Konzepte immer beliebter Tag für Tag.Aber noch die, die wir basierend auf Projekt brauchen oder Anforderungen verwenden müssen.

1) SQL-Datenbanken werden in erster Linie als RDBMS bezeichnet. während NoSQL-Datenbank in erster Linie als Non-Relational oder Distributed Datenbank bezeichnet werden.

2) RDBMS folgen ACID Eigenschaften d.h Atomcity, Consistency, Isolation, Durability.But in No-SQLs es folgende CAP (Konsistenz, Verfügbarkeit und Portionieren).

3) In SQL wir Daten in tabellarischer speichern formatiert only.But in No-SQL es Sammlung von Schlüssel-Wert-Paar verwendet, Dokumente, Graph-Datenbanken oder Weit Spalte stores.So No-SQL ist Schema frei und Es kann strukturierte, halbstrukturierte und unstrukturierte Daten verarbeiten. Aber SQL ist nicht Schema free.SQL hat Vordefiniertes Schema .i.e. In SQL Wenn Sie Tabelle haben und in dieser ersten Spalte ist Int Datentyp, dann können Sie String oder Float-Werte nicht speichern.

4) RDBMS folgt SQL (Structured Query Language) zur Definition und Manipulation von Daten, die sehr leistungsfähig ist. In der NoSQL-Datenbank konzentrieren sich Abfragen auf die Sammlung von Dokumenten. Manchmal wird es auch als UnQL (unstrukturierte Abfragesprache) bezeichnet. Die Syntax der Verwendung von UnQL variiert von Datenbank zu Datenbank. Auch SQL-Datenbanken sind gut geeignet für die komplexe abfrageintensive Umgebung, während NoSQL-Datenbanken nicht gut für komplexe Abfragen geeignet sind. Auf einer höheren Ebene haben NoSQL keine Standardschnittstellen, um komplexe Abfragen auszuführen, und die Abfragen selbst in NoSQL sind nicht so leistungsfähig wie die SQL-Abfragesprache.

Für Eg..Take Social Eng. Websites, wir laden Fotos/Videos/Musik/Album..etc.For, dass wir Kommentare erhalten, Antworten auf Kommentare, wie .. etc .. Hier können wir Zahlen, Sonderzeichen .., so fast wir können nicht vorhersagen, was die sein könnte antworten oder kommentieren.In diesem Fall gehen wir für No-SQL in dokumentiertem Typ wie unten, um die Kommentare zu speichern.

{ 
    user_id: ObjectID("65f82bda42e7b8c76f5c1969"), 
    update: [ 
    { 
     date: ISODate("2015-09-18T10:02:47.620Z"), 
     text: "Nice picture." 
}, 
{ 
    date: ISODate("2015-09-17T13:14:20.789Z"), 
    text: "[email protected] smile symbol" 
} 
{ 
    date: ISODate("2015-09-17T12:33:02.132Z"), 
    text: "...Oh my god.." 
    } 
] 
} 

oben, wenn wir für SQL gehen kippen wir speichern Kommentare (Text oben) in Spalte only.we Bedarf auf type.So speichern Basis werden wir mit Big komplexer Abfrage mit der Nummer am Ende des mit verschiedenen Tabellen verknüpft .But SQL ist gut für Transaktionen.

5) In den meisten typischen Situationen sind SQL-Datenbanken vertikal skalierbar. Sie können die zunehmende Last verwalten, indem Sie die CPU, den RAM, die SSD usw. auf einem einzelnen Server erhöhen. Auf der anderen Seite sind No-SQL-Datenbanken horizontal skalierbar. Sie können in Ihrer No-SQL-Datenbankinfrastruktur einfach weitere Server hinzufügen, um den großen Datenverkehr zu bewältigen.

6) SQL-Datenbanken sind am besten geeignet für Heavy duty grenzüberschreitender Typ-Anwendungen, da es stabiler und verspricht, die Unteilbarkeit sowie Integrität der Daten ist. Während Sie NoSQL für Transaktionszwecke verwenden können, ist es in Hochlast und für komplexe Transaktionsanwendungen noch nicht vergleichbar und stabil genug.

7) Beispiele für No-SQL sind MangoDB, Cassandra..etc während für SQL sind MySQL, SQL Server etc ..

Verwandte Themen