Analyse und Bewertung von relationalen Datenbanken

Werbung
FOM - Hochschule für Oekonomie & Management Essen
in Kooperation mit der FH Dortmund
Studienfach: IT-Management
2. Semester
Wintersemester 2011
Betreuer: Prof. Dr. Gregor Sandhaus
Analyse und Bewertung
von relationalen Datenbanken
gegenüber NoSQL Datenbanken
-
Ein Vergleich von mySQL und mongoDB
Hausarbeit
vorgelegt von:
Peyman Pouryekta
Matrikelnummer: 198124
Essen, den 03. Januar 2012
Inhaltsverzeichnis
Abkürzungsverzeichnis...................................................................................................... 3
Abbildungsverzeichnis....................................................................................................... 4
Tabellenverzeichnis............................................................................................................ 5
1 Einleitung........................................................................................................................ 6
2 Grundlagen...................................................................................................................... 7
2.1 Datenbank.............................................................................................................. 7
2.1.1 Relationale Datenbanken............................................................................. 8
2.1.1.1 Relation.............................................................................................. 8
2.1.1.2 Tabelle................................................................................................ 8
2.1.1.3 Normalisierung.................................................................................. 9
2.1.1.4 Transaktion......................................................................................... 9
2.1.2 NoSQL Datenbanken................................................................................. 10
2.1.2.1 JSON................................................................................................ 10
2.1.2.2. Horizontale Skalierung................................................................... 11
2.1.2.3 CAP Theorem.................................................................................. 11
2.1.2.4 Eventually Consistency.................................................................... 12
2.2 Qualitätsanforderungen....................................................................................... 13
3 Untersuchung................................................................................................................ 14
3.1 MySQL................................................................................................................ 14
3.1.1 MySQL Tools............................................................................................ 14
3.1.2 SQL............................................................................................................ 15
3.2 MongoDB............................................................................................................ 16
3.2.1 MongoHub................................................................................................. 16
3.2.2 Object-Based Query Language.................................................................. 17
3.2.3 Sharding..................................................................................................... 17
3.3 Vergleich.............................................................................................................. 19
3.3.1 Kriterien..................................................................................................... 19
3.3.2 Gegenüberstellung ................................................................................... 20
3.3.3 Bewertung.................................................................................................. 20
6 Schlussbetrachtung....................................................................................................... 22
Literaturverzeichnis......................................................................................................... 23
2
Abkürzungsverzeichnis
Abkürzung
DBMS
SQL
NoSQL
JSON
CAP
BSON
Beschreibung
Database Management System
Structured Query Language
Not only SQL
JavaScript Object Notation
Consistency, High Availability, Partition Tolerance
Binary JSON
3
Abbildungsverzeichnis
Nummer
1.
2.
Beschreibung
JavaScript Object Notation
Forfeit Consistency
4.
MySQL Query Browser
3.
5.
6.
7.
MySQL Administrator
MongoHub Administration
MongoHub Query
Sharding
Seite
11
12
14
15
16
17
18
4
Tabellenverzeichnis
Nummer
1.
Beschreibung
MongoDB vs MySQL
Seite
20
5
1 Einleitung
In der heutigen Zeit von Social Media Applikationen ist es notwendig eine sehr große
Anzahl an Anfragen und User in einer Applikation zu behandeln. Mit herkömmlichen
relationalen Datenbanken ist dies nicht immer möglich, da die Systeme früher oder später
Performanceeinbußen in Kauf nehmen müssen. Relationale Datenbanken sind grundsätzlich nicht für hohe Skalierbarkeit ausgelegt. Hier setzen NoSQL Datenbanken wie MongoDB an.
Die Arbeit befasst sich mit den beiden Datenbanken MySQL und MongoDB. Die Grundfunktionen beider Datenbanken werden beschrieben und einander gegenübergestellt. Der
Autor möchte zeigen welche Vor- und Nachteile die jeweilige Datenbank hat und für
welchen Bereich sie somit eingesetzt werden kann.
Im ersten Teil dieser Arbeit geht es um die beiden Datenbank Formen relationale Datenbanken und NoSQL Datenbanken. Außerdem werden kurz die Qualitätsanforderungen an
eine Datenbank bestimmt.
Im Hauptteil der Arbeit befasst sich der Autor mit der MySQL Datenbank und der MongoDB. Dabei sollen Besonderheiten der jeweiligen Systeme herausgestellten werden.
Anschließend werden die beiden Datenbanken anhand fester Kriterien gegenübergestellt
und Vor- und Nachteile des jeweiligen Systems betrachtet.
Zum Schluss wird auf das Ergebnis eingegangen und eine Bewertung vorgenommen.
6
2 Grundlagen
In diesem Kapitel beschäftigt sich der Autor mit den Grundlagen von Datenbanken. Speziell relationale- und hierachischen-Datenbanken werden hier betrachtet und deren Anforderungen in der heutigen Zeit.
2.1 Datenbank
In fast jeder Applikation wird eine Datenbank eingesetzt. Die Aufgabe einer Datenbank
ist die Speicherung, Verwaltung und Manipulation von Informationen.
Sascha Kersken definiert den Begriff wie folgt:1
„Der Begriff bezeichnet nämlich zwei verschiedene Dinge: zum einen
die Datensammlung selbst, zum anderen das Programm, das diese Daten
verwaltet. [...] Das Anwendungsprogramm, mit dem diese Daten verwaltet werden können, enthält mehr oder weniger mächtige Funktionen
zum Suchen, Sortieren, Filtern und formatierten Ausgeben dieser Daten.
Ein solches Programm wird als Database Management System (DBMS),
also Datenbankverwaltungssystem, bezeichnet.“
In dieser Arbeit wird der Begriff Datenbank im Sinne von DBMS verwendet.
Je nach Art und Anforderung an eine Applikation können unterschiedliche Formen von
Datenbanksystemen verwendet werden:2
• „hierachisch: Die Datenobjekte können ausschließlich in einer Eltern-Kind-Beziehung zueinander stehen.
• netzwerkartig: Die Datenobjekte werden miteinander in Netzen verbunden.
• relational: Die Daten werden zeilenweise in Tabellen verwaltet. Es
kann beliebige Beziehungen zwischen Daten geben. Sie werden
durch Werte bestimmter Tabellenspalten festgelegt.
• objektorientiert: Die Beziehungen zwischen Datenobjekten werden
1
2
Kersken, Handbuch für Fachinformatiker, S.355
Wikipedia, Datenbanken: Verschiedene Formen von Datenbanken
7
vom Datenbanksystem selbst verwaltet. Objekte können Eigenschaften und Daten von anderen Objekten erben.
Es existiert eine Vielzahl von Misch- und Nebenformen, wie zum Beispiel das objektrelationale Modell.“
Der Autor beschäftigt sich in dieser Arbeit mit einer relationalen- und einer dokumentenbasierter-Datenbanken (Mischform aus hierarchisch und relational).
2.1.1 Relationale Datenbanken
Eine relationale Datenbank besteht, wie der Name schon sagt aus Relationen. Die Daten
werden in Tabellen gehalten die untereinander dann Relationen beinhalten können.
2.1.1.1 Relation
Nach Klug ist der Begriff der Relation im Bezug auf relationalen Datenbanken wie folgt
zu erklären:3
„Relationale Datenbanken basieren auf dem mathematischen Konzept
der Relation. Eine Relation ist eine Teilmenge des kartesischen Produktes der Elemente einer Menge. Letzteres ist die Menge, die aus der Kombination aller ihrer Elemente entsteht.“
Bei der Speicherung von Daten in einer relationalen Datenbank, werden Objekte aus der
realen Welt mit ihren Eigenschaften in der Datenbank abgebildet. Solche Objekte werden
in der Datenbank als Enitäten bezeichnet. Die Eigenschaften einer Entität werden als
Attribute bezeichnet. Entitäten mit gleichen Attributen sind vom gleichen Entitätstyp und
können somit zu Entitätsmengen zusammengefasst werden.4
2.1.1.2 Tabelle
Die Daten in einer relationalen Datenbank werden in Tabellen organisiert. Durch Verwendung von Primärschlüsseln in einer Tabelle sind die Elemente einer Relation eindeutig
von einander unterscheidbar. Dieser Primärschlüssel sorgt für die Enitäts-Integrität einer Tabelle. Durch den Einsatz von Fremdschlüsseln aus einer anderen Tabelle kann so
3
4
Klug, Datenbankanwendungen entwerfen & programmieren, S.55
Vgl. Klug, Datenbankanwendungen etnwerfen & programmieren, S.56
8
eine Relation erzeugt werden. Das durch Relation erzeugte konkretisierte konzeptionelle
Schema wird Relationsschema genannt.5
2.1.1.3 Normalisierung
Bei der Normalisierung geht es darum, die Daten in eine neue Form zu bringen, so dass
sie optimiert verwendet werden können. Es kann zu konsistenter Datenhaltung führen
und eliminiert Redundanzen.
Es gibt mehrere Formen von Normalisierung:
1. Normalform: Verlangt, dass die Information in einem Datenbankfeld atomar ist.
2. Normalform: Fordert zusätzlich, dass alle Felder in einer Tabelle nur vom Primärschlüssel abhängen.
3. Normalform: Fordert zusätzlich, dass alle Felder funktional unabhängig von einander
sind.6
2.1.1.4 Transaktion
Eines der wichtigsten Eigenschaften von relationalen Datenbanken sind Transaktionen.
Sie betrachten eine Folge von Programmschritten als eine logische Einheit und gewährleisten einen fehlerfreie Ausführung und somit den konsistenten Zustand der Datenbank.
Transaktionen besitzen ACID-Eigenschaften:7
• „Atomicity bedeutet, dass eine Transaktion in ihrer Ausführung nicht
weiter unterteilbar ist, also ganz oder gar nicht ausgeführt wird. Die
kleinste Transaktion enthält eine einzige SQL-Anweisung.
• Consistency bedeutet, dass ein vor Transaktionsbeginn konsistenter
Datenbestand durch die Ausführung der Transaktion wieder in einen
konsistenten Datenbestand überführt wird.
• Isolation bedeutet, dass gleichzeitig arbeitende Transaktionen sich
nicht gegenseitig beeinflussen, sie in einer Art von simuliertem EinProgramm- und Ein-Benutzer-Modus ablaufen.
• Duration bedeutet, dass nach einem commit die Wirkung einer Trans5
6
7
Vgl. Klug, Datenbankanwendungen etnwerfen & programmieren, S.58
Vgl. Kersken, Handbuch für Fachinformatiker, S.362
Klug, Datenbankanwendungen etnwerfen & programmieren, S.331
9
aktion dauerhaft ist.“
2.1.2 NoSQL Datenbanken
Not only SQL (NoSQL) Datenbanken verfolgen einen nicht-relationalen Ansatz. Die Daten werden hier bei nicht in einer Tabelle organisiert, sondern meist in der JavaScript
Object Notation (JSON) abgelegt. Es findet generell keine Normalisierung statt. Die abzulegenden Objekte werden als Dokument behandelt und ganzheitlich abgelegt. Ziel der
NoSQL Datenbanken ist es performanter, sklaierbarer und flexibler als relationale Datenbanken zu sein.
2.1.2.1 JSON
JSON ist eine sehr kompaktes Dateiformat, das menschenlesbar und maschinenlesbar ist.
Es kennt folgende Datentypen:8
• Nullwert: Wird dargestellt als null
• boolescher Wert: Wird dargestellt durch die Schlüsselworte true und false
• Zahl: Wird dargestellt durch eine Folge von Ziffern 0-9 die durch ein negatives Vorzeichen - eingeleitet und durch einen Dezimalpunkt . unterbrochen werden kann.
Exponenten e oder E können mit den gleichen Regeln ergänzt werden.
• Zeichenkette: Wird durch doppelte Anführungszeichen “ gekennzeichnet.
• Array: Beginnt mit [ endet mit ] und enthält Werte, die durch ein Komma , getrennt
werden.
• Objekt: Beginnt mit { endet mit } und enthält Eigenschaften, die durch ein Komma
, getrennt werden.
• Objekt Eigenschaften: Besteht aus einem Key/Value Pair, die durch einen Doppelpunkt : getrennt werden. Der Key ist eine Zeichenkette und muss immer in einem
Objekt eindeutig sein. Der Value kann ein Objekt, Array, Zeichenkette, Zahl, boolescher Wert oder ein Nullwert sein.
8
Vgl. Wikipedia, JavaScript Object Notation: Datenstruktur und Formatdefinition
10
1. JavaScript Object Notation 9
2.1.2.2. Horizontale Skalierung
Horizontale Skalierung kommt immer dann zum Einsatz, wenn man ein schreibintensives, hochperformates System hat, das mit großen Datenmengen arbeiten muss.
Dabei werden mehrere Server verwendet, die sich die Arbeit teilen. Das hat zusätzlich
positive Auswirkungen auf Zuverlässigkeit und Verfügbarkeit. ACID-Eigenschaften von
Transkationen lassen sich damit auch anwenden, jedoch tritt dann bei großen verteilten
Systemen das CAP Theorem auf.10
2.1.2.3 CAP Theorem
Das Theorem von Eric Brewer besagt,11
„dass ein verteiltes System nicht gleichzeitig alle drei Anforderungen
erfüllen kann sondern höchstens zwei:
• Starke Konsistenz bedeutet, dass alle Knoten zur selben Zeit die
gleiche Sicht auf die Daten haben, auch wenn die Daten verändert
wurden
9
10
11
Wikipedia, JavaScript Object Notation: Datenstruktur und Formatdefinition
Vgl. Spichale, JavaMagazin 8.2011, Cassandra und Hector, S.50
Spichale, JavaMagazin 8.2011, Cassandra und Hector, S.50
11
• Hochverfügbarkeit bedeutet, dass der Ausfall von einem Knoten
durch die verbleibenden kompensiert werden kann
• Partitionstoleranz bedeutet, dass die Funktionsfähigkeit des Systems
erhalten bleibt, auch wenn Nachrichten verloren gehen“
Bei den meisten NoSQL Datenbanken wird die Konsistenz vernachlässigt, da die beiden
anderen Punkte wichtiger sind für hochperformante Systeme.
Forfeit Consistency
These
Examples
‹ Coda
Consistency
Availability
‹ Web cachinge
‹ DNS
Traits
Tolerance to network
Partitions
‹ expirations/leases
‹ conflict resolution
‹ The
‹ Real
ACI
– W
‹ But
‹ Sym
data
over
‹ optimistic
PODC Keynote, July 19, 2000
2. Forfeit Consistency 12
2.1.2.4 Eventually Consistency
Eventually Consistency ist eine Form der schwachen Konsistenz, bei der die Daten innerhalb einer Zeit inkonsistent sein können. Durch diese Toleranz lassen sich erhebliche
Verbesserungen bei der Performace von Lese- und Schreibeoperationen feststellen. Auch
die Partitionstoleranz wird verbessert, da das System auf Anfragen reagieren kann, auch
wenn die Mehrheit der Servern nicht erreichbar ist.13
12
13
Brewer,
PODC Keynote
Slides, S.5
CAP
Take
Homes
Vgl. Spichale, JavaMagazin 8.2011, Cassandra und Hector, S.50
‹ Can have consistency & availability within a
cluster (foundation of Ninja), but it is still hard in
12
2.2 Qualitätsanforderungen
Anforderungen und Ziele, die eine Datenbank verfolgt sind nach Alfred Moos folgende:14
„Datenbanken sind heute der Kern betriebswirtschaftlicher Anwendungssysteme und nicht nur dieser. Mit ihrem Einsatz werden viele Ziele
verfolgt.
Die wichtigsten sind:
• Datenunabhängigkeit der Anwendungsprogramme
• Verlässliche Richtigkeit der Daten - Integrität
• Zentrale Verwaltung der Daten
• Datensicherheit und Datenschutz“
Im Laufe der Zeit werden Applikationen immer größer und komplexer. Demnach lassen
sich noch zusätzlich folgende Anforderungen nennen, die bereits jetzt aber auch in Zukunft relevant sind:
• Flexibilität
• Skalierbarkeit
• Performance
14
Moos, Datenbank-Engineering, S.121
13
3 Untersuchung
In der folgenden Untersuchung betrachtet der Autor die beiden Datenbanken MySQL
und MongoDB. Zum Ende werden diese beiden Datenbanken nach bestimmten Kriterien
gegenübergestellt.
3.1 MySQL
MySQL ist eine relationale Datenbank Software. Es gibt eine große Community und sie
wird oft für dynamische Webseiten verwendet. Die Software ist als Open Source und als
kommerzielle Enterpriseversion verfügbar. Die Software unterstützt die Betriebssysteme
Unix, Linux, Windows, Mac OS, i5/OS und OpenVMS und ist in C++ geschrieben.
3.1.1 MySQL Tools
Über die MySQL GUI-Tools lässt sich die Datenbank verwalten. Dabei gibt es einmal
den MySQL Administrator, der eine Reihe an Funktionen liefert, um die Datenbank zu
administrieren.
3. MySQL Administrator
14
Das zweite Tool ist der MySQL Query Browser. Er kann über SQL Queries die Inhalte
der Tabellen darstellen.
4. MySQL Query Browser
3.1.2 SQL
SQL ist die Sprache, die Abfragen bei der relationalen Datenbanken ermöglicht.
Die Grundfunktionen lauten:
• CREATE: Mit dieser Funktion ist es möglich neue Tabellen anzulegen
• INSERT: Mit dieser Funktion ist es möglich neue Datensätze einzufügen
• SELECT: Mit dieser Funktion können die Daten abgefragt werden
• UPDATE: Mit dieser Funktion können Daten aktualisiert werden
• DELETE: Mit dieser Funktion können Daten entfernt werden
Mit diesen Funktionen lassen sich alle einfachen Datenbank Abfragen realisieren.
15
3.2 MongoDB
MongoDB ist eine schemalose dokumentenorientierte Datenbank Software. Sie wird vorallem in großen Systemen eingesetzt bei denen es wichtig ist, horizontal zu skalieren. Die
Software ist als Open Source verfügbar und plattformunabhängig.
3.2.1 MongoHub
Über das Tool MongoHub kann man die MongoDB administrieren. Es stellt ähnlich wie
bei MySQL umfangreiche Funktionen bereit.
5. MongoHub Administration
Um Inhalte aus der Datenbank betrachten zu können gibt es unter MongoHub eine Query
View. Hier können die Werte gelesen und verändert werden.
16
6. MongoHub Query
3.2.2 Object-Based Query Language
MongoDB hat eine dynamische, objektbasierende Abfragesprache. Die Grundfunktionen
lauten:
• find(); zum selektieren und filtern von Daten
• insert(); zum hinzufügen von Daten
• remove(); zum entfernen von Daten
• save(); zum speichern von Daten
Die Daten werden dabei in BSON gehalten. BSON ist eine JSON ähnliches Format.
3.2.3 Sharding
Sharding befasst sich mit der horizontallen Fragmentierung. MongoDB bietet dabei eine
17
Auto-Sharding Funktion.
Die Gründe für Sharding sind Vermeidung vom Single Point of Failure, Hochverfügbarkeit, Skalierbarkeit und somit auch Performance Verbesserung.
7. Sharding 15
In MongoDB werden die Daten aufgeteilt, somit liegen die Daten in verschiedenen Replica Sets. Diese Replica Sets beinhalten eine Anzahl an Shards in denen die Daten organisiert sind. Die Shards in einem Replica Set teilen sich die Daten und sind so organisiert, dass bei einem Ausfall eines Shards die Daten von einem der anderen Shards zur
Verfügung gestellt werden kann. Der Mongo Router ist dafür zuständig auf die jeweiligen
Replica Sets zu routen. Auch hier kann ein Replica Set ausfallen, ohne dass der Betrieb
der Applikation gestört wird, da es noch weitere Replica Sets gibt die dann einspringen.
15
Vgl. Banker, MongoDB in Action, S.217
18
3.3 Vergleich
In diesem Kapitel werden die beiden Datenbanken miteinander verglichen.
Es werden Kriterien gewählt anhand dessen dann eine Gegenüberstellung durchgeführt
wird. Anschließend wird das Ergebnis vom Autor bewertet.
3.3.1 Kriterien
Folgende Kriterien wurden festgelegt an denen die beiden Datenbanken gegenübergestellt werden: 16
• Data Model
• Data Types
• Large Objects (Files)
• Horizontal partitioning scheme
• Replication
• Object(row) Storage
• Query Method
• Secondary Indexes
• Atomicity
• Interface
• Server-side batch data manipulation
• Written in
• Concurrency Control
• Geospatial Indexes
• Distributed Consistency Model
16
Vgl. mongodb.org: MongoDB, CouchDB, MySQL Compare Grid
19
3.3.2 Gegenüberstellung 17 18
Data Model
Data Types
MongoDB
Document-Oriented (BSON)
string, int, double, boolean,
MySQL
Relational
link
date, bytearray, object, array,
Large Objects (Files)
Horizontal partitio-
others
Yes (GridFS)
Auto-sharding
Blobs
Partitioning
ning scheme
Replication
Master-slave and replica sets
Master-slave, multi-master,
Object(row) Storage
Query Method
and circular replication
Collection-based
Table-based
Dynamic; object-based query Dynamic; SQL
language
Secondary Indexes
Yes
Atomicity
Single document
Interface
Native drivers ; REST add-on
Server-side batch data Map/Reduce, server-side
manipulation
Written in
Concurrency Control
Geospatial Indexes
Geospatial Indexes
javascript
C++
Update in Place
Yes
Strong consistency. Even-
Yes
Yes - advanced
Native drivers
Yes (SQL)
C++
Spatial extensions
Strong consistency. Even-
tually consistent reads from
tually consistent reads from
secondaries are available.
secondaries are available.
1. MongoDB vs. MySQL
3.3.3 Bewertung
Anhand der Gegenüberstellung erkennt man die Vor- und Nachteile der jeweiligen Datenbank. MySQL verwendet ein relationales Datenmodel, das eine starke Konsistenz ermöglicht. Dadurch müssen die Daten zuerst in Tabellenform gebracht werden, um das
Ablegen zu ermöglichen. Zum horizontalen Partitionieren wird die Partitionierung eingesetzt, bei dem die Daten kategorisiert werden und somit in einem bestimmten Bereich
abgelegt werden. Die Größten Vorteile bei MySQL liegen in der starken Konsistenz und
17
mongodb.org: MongoDB, CouchDB, MySQL Compare Grid
18
MySQL: MySQL 5.0 Manual
20
der großen Community von relationalen Datenbanken.
Bei MongoDB wird auf hohe Verfügbarkeit und hohe Performanz gesetzt. Die Daten werden als Dokumente abgelegt und sind durch das BSON Format stark minimalisiert. Zum
horizontalen patritionieren wird Auto-Sharding verwendet. Hierbei werden die Daten in
Fragmenten auf mehrere Shards verteilt die dann untereinander organisiert sind und die
Daten ausliefern können. Die größten Vorteile bei Mongo DB liegen bei der Ausfallsicherheit, Performance und der Skalierung der Datenbank.
Alle weiteren Punkte sind bei beiden Datenbanken sehr ähnlich oder liefern sehr ähnliche
Ergebnisse die keine gravierenden Vorteile verschaffen.
21
6 Schlussbetrachtung
Zusammenfassend kann man sagen, das beide Datenbanken ihr Existenzrecht besitzen.
MySQL hat eine große Community und wird sehr häufig eingesetzt. Die starke Konsistenz ist oft notwendig bei kleinen bis mittelgroßen Software Lösungen. Das Tooling und
die Abfragesprache ist sehr ausgereift und ermöglich fast jede erdenkliche Abfrage.
Bei MongoDB liegt der Schwerpunkt auf Skalierung und Performance. Die Datenbank ist
sehr schnell und kann ohne großen Aufwand skaliert werden. Das Tooling ist vergleichbar mit den MySQL Tools und die Abfragesprache ermöglicht ähnliche Funktionen wie
bei SQL, ist aber nicht so ausgereift, da es auch nicht notwendig ist. Da MongoDB nicht
relational ist, wird in Kauf genommen, dass Daten teilweise redundant gehalten werden.
Es liegt im Vordergrund die schnelle Erreichbarkeit der Daten. Die Datenbank wird vorallem im Enterprise Bereich eingesetzt, in dem es sehr viele User und Anfragen gibt die
bedient werden müssen.
22
Literaturverzeichnis
Banker, Kyle: MongoDB in Action, Manning Publications, 2011
Brewer, Eric: PODC Keynote Slides, 2000
Kersken, Sascha: Handbuch für Fachinformatiker, Galileo Computing, 2005
Klug, Uwe: Datenbankanwendungen entwerfen & programmieren - Von der objektorientierten Analyse bis hin zur SQL-Implementierung, W2L GmbH 2008
MongoDB: MongoDB, CouchDB, MySQL Compare Grid http://www.mongodb.org/
display/DOCS/MongoDB%2C+CouchDB%2C+MySQL+Compare+Grid (28.12.2011,
12:14 Uhr)
Moos, Alfred: Datenbank-Engineering, Vieweg Verlag 2004
MySQL: Chapter 10. Data Types http://dev.mysql.com/doc/refman/5.0/en/data-types.
html (28.12.2011, 12:30 Uhr)
Spichale, Kai: JavaMagazin 8.2011, Cassandra und Hector, S.50
Wikipedia: Datenbanken: Verschiedene Formen von Datenbanksystemen http://
de.wikipedia.org/wiki/Datenbank#Verschiedene_Formen_von_Datenbanksystemen (19.
Dez. 2011, 16:58 Uhr)
Wikipedia: JavaScript Object Notation: Datenstruktur und Formatdefinition http://
de.wikipedia.org/wiki/JavaScript_Object_Notation (20. Dez. 2011, 19:36 Uhr)
23
Herunterladen