Datenbank

Eine Datenbank ist im weitesten Sinne eine geordnete Ansammlung von Daten. In EDV-gestützten Systemen ist eine Datenbank eine Gruppe aufeinander bezogener Tabellen und der damit verbundenen Dateien,  die ein Verfahren zum Verwalten und zur Speicherung von grossen Datenmengen bereitstellen.

Datenbanksystem
Das Datenbanksystem (DBS, ~ Gesamtsystem)  einer elektronischen Datenverwaltung beinhaltet das Datenbankmanagementsystem (DBMS), die zentrale Verwaltungsstelle eines Datenbanksystems, die eigentliche DataBase (Datenbasis), welche die physikalischen Strukturen der Datensammlungen  darstellt und die dritte Komponente, die Kommunikationsschnittstelle (Data-Base-Communication-Interface), welche dem Benutzer den Dialog mit dem Datenbanksystem erlaubt. Zu den wesentlichen Aufgaben eines Datenbanksystems  gehört die strukturierte Erfassung von Informationen in vielen Bereichen der Wissenschaft, Wirtschaft und Verwaltung. 

Datenbankmanagementsystem (DBMS)
Das Datenbankmanagementsystem kümmert sich im Speziellen um die Erstellung, Editierung und Verknüpfung der Datenfelder. Weiterhin  ermöglicht es dem Anwender unterschiedliche Sichten (Views) auf die Datensätze zu erstellen durch Filterung und Sortierung der Daten (komplexe Suchanfragen). Weitere Aufgaben sind das Transaktionsmanagement zur  Verhinderung von INSERT-, UPDATE- und DELETE-Anomalien oder zur Verhinderung eines Deadlocks.

Datenbanktypen
Die bekanntesten Datenbanktypen sind: Hierarchische DatenbankNetzwerkdatenbank und die heute am meisten verbreitete Relationale Datenbank. Darüber hinaus erfreut sich die Objektrelationale Datenbank (ORDB) einer wachsenden Beliebtheit. Für spezielle Anwendungen mit vielen, großen Transaktionen sind NoSQL  Datenbanken sinnvoll.

Relationale Datenbanken
Relationale Datenbanken werden durch das Entity-Relationship-Modell (ERM) modelliert. Sie liegen in Tabellenform vor und sind untereinander durch Relationenalgebra verknüpfbar.  Redundanzen werden durch die Normalenformen vermieden. Um das Datenbankmanagement kümmert sich das RDBMS (Relationales Datenbankmanagementsystem). Bei  Objektrelationalen Datenbanken entsprechend das ORDBMS (Objektrelationales - Datenbankmanagementsystem).

Normierungsgremien für Datenbanken
Normierungsgremien für Datenbanken sind: 
CODASYL (Conference on Data Systems Languages)
ANSI-SPARC  (American National Standards Institute - Standards Planning and Requirements Committee).

Die ANSI-SPARC-Architektur
Die ANSI-SPARC-Architektur (auch 3-Schema-Architektur) definiert 3 Ebenen zur Beschreibung eines Datenbankschemas:  Interne Ebene (auch physische Ebene): beschreibt die Art und Weise wie Daten an welchen Orten gespeichert sind.  Design-Ziel der Internen Ebenenbeschreibung ist die Leistungsoptimierung. Konzeptuelle Ebene: beschreibt welche Daten gespeichert sind und die Beziehungen der Daten untereinander. Design-Ziel des Konzeptuellen Datenbankschemas ist  die redundanzfreie Speicherung der Daten. Die Externe Ebene soll verschiedene Sichten (Views) auf die Daten bereitstellen. Es werden verschiedene Masken und Schnittstellen angeboten.                         
Siehe auch:    ORACLE-Datenbank   1-n-Verbindung   Normalform   Schlüssel   Referentielle-Integrität   Transaktion   Konsistenz   NoSQL   Google-BigTable   Verteilte-Datenbank


  Es wurden weitere Begriffe gefunden:


  MySQL
Eine MySQL Datenbank wird hier über die serverseitige Scriptsprache PHP angesprochen. Eine MySQL Datenbank wird hier über die serverseitige Scriptsprache PHP angesprochen.
MySQL ist ein freies Datenbanksystem auf SQL (Structured Query Language) Basis, lizenziert durch die GPL, auch eine kommerzielle Lizenzierung ist möglich (Duales Lizenzsystem). 1994 entwickelt durch Michael (Monty) Widenius, David Axmark  und Alan Larsson als Weiterentwicklung einer selbstentwickelten ISAM-Engine wird MySQL heute von der schwedischen Firma MySQL AB, die von den Entwicklern gegründet wurde, weiterentwickelt. MySQL ist das populärste Open Source Datenbanksystem und  arbeitet gut mit der Scriptsprache PHP zusammen. Unterstützt werden die Betriebssysteme Unix, Linux, Windows, Mac OS X, Open VMS und i5/OS. Es werden auch i.V.m. mit dem Apache Server ganze Installationspakete angeboten (XAMPP (WAMPP, LAMPP, MAMPP)  je nach OS. 2003 wurde MySQL in SAP integriert (MaxDB). In PHP ist auch das MySQL Administrationsprogramm phpMyAdmin geschrieben.

Storage-Engines
MySQL unterstützt mehrere Storage-Engines: MyISAM, Berkeley DB, InnoDB, MEMORY, DB2 unter i5/OS,  MERGE, BLACKHOLE, FEDERATED, ARCHIVE, NDB (Network Data Base) und Falcon. MyISAM ist eine Weiterentwicklung von ISAM und verfügt über schnelle Zugriffe auf Tabellen und Indizes sowie über Volltextsuche. Die Transaktionssicherung wurde weggelassen;  MyISAM unterstützt keine referentielle Integrität und keinen Rollback. Referentielle Integrität und Rollbacks werden hingegen von InnoDB unterstützt. InnoDB (Innobase Oy) genügt weitesgehend den ACID Kriterien und ist in der  Lage, Fremdschlüssel-Beziehungen zu überprüfen. ORACLE hat Innobase Oy 2005 übernommen.

Die NDB-Implementierung ist eine kommerzielle Implementierung der MySQL-Cluster Technologie (NDB-Cluster). Mit ARCHIVE sollen  grosse Tabellen und Datenmengen unterstützt werden. Indizes werden nicht unterstützt um Speicherplatz zu sparen, ebenso werden nur SELECT und INSERT Abfragen unterstützt. Einzufügende Daten werden zunächst in einem Kompressionspuffer  zwischengespeichert und vor der INSERT Operation mit dem ermittelten optimalen Kompressionsalgorithmus komprimiert. Die FEDERATED Variante ermöglicht die transaktionssichere Speicherung von Daten auf einem anderen Server. 

Das Prinzip Föderativer Informationssysteme kommt zur Anwendung: der Server, von dem die Operationen abgeschickt werden, fungiert als Client und hat über die FEDERATED-Engine Zugriff auf den (Remote-) Server,  auf welchem ebenfalls auf FEDERATED-Tabellen zugegriffen werden kann.

Die Berkeley DB (BDB) wurde von Sleepycat Software entwickelt (Sleepycat wurde 2006 von ORACLE aufgekauft) und bietet DB-APIs zu C, C++, Java, Python, Perl sowie der  Tool Command Language (TCL), einer Open Source Scriptsprache und weiteren Programmiersprachen.

Die BDB ist eine eingebettete (embedded) DB-API-Sammlung und bietet Transaktionssicherheit sowie die Möglichkeit, sehr grosse  Datensätze (bis zu 4 GByte) und Tabellen (bis zu 256 Terabyte) zu erstellen, da die Datenzugriffe ähnlich wie bei einem Dateisystem funktionieren und somit keinerlei Beschränkung bezüglich der Speicherungsart unterliegen.  BDB bietet weiterhin Möglichkeiten des Daten-Recovery (Hot-Backups (Backups zur Laufzeit), Replikation (Datenspeicherung auf verschiedenen Servern zur gleichen Zeit)) sowie Locking-Mechanismen. Durch das  Berkeley XML Interface können XML Dokumente geparst werden: damit sind die XML Abfragesprachen XQuery und XPath für Datenbankabfragen einsetzbar. Die BLACKHOLE-Engine dient zur Überprüfung der SQL-Syntax und zum Schreiben eines Binär-Logs.  Da die Daten nicht gespeichert werden, können Syntaxprüfungen ohne Belegung von zusätzlichem Speicherplatz durchgeführt werden. BLACKHOLE wird daher eingesetzt zur Syntaxprüfung von  MySQL-Dumps, zum Vergleich von Binärlogs auf den Master- und Slave Servern bei einer Datenreplikation und zur Zeitmessungen für das Schreiben eines Binär-Logs. Mit der MERGE-Engine kann man mehrere MyISAM Tabellen mit derselben Stuktur  zusammenfassen und Transaktionen darauf ausführen. Bei DB/2 unter dem IBM System i5 fungiert DB/2 als Datenbank-Engine für MySQL.

Falcon-Storage-Engine
Ab MySQL 6.0 wird mit Falcon eine neue MySQL-Storage-Engine erscheinen, die u.a.  Transaktionssicherheit verspricht. Falcon wird entwickelt von Jim Starkey (InterBase) und seiner Firma Netfastructure, die zu diesem Zweck von MySQL AB aufgekauft wurde. Dabei wird besonders an Web 2.0 Anwendungen gedacht.

MVCC
Falcon unterstützt  MultiVersion Concurrency Control (MVCC), was es erlaubt, Datensätze ohne Row-Level-Locking zu aktualisieren. Falcon ist geeignet für transaktionsbasierte Anwendungen mit hohem Datenverkehr. MVCC ist eine effiziente Methode, um bei einer  relationalen Datenbank viele gleichzeitige Zugriffe zu ermöglichen, ohne die Datenkonsistenz zu gefährden oder in eine Deadlock-Situation zu geraten. Um das zu realisieren verwendet MVCC Zeitstempel und sich automatisch erhöhende Transaktions-IDs:  dadurch werden Transaktionen serialisiert und keine Transaktion muss auf die andere warten. Die verschiedenen Objektversionen von einer Transaktion mit dem entsprechendem Zeitstempel werden von der DB-Engine nach einem ausgeklügeltem System verwaltet.  Beim Row Level Locking wird nur ein Teil einer Datenbank während einer Transaktion gesperrt. Dadurch können sich mehrere Benutzer einen Teil der Datenbank teilen. Dies hat Vorteile bei hohen Benutzerzahlen. Row-Level Locking benötigt ein gutes  Transaktionssystem, da es sonst zu viele Row-Level Locks (respektive Column Level Locks) gibt, welche die Performance der DB herabsetzen. Das Transaktionsmanagement hat die Aufgabe, die Schreibzugriffe zu verzögern und zu sammeln, um sie dann  "in einem Rutsch" in die DB zu schreiben. Falcon benötigt dann dank MVCC kein Locking während einer Update- oder Insert-Operation. Weiterhin verwendet Falcon erweiterte B-Baum-Indizes sowie Kompressionsalgorithmen zur Speicherung.  Die Kompression und Dekompression zur Speicherung der Daten auf der Festplatte erfolgt im Speichervorgang selber ("On-the-Fly"). Durch Verwendung eines Caches für Daten und Indizes besteht keine Notwendigkeit,  Index-Daten von der Festplatte zu laden. Falcon ist speziell für 64-Bit Prozessoren ausgelegt, die mit vielen Threads, CPU-Kernen oder Arbeitsspeicher umgehen können.

B-Baum-Indize
Ein B-Baum-Indize ist eine Daten- und Indexstruktur die oft in  Datenbanken und Dateisystemen verwendet wird. Es handelt sich um einen immer vollständig balancierten Baum, der Daten sortiert nach Schlüsseln speichert. MySQL Tabellen können mit unterschiedlichen Verfahren partitioniert werden:  Range-, List-, Key- und Hash-Partitionierung sowie die Bildung von Unterpartitionen (Subpartitions).

MySQL und Google, Übernahme durch Sun
Google will ab Ende 2008 MySQL-Eigenentwicklungen in das MySQL-Projekt zurückfliessen lassen: Google  setzt MySQL auf tausenden seiner Server ein und hat vor allem Funktionen zur Replikation optimiert und Tools entwickelt, die eine grosse Anzahl von Instanzen überwachen. MySQL wurde 2008 von Sun für 1 Mrd. $ übernommen, bleibt jedoch Open Source.
Siehe auch:    Falcon-Storage-Engine   My-SQL-6   MySQL-Cluster   Open-Source   InnoDB   MyISAM   Multiversion-Concurrency-Control   Referentielle-Integrität   PHP   NoSQL

  DNS-Datenbank
Namensauflösung Namensauflösung
Die DNS-Datenbank liegt in Form einer baumförmigen Struktur vor. Es handelt sich um eine verteilte Datenbank (Distributed Database) welche auf mehrere Server im ganzen Internet verteilt ist (Internet-DNS).  Diese Datenbanken sind im Internet durch Verweise (Delegationen) verknüpft. Die Nameserver verwalten die Zonendateien, welche die notwendigen Daten zur Navigation im Internet enthalten.  Die Zonendateien werden intern durch eine Liste von Resource Records repräsentiert. Man unterscheidet grundsätzlich 2 Ausprägungen von Resource Records: 

1. Der A Resource Record: hier findet die Datendefinition statt. Einem Domain-Namen wird eine IPv4 bzw. IPv6 Adresse zugewiesen. 

2. Der NS-Record, Nameserver Record: er enthält die Delegationen (Verknüpfungen der Server untereinander). Der NS-Record definiert also die Zuständigkeit von Nameservern für ihre Zone und weiterhin verkettet der NS-Resource Record  (NS-RR) die Zonen zu einem Zonen-Baum. 
Weiterhin benötigt werden der SOA Resource Record, welcher Informationen zur Zonenverwaltung und zum Zonentransfer (RFC 1035) enthält. Der Start of Authority (SOA) ist ein bedeutender Bestandteil einer Zonendatei des Domain Name System.  Der strukturelle Aufbau und ein Beispiel für einen Nameserver Resource Record (NS-RR) sind:

IN NS <nameserver-name>, wobei nameserver-name eine FQDN ist.

Beispiel: IN NS dns1.beispiel.com. IN NS dns2.beispiel.com.
 
Dasselbe für einen A Resource Record:

<host> IN A <IP-address>
Beispiel: server1 IN A 10.0.1.3 IN A 10.0.1.5 für die beispiel.com Zonen-Datei, d.h. Anfragen für beispiel.com weisen auf 10.0.1.3 oder 10.0.1.5.
 
Der CNAME Record (Canonical-Name) ordnet Namen einander zu (Alias):

<alias-name> IN CNAME <real-name>

server1 IN A 10.0.1.5 www IN CNAME server1
 

"named" wird angewiesen, dass alle Anfragen, die an den <alias-name> gesendet werden, auf den Host <real-name> zeigen. 

CNAME-Records werden oft eingesetzt, um auf Dienste zu verweisen, die ein allgemeines Namensschema für den entsprechenden Host, wie www für Web-Server, verwenden.  In den Zonendateien muss mindestens ein Nameserver-Resource Record vorhanden sein, aus dem zu entnehmen ist, welcher Nameserver für diese Zone autoritativ ist. Die entsprechenden Nameserver-Resource Records sind normalerweise am Beginn  einer Zonendatei unmittelbar hinter dem SOA-Resource Record zu finden. Die NS Resource Records (NS RR) geben nicht Preis, welcher Nameserver Primary Nameserver und welcher Nameserver Secondary Nameserver ist.  Aus dem SOA Resource Record kann man den Primary Resource Record ablesen. Die restlichen NS-RR Einträge verweisen auf Secondary Resource Records.  Nameserver-Resource Records können Verweise zu Subdomänen beinhalten. Die betreffende Subdomäne wird aus dem Zonenfile ausgelagert.  Der Nameserver-Resource Record dient somit als Pointer und verweist auf einen anderen Nameserver bzw. auf ein anderes Zonenfile auf demselben Server. Dies wird dann "Delegation" genannt. Delegation bedeutet, daß Anfragen an einen Resolver an einen  weiteren Nameserver delegiert werden.

Ein Beispiel für eine Namensauflösung wäre:
linux37:~ # cat /etc/hosts
# Syntax:
#
# IP-Address Full-Qualified-Hostname Short-Hostname

127.0.0.1 localhost

217.89.70.36 linux36.amov.de linux36 klaus
217.89.70.37 linux37.amov.de linux37 willi 
217.89.70.38 linux38.amov.de linux38 petra
217.89.70.39 linux39.amov.de linux39 ludwig
217.89.70.40 linux40.amov.de linux40 ines

217.89.70.38 mail.amov.de mail
 

Die ursprüngliche Form der Namensauflösung ist die Datei /etc/hosts. Es wird eine Tabelle eingesetzt, in der die IP-Nummer, der FQDN (Fully Qualified Domain Name) und verschiedene Alias-Namen stehen.  Eine Zeile steht für eine Kombination aus IP-Nummer und FQDN. Die IP-Nummer kann mehrfach vorkommen. Am Anfang jeder dieser Zeilen steht die IP-Adresse, danach folgt die FQDN.  Im Anschluß an den FQDN können mehrere Alias-Namen für den Rechner vergeben werden. Wie funktioniert eine Namensauflösung am Beispiel des Befehls "ping"? 

linux37:~ # ping linux37.amov.de
PING linux37.amov.de (217.89.70.37) 56(84) bytes of data. 

linux37:~ # ping linux37
PING linux37.amov.de (217.89.70.37) 56(84) bytes of data. 

linux37:~ # ping willi
PING linux37.amov.de (217.89.70.37) 56(84) bytes of data.
  Anhand des FQDN oder eines Alias-Namen wird der entsprechende Eintrag identifiziert, die passende IP-Nummer und der FQDN ermittelt. Dies können Sie schön im folgenden Beispiel sehen. 

linux37:~ # ping manuela
PING linux38.amov.de (217.89.70.38) 56(84) bytes of data.

linux37:~ # ping mail
PING mail.amov.de (217.89.70.38) 56(84) bytes of data.
 

Es gibt nicht nur eine Namensauflösung für Hostnamen sondern auch eine Namensauflösung für Netzwerkadressen. Jede Zeile bezeichnet eine Verbindung zwischen Netzwerkname und Netzwerkadresse.

linux37:~ # cat /etc/networks 
loopback 127.0.0.0

amov 217.89.70.0
sub1.amov 217.89.70.32
sub2.amov 217.89.70.64


Quellenangaben: http://www.redhat.com/docs/manuals
http://www.fibel.org/linux/lfo-0.6.0/node483.html
Siehe auch:    Domain-Name-System   Nameserver   Resolver   Start-of-Authority   Nameserver-Record   A-Resource-Record   Hostname   

  Microsoft-Access

MS Access ist eine relationale Datenbank von Microsoft, die es nur für Windows gibt und meist im Microsoft Office System enthalten ist. Microsoft Access ermöglicht auch die Entwicklung und Verwaltung von Datenbankanwendungen.  MS Access eignet sich zur Verwaltung kleinerer und mittlerer Datenbanken.  Für grössere Firmendatenbanken sind mächtigere Produkte die richtige Wahl: DB2 (IBM), Sybase ASE, ORACLE, ADABASE (Software AG), Informix u.a. MS Access speichert (im *.mdb Format) neben den Datenbanktabellen auch  die Oberfläche mit ab. Front-End (Oberfläche) und Back-End (Tabellendefinitionen und Daten) können separat gespeichert werden. Über die ODBC Schnittstelle können beim Einbinden externer Formate auch MS Access-fremde Formate einbezogen werden.

Mittels  der ODBC-API kann auf MS Access Datenbanken auch extern zugegriffen werden. Neuere MS-Access Schnittstellen sind: Data Access Objects (DAO) sowie Remote Data Objects (RDO) für relationale Datenbanken, ActiveX Data Objects (ADO) für alle  Datentypen. Durch ADO kann man auf MS-Access mit weiteren Programmiersprachen, wie z. B. Visual Basic oder Delphi zugreifen. Dies geht auch ohne Installation. Die Jet-Engine ist das Back-End von MS Access. 

Die Microsoft Joint Engine Technology Engine ist seit 1992 eine relationale Datenbank-Engine für die Windows-Plattform. Sie wurde in 2 verschiedenen Versionen ausgeliefert: Jet Red und Jet Blue.  Die Jet Red Engine ist ein RDBMS (Relationales Datenbankmanagementsystem) für Desktopdatenbanken. Die Jet Blue Engine ist auch  ein RDBMS, das aber auf Grundlage eines Write Ahead Logging (WAL) mit einem 2 Phasen Commit Protokoll (2 Phase Commit, 2PC) arbeitet. Dies dient u.a. zur Wahrung der ACID-Eigenschaften, insbesondere bei verteilten Datenbanken. Jet Blue eignet sich  für semistrukturierte Daten.

Ab Version 2000 wird auch der Microsoft SQL-Server mitausgeliefert. Durch visuelle Programmierobjekte können schnell Anwendungen gebaut werden. Mit Visual Basic for Application (VBA) können umfangreiche Anwendungen  programmiert werden. ADO-Nachfolger ist ADO.NET. ADO.NET läuft in der .NET Framework 3.0 Entwicklungsumgebung und stellt eine Sammlung von Klassen dar. ADO.NET ist für alle Datentypen geeignet, speziell für relationale Datenbanken und  ist durch den Namespace System.Data innerhalb der Framework Class Library (FCL) repräsentiert.                                   
Siehe auch:    Microsoft-Office   Visual Basic   2-Phase-Commit   ACID   Normalform   Transaktion   Update-Befehl   Referentielle-Integrität   Write-Ahead-Logging   

  1-n-Verbindung

Eine 1:n Verbindung ist eine Verbindung (Relation) eines Datenbanksystems, bei der zu jedem Datensatz der Haupt-Tabelle (Mastertabelle) mehrere entsprechende Datensätze in der Detailtabelle verknüpft sind. 

Eine 1:n-Verbindung liegt vor, wenn im Verbindungsfeld der übergeordneten Tabelle nur Unikate, im Verbindungsfeld der untergeordneten Tabelle dagegen auch Duplikate (gleiche Werte) enthalten sind.  Bei einer 1:n Beziehung müssen die verknüpften Felder der Mastertabelle als Primärschlüssel definiert sein.                                                     
Siehe auch:    Normalform   1-1-Verbindung   ACID   Referentielle-Integrität   Schlüssel   Deadlock   Rollback   

  NoSQL

NoSQL Datenbanken (Not only SQL oder No SQL) sind (teilweise Open Source) Datenbanktechnologien welche die Nachteile anderer Datenbanktechnologien wie MySQL oder objektorientierter Datenbanken ausgleichen sollen.  Es handelt sich um Datenbanken, die besser skalierbar sind und bei hoher Datenlast mit vielen, grossen Transaktionen besser performen. NoSQL Datenbanken haben kein festes Schema wie relationale Datenbanken  Dabei kommen flexible Technologien zur Datenspeicherung zum Einsatz bzw. wird die Datenspeicherung der jeweiligen Anwendung überlassen. Es werden abweichende Protokolle zur Kommunikation mit dem Client eingesetzt als bei SQL. 

Konzepte von NoSQL-Datenbanken: BASE, CAP-Theorem
NoSQL-Datenbanken können folgende Eigenschaften haben: nicht-relational, schemafrei, horizontal skalierbar, verteilt,  BASE anstatt ACID oder einfache Replikation und Programmierschnittstelle.

BASE bedeuted Basically Available, Soft State und Eventual Consistent. Hierbei wird die strenge Konsistenz-Bedingung zugunsten einer besseren Verfügbarkeit und  Skalierbarkeit aufgeweicht. Die Form der 'losen Konsistenz' bei der die Konsistenz von nachfolgenden Operationen wieder hergestellt wird und die DB zwischen konsistentem und inkonsistentem Zustand wechselt, wird als akzeptabel angesehen.  Befinden sich Duplikate auf der DB, so werden diese nach einigen Transaktionen immer wieder asynchron synchronisiert so daß die DB immer wieder in einen konsistenten Teilzustand überführt wird. Eventual Consistent bedeuted, daß es nur einen gewissen  Zeitrahmen gibt, in dem alle Clients denselben (konsistenten) Zustand sehen.

Das CAP-Theorem gilt bei NoSQL-DBs: bei verteilten Systemen werden nur 2 der 3 Bedingungen Consistency, Availability und Partition Tolerance erfüllt.

Grosse Datenmengen  werden in einem Standardsystem auf einem Cluster verwaltet und nicht auf einem Masterserver. So werden die Nachteile relationaler Datenbankmodelle, die auf Indexierung von grossen Datenmengen basieren ausgeglichen, da letzteres  Einbußen in der Performance mit sich bringt. Relationale Datenbanken sind nur effizient, wenn sie für hochfrequente kleine Transaktionen optimiert werden können, oder bei grossen Batch-Input Läufen. Auch MVCC wird bei NoSQL-DBs angewendet. 

Arten von NoSQL Datenbanken, Strukturierte Datenspeicher
Man nennt NoSQL Datenbanken auch strukturierte Datenspeicher (structured storage).  Es haben sich folgende Arten von NoSQL-Datenbanken herausgebildet: Dokumentenorientierte Datenbanken, spaltenorientierte Datenbanken, Key-Value-Datenbanken und Graphendatenbanken.

Dokumentenorientierte Datenbank 
Bei dokumentenorientierten Datenbanken werden Textdaten von beliebiger Grössenordnung in unstrukturierter Form gespeichert. Das Retrieval der Daten erfolgt über die Dokumenteninhalte. Beispiele sind MongoDB, CouchDB oder Apache Jackrabbit. 

CouchDB sollte auf Multi-Server Umgebungen und mit Multi-Core-Systemen einsetzbar sein. CouchDB (Cluster of Unreliable Commodity Hardware DataBase) verwaltet seine Daten in Dokumenten die auf  JSON-Objekten oder XML basieren. Dabei können Dokumente in einer CouchDB-Datenbank von unterschiedlicher Struktur sein. 

Filter werden über Map/Reduce verarbeitet. Es können aber auch Funktionen in den Views (Abfragen) zur Ausführung während der Abfrage kommen. Als Datenschnittstelle fungiert bei CouchDB REST-HTTP.

Ein Beispiel für eine Abfrage mit CouchDB ist: 

function(doc) { emit (doc.Projekt, {Projektleiter: doc.Projektleiter, Projektmitarbeiter: doc.Projektmitarbeiter, Projektressourcen: doc.Projektressourcen}); }
 
Key-Value Datenbank
Bei Key-Value-Datenbanken wird ein definierter Schlüssel verwendet welcher auf einen bestimmten Wert verweist. Dieser Wert kann auch aus einer beliebigen Zeichenfolge bestehen.  Key-Value Datenbanken können als In-Memory Version implementiert sein. Diese ist speicherresistent und eignet sich durch ihre hohe Leistungsfähigkeit für Cache-Speichersysteme. Die andere Variante ist die On-Disk Implementierung,  welche ihre Daten auf der HDD speichert und sich für grosse Datenspeicher eignet. Beispiel für eine Key-Value In-Memory Datenbank ist memcache.

Key-Value On-Disk Speicher (Key-Value-Festplattenspeicher) sind SimpleDB,  Google BigTable oder Redis. Google BigTable basiert auf dem Google-File-System (GFS). 

Bei Google BigTable wird ein Distributed Lock Manager (DLM) eingesetzt: der Chubby Lock Service. Der DLM sorgt bei verteilten Anwendungen für die  Synchronisation des Zugriffs auf Shared Resources (geteilte Ressourcen). Die On-Disk Key-Value Datenbank Redis ist in der Lage, neben Strings auch Listen, Sets und sortierte Sets zu speichern. Die Speicherstrategie von Redis sieht vor, dass die Datasets  im Hauptspeicher gehalten werden, aber bei bestimmten Bedingungen auch auf der Festplatte abgelegt werden. Redis wurde bei Github oder Engine Yard implementiert.

Spaltenorientierte Datenbank 
Beispiel für eine spaltenorientierte Datenbank ist Apache Cassandra. Bei Cassandra werden die Daten als Schlüssel-Wert-Relation gespeichert. Cassandra ist ein verteiltes Datenbankverwaltungssystem welches auf hohe Skalierbarkeit und Ausfallsicherheit  ausgelegt ist. Bei einer spaltenorientierten Datenbank liegt eine Minimierung der I/O Aktivitäten hinsichtlich von Berechnungen auf Datensätzen vor. Bei Cassandra verfügen die Spalten über Namen, Wert und Zeitstempel. Spaltenfamilien sind gruppierte  Spalten. Apache Cassandra wird von namenhaften Firmen wie IBM, Twitter und Rackspace unterstützt. Eingesetzt wird Apache Cassandra bei Facebook, Twitter und Digg. Cassandra wurde zum Top-Level-Projekt der Apache Foundation erklärt. 

Graphendatenbanken
Graphendatenbanken spiegeln die Beziehungen der Elemente, z.B. in einem Graphenbaum wieder. Dabei kann es sich um ein Beziehungsgefüge aus Freunden in einem sozialen Netzwerk handeln oder um die Follower-Struktur bei Twitter.  Um diese Strukturen abbilden zu können, werden die Daten als Knoten und Beziehungen zwischen den Knoten repräsentiert.  Um die Knoten zu durchlaufen wären in einer SQL-Datenbank viele Abfragen nötig. Beispiele für eine Graphendatenbank sind FlockDB (Twitter), Cora Data, AllegroGraph oder Neo4j.
Siehe auch:    Google-BigTable   Google-BigData   Verteilte-Datenbank   B-Baum   Twitter   Konsistenz   ACID   Multiversion-Concurrency-Control   Apache-Cassandra   MySQL

  ADO

ActiveX Data Objects. ADO ist eine Technologie von Microsoft, welche den Zugriff auf Datenbanken ermöglicht. ADO ist eine Sammlung von COM-Objekten und bietet eine Schnittstelle zwischen Programmiersprachen und OLE DB. Dadurch kann der Entwickler  Anwendungen und Programme schreiben, die auf Datenquellen unterschiedlichster Art (relationale DB, objekt-orientierte DB, Kalkulationstabelle usw.) zugreifen können, ohne sich um deren technologie-spezifische Gegebenheiten kümmern zu müssen.  ADO kann (im Gegensatz zu DAO und RDO, die speziell für relationale Datenbanken geeignet sind)  für alle Datentypen verwendet werden, wie beispielsweise auch Internetseiten oder Tabellen.

ADO ist insbesondere geeignet für:
a) Zugriff auf mehrere externe Datenbanken  ohne vorhandene Tabellenverknüpfungen: Steuern einer Datenbank aus VBA, ASP oder PHP
b) Aktualisieren einer Datenbank im Batch-Verfahren.
ADO bildet mit ODBC (Open DataBase Connectivity)  und OLE DB die Grundlage für das UDA-Modell von Microsoft. UDA (Universal Data Access) ist eine Strategie von Microsoft, die einen vereinheitlichten Datenzugriff ermöglichen soll (Datentransportstandard). 

UDA soll plattformübergreifenden Zugriff auf unterschiedliche Informationen und Daten ermöglichen und eine benutzerfreundliche Programmierschnittstelle bieten. UDA basiert auf dem Component Object Modell (COM) und bietet die  COM-basierten Schnittstellen ADO und OLE DB. ADO ist Teil von Microsoft Data Access Components (MDAC). MDAC ist ein Rahmenwerk von interagierenden Microsoft Technologien, welche Entwicklern einen einheitlichen und übergreifenden Weg  der Entwicklung von Anwendungen ermöglicht, die auf alle Arten von gespeicherten Daten zugreifen können. Komponenten von MDAC sind: ODBC, OLE DB, ADO und ADO.NET.                                         
Siehe auch:    DAO   API   Component-Object-Model   OLE-DB   ADO-Dot-NET   Microsoft-Excel   Microsoft-Access   ODBC   MDAC   

  Objektrelationale-Server

Ein objektrelationaler Server unterstützt die objektorientierte Administration von (komplexen) Datentypen in relationalen Datenbanken.                                                         
Siehe auch:    Server   Paralleler-Server