Modul 165

Aus TBZ_-_Wiki
Wechseln zu:Navigation, Suche

NoSQL Datenbanken

NoSQL ist ein nicht-relationales Datenmodell und erlaubt Datenbanksystemen andere Organisationsstrukturen, als eine SQL-Datenbank (keine Spalten und Lücken) und mehr Flexibilität bei der Auswahl eines Formats, das am besten zu den Daten passt. Der Begriff "NoSQL" wurde erst in den frühen 2000er Jahren populär. Er bedeutet nicht, dass die Systeme keine SQL-Anweisungen verwenden, denn NoSQL-Datenbanken unterstützen gelegentlich auch einige In anderen Worten, "NoSQL" wird manchmal als "nicht nur SQL" definiert.


Zusammenfassung SQL Datenbanken

SQL steht für "Structured Query Language" (strukturierte Abfragesprache) und ist die Programmiersprache, die seit den 1970er Jahren häufig für die Verwaltung von Daten in relationalen Datenbankmanagementsystemen (RDBMS) verwendet wird. Als Speicherplatz noch teuer war, konzentrierten sich SQL-Datenbanken auf die Reduzierung von Datenduplikaten. In relationalen Datenbanken, die Daten in Tabellen und Zeilen speichern, die auf verschiedene Weise miteinander verbunden sind, wird SQL immer noch häufig zur Abfrage dieser Datenbanken verwendet. Die Datensätze einer Tabelle können miteinander oder mit einer großen Anzahl anderer Tabellen verknüpft werden, oder die Datensätze vieler Tabellen können mit einer großen Anzahl von Tabellen in einer anderen Tabelle verknüpft werden. Diese relationalen Datenbanken können dank ihrer schnellen Datenspeicherung und -erstellung große Datenmengen und komplexe SQL-Abfragen bewältigen.
SQL-Datenbanken sind gut geeignet für die Verarbeitung von strukturierten Daten oder Daten, die Beziehungen zwischen ihren Variablen und Entitäten aufweisen.


NoSQL vs. SQL Datenbanken

Im Gegensatz zu SQL können Sie bei NoSQL-Systemen mit unterschiedlichen Datenstrukturen innerhalb einer Datenbank arbeiten. Es ist weniger notwendig, Daten im Voraus zu planen und zu ::organisieren, und Änderungen sind einfacher, da sie ein dynamisches Schema für unstrukturierte Daten erlauben. NoSQL-Datenbanken erlauben das Hinzufügen von neuen Attributen und ::Feldern sowie die Verwendung verschiedener Synthaxe in verschiedenen Datenbanken.


Bekannte NoSQL Datenbanken

Rangliste von Datenbankmanagementsystemen: DB-Engines Ranking (wird monatlich überarbeitet)


Apache Cassandra

Cassandra arbeitet mit dem Datenmodell der Schlüssel-Wert-Relationen. Dieses Datenverwaltungssystem wurde 2008 wegen eines Inbox-Search Problem entwickelt und hat eine hohe Skalierbarkeit (beschreibt meistens die Fähigkeit des Wachstums eines Systems), wie auch eine hohe Ausfallssicherheit (die Sicherheit gegen eines Ausfalls, durch zum Beispiel das Einsetzen von Redundanzen) .


Weitere

  • MongoDb (mongo abgeleitet vom engl. "humongous", "gigantisch")
  • Neo4j
  • CouchDb

Datenmodelle

Dokumentenorientierte Datenbanken
  • Dokumente bilden die Grundeinheit zur Speicherung von Daten
  • Ein Dokument entspricht einer Zeile in einer Tabelle
  • Die Dokumente sind schemafrei und bekommen einen eindeutigen Identifikator zugewiesen
Graphdatenbanken
  • Fokus auf die Beziehung zwischen den Daten
  • Speichert und bildet Graphen ab, mit gegeben Daten
  • Ein Graph besteht aus Knoten und Kanten (die Verbindung zwischen Knoten) Bildliche Darstellung
  • Ermöglicht die Abfrage von komplexen Muster, die Ermittlung des kürzesten Weg zwischen Knoten und das Traversieren ("überqueren", in der Graphentheorie das Ermitteln einer Route welche jeden Knoten und jede Kante nur einmal besucht)
Key-Value-Datenbanken
  • Sammlung von Schlüssel-Wert-Paaren
  • Schlüssel und Werte können beliebige Elemente (einfache, wie auch komplexe Objekte) sein
Objektdatenbanken
  • Fokus auf die Softwareentwicklung:
  • Speicherung eines Objekt mir allen Attributen
  • Speicherung von Methoden, Beziehungen und Informationen über die Vererbung von Objekten
Spaltenorientierte Datenbanken
  • Speicherung der Inhalte spaltenweise, anstatt zeilenweise
Datenstrom
  • Kontinuierlicher Datenfluss von Datensätzen - beispielsweise Kommunikation zwischen Prozessen auf einem Rechner
  • Geordnete und seitliche Reihenfolge

Replikation (Datenverarbeitung)

[Beispiel mit MySQL/MariaDB]

Definition

Unter Replikation oder auch Replizieren (lateinisch: Replicare «wiederholen») versteht man die mehrfache Speicherung der Kopie derselben Daten an verschiedenen Orten und die Synchronisation dieser Daten.
Replikationen dienen zur Verkürzung der Antwortseiten und zur Datensicherung. In dem häufig vorkommenden Master/Slave-Replikation (Hierarchische Verwaltung) unterscheidet man Originaldaten (Primärdaten) und abhängige Kopien. Je nach Art der Replikation gibt es eine gewisse Zeitspanne (timelines oder latency) zwischen der Erstellung oder Bearbeitung der Primärdaten und ihrer Replizierung.

Asynchrone Replikation

Wenn zwischen der Bearbeitung der Primärdaten und der Replizierung eine Latenz (Verzögerung) liegt, spricht man von asynchroner Replikation. In diesem Fall sind die Daten nur zu dem Zeitpunkt der Replikation synchron(identisch).Eine Variante der asynchronen Replikation ist beispielsweise die «File Transfer Replication», also die Übergabe von Dateien via FTP(File) oder SSH(Secure Shell).Eine Strategie für asynchroner Replikation ist beispielsweise die Merge-Replikation. Es ist eine Methode zur Synchronisation von Daten zwischen zwei Microsoft-SQL-Server-Datenbanken, bei der eine Datenbank offline modifiziert und erst später mit den Zentralbanken oder anderen Datenbanken abgeglichen werden kann.

Synchrone Replikation

Wenn eine Änderung an einem Datenobjekt nur dann tatsächlich abgeschlossen werden kann, wenn sie auch auf den Replikaten durchgeführt wurde. Um die Atomarität (Unteilbarkeit) gewährleisten zu können. Kann man ein Commit-Protokoll anwenden.Eine Strategie für synchroner Replikation ist beispielsweise das ROWA-Verfahren (Read-One-Write-All). Änderungen an einem Datenobjekt wird immer synchron auf allen Replikaten durchgeführt, damit alle Replikate immer auf dem gleichen Stand sind und keines veraltet ist.

Zweck und Einsatz

  • Verfügbarkeit
  • Performance-Lastverteilung
  • Backup

Vorteile der Replikation

  • Erhöhte Verfügbarkeit der Daten
  • Beschleunigung von Lesezugriffen, also bessere AntwortzeitenBessere
  • Query-optimierung und Lastverteilung

Nachteile der Replikation

  • Hoher updateaufwand
  • Bessere Query-optimierung und Lastverteilung
  • Mögliche Redundanz 

Indexierung

Um die Indexierung einem näher bringen zu können, kann man sich verschiedene Szenarien ausdenken. Wie zum Beispiel das Auffinden eines Hot Dog Standes in einer Mall. Entweder man irrt durch die verschiedene Stockwerke, oder man wendet sich an die Orientierungstafeln, welche einem durch beispielsweise Buchstaben und Zahlen vermitteln kann, auf welcher Ebene man sich selbst und auf welcher Ebene sich der Hotdog Stand befindet.
Oder um es weiter vereinfachen, ein Buchinhaltsverzeichnis, welches man überfliegt, um ein bestimmtes Kapitel auf einer bestimmten Seite zu finden.
Datenbanken selbst haben verschiedene Arten, um so eine Indexierung zu ermöglichen. Denn auch die Datenbank selbst, versucht auf die schnellstmögliche Weise die angefragten Daten zu suchen.


Datenmanipulation

Die Datenmanipulation beschreibt das verändern, aktualisieren oder löschen von Daten, welche in einer Datenbank gespeichert sind (insert, delete, update)


Ressourcen & Quellenverzeichnis

Wikipedia NoSQL
Wikipedia Indexierung
Wikipedia Replikation


Kurunterlagen aus dem Modul 165 geleitet von Gerd Gesell