Latest web development tutorials

NoSQL Profil

NoSQL (NoSQL = Nicht nur SQL), die "nicht nur SQL" bedeutet.

In modernen Computersystemen im Netzwerk wird eine riesige Menge von Daten haben.

Diese Daten sind ein großer Teil der relationalen Datenbank-Management-System (RDMBSs) zu behandeln. 1970 EFCodd vorgeschlagene relationalen Modell Papier "Ein relationales Modell von Daten für die großen gemeinsamen Datenbanken", die Datenmodellierung und Anwendungsprogrammierung erleichtert.

Durch die bewährte relationale Modell Anwendung ist sehr gut geeignet für die Client-Server-Programmierung, die weit über die erwarteten Vorteile, und heute ist es die gespeicherten strukturierten Daten im Netzwerk und Business-Anwendungen dominante Technologie.

NoSQL-Datenbank ist eine neue revolutionäre Bewegung, früh wurde vorgeschlagen, dass die Entwicklungstendenz von mehr und mehr bis 2009 steigen. NoSQL Befürworter, die die Verwendung von nicht-relationalen Datenspeicherung, in Bezug auf die überwiegende Nutzung von relationalen Datenbanken zu fördern, wird dieses Konzept injiziert zweifellos ein neues Denken.

Relationale Datenbank, um die Regeln zu folgen ACID

Englisch Transaktion Transaktion, und die reale Welt des Handels ist sehr ähnlich, hat es die folgenden vier Merkmale:

1, A (Unteilbarkeit) Atom <br> Atom leicht zu verstehen, dass alle Operationen in der Transaktion entweder alles getan, oder nicht, ist die Transaktion eine Transaktion die Voraussetzungen für den Erfolg in allen Operationen erfolgreich sind, solange es ein Vorgang fehlschlägt, wird die gesamte Transaktion fehlschlagen, müssen zurück zu rollen.

Wie Banküberweisungen, Kontoübertragung von A nach B 100 Yuan ausmacht, ist in zwei Schritte unterteilt: 1) Nehmen Sie die A 100 Yuan-Konten; 2) 100 Yuan Geldkonten nach B. Diese beiden Schritte werden entweder zusammen oder nicht zusammen abgeschlossen abgeschlossen, abgeschlossen, wenn nur der erste Schritt, der zweite Schritt fehlschlägt, wird das Geld irgendwie 100 Yuan weniger.

2, C (Konsistenz) Konsistenz <br> Konsistenz ist relativ leicht zu verstehen, die in der Datenbank in einen konsistenten Zustand gewesen ist, führen Sie die Transaktion nicht die ursprünglichen Datenbank Konsistenzbedingungen ändern.

Bestehende Integritätsbedingungen wie a + b = 10, wenn eine Transaktion eine ändert, müssen wir b zu ändern, so dass das hintere Ende der Transaktion noch a + b = 10 erfüllen, andernfalls wird die Transaktion fehlschlägt.

3, I (Isolation) <br> so genannte Unabhängigkeit bedeutet Unabhängigkeit einander nicht gleichzeitige Transaktionen beeinflussen, wenn ein Transaktionsdaten durch eine andere Transaktion zugegriffen werden soll , als eine andere nicht ausgeführten Transaktion so lange geändert werden, es Zugriff auf die Daten nicht von der Transaktion nicht gebunden betroffen.
Zum Beispiel ist es ein bestehendes Handelskonto übertragen wird von A nach B 100 Yuan-Konten im Fall dieser Transaktion noch nicht abgeschlossen ist. Wenn die B ihre Konten zu überprüfen, können die neu hinzugekommenen 100 Yuan zu sehen.

4, D (Haltbarkeit) Persistenz Persistenz bezieht sich <br> sobald die Transaktion verpflichtet, Änderungen wird es dauerhaft in der Datenbank gespeichert werden, wird es nicht einmal verloren gehen, wenn Systemausfällen kommt.


Verteilte Systeme

Verteilte Systeme (verteiltes System) Software-Komponenten mehrere Computer und Kommunikationsverbindung (lokales Netzwerk oder ein Weitverkehrsnetzwerk) mit einem Computernetzwerk besteht.

Verteilte Systeme sind auf der Netzwerk-Software-Systeme gebaut. Es ist gerade wegen der Eigenschaften der Software, dem verteilten System mit einem hohen Grad an Zusammenhalt und Transparenz.

Somit ist die Differenz zwischen dem Netzwerk und verteilten System, das High-Level-Software (insbesondere das Betriebssystem), sondern als Hardware.

Pc, Workstations, LANs und WANs und dergleichen: Verteilte Systeme können auf unterschiedlichen Plattformen wie angewendet werden.


Die Vorteile einer verteilten Rechen

Zuverlässigkeit (Fehlertoleranz):
Wichtiger Vorteil eines verteilten Computersystems ist die Zuverlässigkeit. Absturz eines Servers nicht den Rest des Servers beeinflussen.

Skalierbarkeit:
In einem verteilten Computersystem kann mehr Maschinen nach Bedarf hinzufügen.

Resource Sharing:
Gemeinsame Nutzung von Daten ist wichtig für Anwendungen wie Banken, Reservierungssysteme.

Flexibilität:
Da das System sehr flexibel ist, ist es einfach zu installieren, zu implementieren und neue Dienste zu debuggen.

Höhere Geschwindigkeit:
Distributed-Computing-System kann mehr Rechenleistung von Computern haben, ist es eine höhere Verarbeitungsgeschwindigkeit als andere Systeme zu machen.

Open Systems:
Da es sich um ein offenes System, das lokale oder Remote-Zugriff auf den Dienst sein kann.

Höhere Leistung:
Zentralisierte Computer-Netzwerk-Cluster im Vergleich eine höhere Leistung zur Verfügung zu stellen (und einen besseren Preis).


Der Nachteil der verteilten Rechen

Fehlerbehebung ::
Fehlerbehebung und das Problem zu diagnostizieren.

Software:
Weniger Software-Unterstützung ist der größte Nachteil von verteilten Computing-Systeme.

Netzwerk:
Fragen der Netzinfrastruktur einschließlich: Übertragungsprobleme, hohe Belastung, Informationen verloren gehen und so weiter.

Sicherheit:
Merkmale der Entwicklung des Systems ermöglicht verteilten Computersystem ist, um Sicherheitsrisiken und die gemeinsame Nutzung von Daten Probleme anfällig.


Was ist NoSQL?

NoSQL, bezieht sich auf eine nicht-relationale Datenbank. NoSQL wird manchmal auch als Abkürzung für Not Only SQL bezeichnet, unterscheidet es sich von herkömmlichen Datenbankmanagementsystem für relationale Datenbanken zusammen.

NoSQL für große Daten zu speichern. (Wie Google oder Facebook Billionen Bits an Daten pro Tag für ihre Nutzer gesammelt). Diese Art der Datenspeicherung kein festes Muster erfordern keine zusätzliche Operation kann seitlich verlängert werden.

Warum NoSQL?

Heute können wir von Drittanbietern Plattform sein: Sie können leicht zugänglich machen und holen Daten (wie Google, Facebook, etc.). Die persönliche Benutzerdaten, Social Networking, Standort, nutzergenerierten Daten und Benutzer anmeldet hat exponentiell zugenommen. Wenn wir diese Benutzer Data Mining, SQL-Datenbank möchten, die nicht geeignet für diese Anwendungen ist, und die Entwicklung der NoSQL-Datenbank ist auch gut in der Lage, diese großen Daten zu verarbeiten.

Web-Daten-Bild

Beispiele

Socialized Netzwerke:

Jeder Datensatz: UserID1, UserID2
Separate Datensätze: UserID, vorname, nachname, Alter, Geschlecht, ...
Aufgabe: Alle Freunde von Freunden von Freunden von ... Freunde von einem bestimmten Benutzer.

Wikipedia-Seite:

Große Sammlung von Dokumenten
Die Kombination von strukturierten und unstrukturierten Daten
Aufgabe: Rufen Sie alle Seiten der Leichtathletik von Olympischen Sommer vor 1950 in Bezug auf.

RDBMS vs NoSQL

RDBMS
- Die hoch organisierte Struktur von Daten
- Structured Query Language (SQL) (SQL)
- Daten und Beziehungen werden in einer separaten Tabelle gespeichert.
- Data Manipulation Language, Data Definition Language
- Strikte Konsistenz
- Basisdienste

NoSQL
- Stellt nicht nur SQL
- Keine deklarative Abfragesprache
- Keine vordefinierte Muster
- Key - Wert-Paar, das Spaltenspeicher, Dokumentenablage, Grafiken, Datenbank
- Eventual Consistency, anstatt ACID-Eigenschaften
- Unberechenbar und unstrukturierte Daten
- CAP-Theorem
- Hohe Leistung, hohe Verfügbarkeit und Skalierbarkeit

bigdata

NoSQL kurze Geschichte

NoSQL Der Begriff erstmals 1998 erschien, ist eine leichte Carlo Strozzi Entwicklung, Open Source, bietet keine relationalen SQL-Datenbank-Funktionalität.

Im Jahr 2009, Johan Oskarsson Last.fm eine Diskussion über Open-Source-Datenbank verteilt eingeleitet [2], Eric Evans von Rackspace erneut das Konzept der NoSQL vorgeschlagen, dann bezieht sich der NoSQL in erster Linie auf nicht-relationale, verbreitet, nicht zur Verfügung stellen ACID Datenbank-Design-Muster.

Im Jahr 2009 in Atlanta "no: sql (Ost)" Seminar ist ein Meilenstein, mit dem Slogan "wählen Sie Spaß, profitieren von real_world wo relationale = false;". Daher ist NoSQL häufigste Erklärung, dass "nicht-assoziierten Typ", die Vorteile der Schlüsselwert Stores und Dokumentendatenbanken betont, nicht als bloße Opposition RDBMS.


CAP-Theorem (CAP-Theorem)

In der Informatik CAP-Theorem (CAP-Theorem), die auch als Brewer Satz (Brewer-Theorem) bekannt, die das für eine verteilte Rechensystem ausgeführt, können die folgenden drei Punkte nicht gleichzeitig erfüllen:

  • Konsistenz (Konsistenz) (alle Knoten die gleichen Daten zur gleichen Zeit)
  • Verfügbarkeit (Availability) (sicherzustellen , dass jede Anforderung eine Antwort hat , unabhängig von Erfolg oder Misserfolg)
  • Partitionstoleranz (Partition Toleranz) (Systemausfall oder Ausfall einer der Informationen beeinflusst nicht die Fortführung des Betriebs des Systems)

CAP Kern Theorie ist: ein verteiltes System kann nicht gleichzeitig die Konsistenz erfüllen, Verfügbarkeit, Fehlertoleranz und verteile diese drei Anforderungen können nur zwei gute Weile treffen.

So wird nach den Grundsätzen der GAP NoSQL-Datenbank in die CA das Prinzip gerecht zu werden, gerecht zu werden und die Grundsätze der CP AP Prinzip drei Kategorien erfüllen:

  • CA - ein Single Point of Cluster treffen Konsistenz, Systemverfügbarkeit, Skalierbarkeit, in der Regel auf weniger leistungsfähig.
  • CP - erfüllen Konsistenz, wird die Teilung der Systemleistung tolerieren ist im allgemeinen nicht besonders hoch ist.
  • AP - erfüllen die Verfügbarkeit, die Partitionstoleranz des Systems, in der Regel Konformitätsanforderungen kann niedriger sein.
cap-theoram-Bild

NoSQL Vorteile / Nachteile

Vorteile:

  • - Hohe Skalierbarkeit
  • - Distributed Computing
  • - Geringe Kosten
  • - Flexible Architektur, semi-strukturierte Daten
  • - Keine komplizierte Beziehung

Nachteile:

  • - Es gibt keine Standardisierung
  • - Begrenzte Suchfunktion (bisher)
  • - Eine endgültige Einigung ist nicht intuitiv Programm

BASE

BASE: Grundsätzlich verfügbar, Soft-State, schließlich konsequent. Definiert durch Eric Brewer.

CAP Kern Theorie ist: ein verteiltes System kann nicht gleichzeitig die Konsistenz erfüllen, Verfügbarkeit, Fehlertoleranz und verteile diese drei Anforderungen können nur zwei gute Weile treffen.

BASE ist eine NoSQL-Datenbank für die Verfügbarkeit und Konsistenz Prinzip Anforderungen typischerweise schwach ist:

  • Grundsätzlich Availble - Basic verfügbar
  • Soft-State - weichen Zustand / Flexible Transaktion. "Soft-Zustand" kann als "keine Verbindung" zu verstehen ist, und "Hard-Zustand" ist "verbindungsorientiert" in
  • Eventual Consistency - Eventual Consistency Eventual Consistency ist das ultimative Ziel von ACID.

ACID vs BASE

ACID BASE
Atomic (A tomicity) Basis verwendet werden können (B asically A vailable)
Konsistenz (C onsistency) Soft - Zustand / Flexible Services (S oft Zustand)
Isolation (I solation) Eventual Consistency (E ventual Konsistenz)
Persistent (D urable)

NoSQL Datenbank-Klassifizierung

Typ Einige Vertreter

Feature
Column Stores

Hbase

Kassandra

Hyper

Wie der Name andeutet, wird in Datenspalten gespeichert. Das größte Feature ist einfach strukturiert und semi-strukturierte Daten zu speichern, die einfache Datenkompression zu tun, ein sehr großer Vorteil für IO einer Spalte oder Spalten einer Abfrage zu haben.

Dokumentenspeicher

MongoDB

CouchDB

Dokumentenablage wird in der Regel zu speichern , ähnlich json - Format verwendet, Inhalt wird in dem Dokumenttyp gespeichert. Dies hat auch die Möglichkeit , einen Index auf einem Feld zu bauen, einige der Funktionen einer relationalen Datenbank zu erreichen.

Schlüssel-Wert - Speicher

Tokyo Cabinet / Tyrant

Berkeley DB

memcachedb

Redis

Sie können schnell durch Schlüssel , um seinen Wert überprüfen. Im Allgemeinen unabhängig von dem Speicherformat Wert zu erben. (Redis enthält zusätzliche Features)

Kartenspeicher

Neo4j

FlockDB

Beste Grafiken enthalten Beziehungen. Niedrige Verwendung von traditionellen relationalen Datenbank - Performance , es zu lösen, und das Design ist unpraktisch zu verwenden.

Object Storage

db4o

Versant

Durch die objektorientierte Sprachsyntax ist ähnlich dem Betrieb der Datenbank über das Datenobjekt zugegriffen.

xML - Datenbank

Berkeley DB XML

BaseX

Effiziente XML - Datenspeicher und unterstützt interne XML - Abfragesyntax, wie XQuery, XPath.


Wer nutzt

Es gibt bereits viele Unternehmen NoSQL verwenden:
  • Google
  • Facebook
  • Mozilla
  • Lehmziegel
  • Foursquare
  • LinkedIn
  • Digg
  • McGraw-Hill Education
  • Vermont Public Radio