Schlagwort-Archive: Datenbank

Daten und Datenmodellierung (2)

Teil 2: Daten in Datenbanken / in Datenbankmanagementsystemen

andere Teile der Serie

Zurück zu Teil 1 Daten im Dateisystem

Weiter zum 3. Teil: Daten modellieren

Motivation für Datenbankmanagementsysteme

Im ersten Teil der Serie wurden Daten im Dateisystem vorgestellt. Wenn die Daten strukturiert sind, z.B. als CSV-formatierte Textdateien oder mit XML-Tags formatierte Textdateien, liegt im Prinzip schon eine Datenbank vor. Mit Programmen auf diese Daten zuzugreifen kann allerdings umständlich werden. Wenn man beispielsweise ausschließlich die Datensätze aus einer Datensammlung im CSV-Format lesen will, die den Namen „Kurt“ enthalten, müsste das Programm jede Zeile auf die Zeichenkette „Kurt“ überprüfen und, wenn sie vorhanden ist, die Zeile in die Ausgabe schreiben. Komplizierter wird es, wenn beispielsweise nicht die ganzen Zeilen, sondern nur die Telefonnummer für den Fall ausgegeben werden soll, dass der Name „Kurt“ oder „Karl“ ist und die Telefonnummer mit „0211“ anfängt. Noch unübersichtlicher wird es , wenn die Daten auf mehrere CSV-Dateien verteilt sind und es sollen Datensätze mit Bedingungen, die mehrere Dateien betreffen, gesucht werden. Um genau solche Aufgabenstellungen bequemer programmieren zu können, wurden Relationale Datenbankmanagementsysteme erfunden.

Relationales Datenbankmanagementsytem

Ein Relationales Datenbankmanagementsystem (RDBMS) erleichtert den Zugriff auf und die Verwaltung von Daten, die tabellenartig strukturiert werden können. Das RDBMS legt die Daten dabei auch wieder im Dateisystem ab, „versteckt“ sie aber vor dem Nutzer und den Anwendungsprogrammen, so dass der Zugriff auf die Daten nur mit Funktionen des RDBMS erfolgt. Ein RDBMS kann direkt vom Nutzer bedient werden, oder aber die Datenhaltung für ein Anwendungssystem erfolgt über sogenannte Schnittstellen des RDBMS. Die Funktionen, die das RDBMS bereitstellt, werden dann vom Programmierer in das Anwendungssystem eingebaut. Das „Sprache“, mit der das RDBMS angesprochen werden kann, ist die Structered Query Language (SQL).

RDBMS sind für Betriebliche Anwendungssysteme sehr wichtig. RDBMS gibt es schon länger, z.B. IBM DB2 auf dem IBM 3090 Großrechner ist auf dem Markt seit 1983, das RDBMS des Unternehmens Oracle seit 1979. Aktuelle Entwicklungen für das Internet sind MySQL, oder RDBMS die nur für den „Einbau“ in Programmen gedacht sind wie z.B. SQLite, das auch für die Datenhaltung in Android- und iOS-Smartphones genutzt wird.

Daten manipulieren mit SQL

SQL ist eine Abfragesprache insbesondere für RDBMS, sie lässt sich wie vereinfachtes Englisch lesen. SQL ist standardisiert in der Gruppe der Normen ISO/IEC 9075. Mit SQL kann man Daten in die Datenbank einfügen („Create“), Daten aus der Datenbank lesen („Read“), Daten, die schon  da sind, verändern („Update“) und  Datensätze löschen („Delete“). Mit diesen grundsätzlichen Operationen lässt sich alles bewerkstelligen, was man für Betriebliche Anwendungen braucht. Daher sagt man, SQL kann „CRUD“, was sich aus den Anfangsbuchstaben von Create, Read, Update und Delete ergibt.

Einfache Beispiele sind:

select * form telefonliste;

(liest alle Datensätze aus der Tabelle telefonliste)

select telnummer from telefonliste where name='Kurt';

(liest nur Datensätze, in denen der Name gleich Kurt ist.)

 insert into telefonliste ( name, telnr ) values ( 'Maria', '02114 635289372' );

(fügt Datensatz mit name=Marie und telnummer= 02114 635289372 in die Tabelle telefonliste ein.

Mit SQL kann noch viel mehr machen, z.B. Tabellen erzeugen, Daten im-und exportieren.

No-SQL-Datenbankysysteme

No-SQL bedeutet „Not-only-SQL“ und bezeichnet Datenbankmanagementsysteme, die die Daten nicht in Tabellenform behandeln. Der Bedarf entstand dadurch, dass es mit den vielen (meist unstrukturiereten) Daten im Internet schwierig wurde, vernünftige Tabellenstrukturen für RDBMS zu entwerfen, Wenn man Tabellen entwirft, haben diese oft sehr viele Spalten und zudem sind die meisten Zellen in der Tabelle leer. Gängige RDBMS sind für solche Aufgabenstellungen nicht optimiert und können  Performance-Probleme zeigen.

Grundsätzlich lassen sich zwar alle Problemstellungen, die mit No-SQL-Datenbanken lösbar sind, auch mit RDBMS lösen. No-SQL-Datenbanken werden insbesondere bei Problemstellungen, die mit dem Schlagwort Big-Data in Verbindung gebracht werden, eingesetzt.

Weiter zum 3. Teil: Daten modellieren

Quellen

Internet-Verweise

Eine Big-Data-Definition: https://wirtschaftslexikon.gabler.de/definition/big-data-54101

SQL lernen: http://www.sql-lernen.de/

No-SQL-Datenbanken im Vergleich: https://www.bigdata-insider.de/nosql-datenbanken-im-vergleich-a-666922/

Daten und Datenmodellierung (1)

Teil 1: Daten speichern im Dateisystem

Andere Teile der Serie:

Zum Teil 2: Daten in Datenbanken / Datenbankmanagementsystemen

Zum Teil 3: Datenmodellierung mit ERM und Relationenmodell

 

Motivation.

Ein Computerprogramm ist die Umsetzung von Algorithmen in eine „maschinengerechte“ Sprache. Damit kann ein Computer Geschäftsprozesse unterstützen oder zum Spielen genutzt werden. In allen Fällen stellt ein Computerprogramm Funktionen bereit, die meist Daten einlesen, die Daten transformieren und dann die Daten wieder abspeichern. Im Falle von Betrieblichen Anwendungen ist zu beobachten, dass die Daten den „Kern“ der Digitalisierung darstellen und das eigentlich Wichtige sind. Während Programme alle paar Jahre erneuert und ausgetauscht werden, sind Datenbestände erstaunlich stabil. Daher ist es wichtig, ein (auch technisches)  Verständnis für das Speichern und Bewahren von Daten zu entwickeln. Zudem ist es sinnvoll, Modelle für die Strukturierung von Daten zu kennen.

Diese Artikelserie will einen besonders einfachen und kompakten Zugang zur Datenmodellierung ermöglichen.

Was sind (Computer-) Daten?

Daten sind zunächst eine archivierbare Form von Kenntnissen über Fakten in der wirklichen Welt. Das können Texte sein (Anleitungen, Kochrezepte …) oder Zahlen wie 22,3 oder 33.935. Insbesondere die Zahlen helfen erst weiter, wenn man weiß, dass es  heute um 11:00 22,3 Grad Celsius Außentemperatur sind und dass der Goldpreis am 12.10.2018 33.935 € pro kg beträgt. Mit diesen weiteren Merkmalen, die den nackten Zahlen eine Struktur geben, werden aus den Zahlen Informationen. Erst wenn diese Informationen mit den Erfahrungen von Menschen angereichert werden, lassen sich Entscheidungen treffen. Ist die Temperatur angenehm? Dann gehe ich ins Schwimmbad. Ist der Goldpreis hoch im Vergleich zu sonst? Dann verkaufe ich meine Goldvorräte. So werden aus Informationen Wissen – durch die Nutzung und Anreicherung mit Erfahrung.

Während die Erfahrungen von Menschen schwer in den Computer zu bekommen sind, gelingt dies mit Daten und Informationen gut. Dazu müssen die Daten zunächst in eine computergerechte Form gebracht werden, heißt, die Darstellung der Zahlen muss zur Technik im Computer passen. In einem Computer können nur physikalische Zustände (wie zum Beispiel ein kleines Magnetfeld auf einer Festplatte oder ein reflektierendes Aluminiumpünktchen auf einer CD) gespeichert werden. Die Daten (Buchstaben und Zahlen) sind daher immer in eine Reihenfolge von 0 und 1 umzucodieren. Um dies zu tun und Möglichkeiten bereitzustellen, wieder „menschenlesbar“ an die Daten zu kommen, werden ebenfalls Computerprogramme benötigt. Diese Computerprogramme heißen dann z.B. Dateimanager (wie der Windows Explorer auf dem PC oder der Finder auf dem Mac), Dateisystem (als Teil des Betriebssystems) oder Relationales Datenbankmanagementsystem (z.B. DB2 von IBM, Oracle oder MySQL).

Speicherung von Daten im Dateisystem.

Einfache Textdateien

Eine einfache Möglichkeit, Daten zu speichern, besteht darin, sie in sogenannten Dateien im Dateisystem abzulegen.  Dabei ist die Ablage in den Dateisystemen z.B für Windows und MacOS hierarchisch organisiert: Es können Ordner angelegt werden, es können darin wieder Ordner angelegt werden, die Daten werden dann darin gespeichert. Die Datei und die Ordner haben Namen, z.B. befindet sich die Textdatei „kochrezept.txt“ im Ordner „Kochrezepte“, der  wiederum im Ordner „meine Daten“ auf der Festplatte mit der Bezeichnung „C:“ angelegt ist. Unter Windows sieht dann der Zugang, der sogenannte „Pfad“ zu der Datei so aus: C:\meineDaten\Kochrezepte\kochrezept.txt.

Computerprogramme, mit denen bequem solche Dateien erzeugt, gelesen, verändert und gespeichert werden können, sind Notepad++ unter Windows oder Sublime Text auf dem Mac under MacOS.

Daten aus einfachen Zahlen als txt-Dateien

Auch Zahlen kann man in der gleich Form wie Texte im Dateisystem ablegen. So kann eine Liste von Telefonnummern z.B. unter dem Namen telefonnummern.txt gespeichert werden. Hat man mehrere Telefonnummern, so ist zu überlegen, wie das Ende der einen und der Anfang der nächsten Telefonnummer unterschieden werden kann. Das könnte mit einem Zeichen funktionieren, das nicht in einer Telefonnummer vorkommt, z.B. ein „;“. Der Übersichtlichkeit halber wird als Trennung für eine solche Liste meist ein Zeilenumbruch gewählt, und die Telefonnummern stehen ordentlich untereinander.

021514 6782453
021541 6254273
015772 62444902

Abb. 2: Beispiel Liste mit Telefonnummern

Daten aus Zahlen und Bezeichnungen als csv-Dateien

Hat man sehr viele Telefonnummern, wird es sinnvoll dazuzuschreiben, zu welcher Person die Telefonnummer gehört. Spätestens jetzt ist darüber nachzudenken, wie die Struktur der Daten aussehen soll, so dass aus den Daten Informationen werden. Bei einer manuellen Aufschreibung auf einem Blatt mit Rechenkästchen würde man vermutlich die Form einer Tabelle wählen. In eine Zeile schreibt man den Namen der Person und dahinter die Telefonnummer, in der nächsten Zeile die zweite Person mit der Telefonnummer und so weiter (vgl. Abb. 3). Dieses intuitive Vorgehen kann man bei der Speicherung im Dateisystem beibehalten. Dabei gibt man der Textdatei eine Struktur: Zunächst kommt der Name, dann ein Trennzeichen wie z.B. „;“, dann die Telefonnummer, zuletzt ein Zeilenumbruch (Abb. 4). Wichtig ist, dass die Daten zwischen den Trennzeichen „atomar“ sind, heißt, es wird nur eine Telefonnummer in eine Zelle geschrieben und nicht zwei. Eine Zeile 1;Kurt;021144556677 ist atomar, eine Zeile mit zwei Telefonnummern ist es nicht, 1;Kurt;021144556677 0157724353474 wäre also ungünstig.

Vorteilhaft ist es, eine solch strukturierte Textdatei mit der Endung csv abzuspeichern, also „telefonnummern.csv“. Öffnet man die Datei mit einer Tabellenkalkulation, z.B. Excel, so wird sie gleich als ordentliche Tabelle angezeigt. csv ist die Abkürzung für „Comma Separated Values“. Im englischen Sprachraum nimmt man als Trennzeichen ein Komma. Das kollidiert in Deutschland mit dem Dezimaltrenner, daher ist in Deutschland ein Semikolon üblich.

Derart strukturierte Dateien nennt man oft lax „CSV-Datei“. Der Aufbau von CSV-Dateien ist standardisiert im RFC 4180

Abb. 3: Daten tabellarisch manuell strukturieren

Kurt;0215187837
Emma;021387215
Karl;02431478372

Abb.4: Daten tabellarisch im CSV-Format

Daten mit komplexer Struktur in xml-Dateien

Wenn z.B. eine Person mehrere Telefonnummern hat, könnte man in der tabellarischen Struktur mehrere Spalten vorsehen. Ist die Anzahl der möglichen Telefonnummern allerdings zunächst nicht bekannt,  sind andere Strukturierungsformen sinnvoll. Eine Möglichkeit ist, mit mehreren CSV-Dateien zu arbeiten. Der Umgang mit mehreren Tabellen, die sich aufeinander beziehen wird allerdings schnell unübersichtlich. Genau für diesen Anwendungsfall wurden daher  Relationale Datenbankmanagementsysteme entwickelt. Eine weitere Möglichkeit, weiterhin einfache Dateien im Dateisystem zu nutzen, ist die Strukturierung mit XML. XML heißt „extensible markup language“ und soll hier nur am Beispiel in Abb. 3 erklärt werden. Das Grundprinzip ist, dass Daten mit sogenannten Tags in spitzen Klammern gekennzeichnet werden. Diese Tags lassen sich ineinander Schachteln, damit sind fast beliebig komplizierte Strukturierungen für Daten darstellbar. XML wird vom W3C standardisiert

<xml>
<kontakt>
<name>Karl</name>
<tel>02113 445532</tel>
<tel>015771 08154711</tel>
</kontakt>
<kontakt>
<name>Emma</name>
<tel>02113 885532</tel>
</kontakt>
</xml>

Abb. 3  xml-formatierte Telefonliste mit unterschiedlich vielen Telefonnummern

Daten mit komplexer Struktur – weitere Formate

Weitere Formate, um Daten zu strukturieren und in einfachen Textdateien abzulegen, sind z.B.

  • JSON
  • EDIFAKT

JSON (JavaScript Object Notation) ist ein  Datenaustauschformat, das für Menschen lesbar und für Computerprogramme einfach zu parsen (Analysieren von Datenstrukturen) ist. JSON ist eine Untermenge der Programmiersprache Javascript.

EDIFAKT (Electronic Data Interchange for Administration, Commerce and Transport) dient dazu, Geschäftsdaten strukturiert auszutauschen.

Zum Teil 2: Daten in Datenbanken / Datenbankmanagementsystemen

Quellen

Internet-Verweise

EDIFACT: https://www.edicenter.de/was-ist-edi-und-was-ist-edifact/

JSON, eine Erklärung: https://www.cloudcomputing-insider.de/was-ist-json-a-704909/

CSV RFC 4180: https://tools.ietf.org/html/rfc4180

XML beim W3C: https://www.w3.org/TR/REC-xml/