datenbank-programmierung

Java Persistence API (JPA)

Grundlegende Verwendung

@Entity
@Table(name = "favorite_number") // diese Klasse wird der Tabelle favorite_number zugeordnet
public class FavoriteNumber {

   @Id // definiert das Attribut als Typ id
   @GeneratedValue(strategy = GenerationType.IDENTITY)
   private Long id;

   @Column // definiert das Mapping einer Spalte zu einem Attribut
   private Integer number

   // ...
}

Siehe Beispielprojekt im Ordner jpa

Dokumentation Eclipse Link

Implementierungen

Es gibt verschiedene Implementierungen, wie

NoSQL

Relationale Datenbanken

NoSQL

Quellen: Martin Fowler - NoSQL Definition, Grundlagen CAP Theorem

Key-Value Stores

Bekannte Datenbanken

Redis, Riak, Memcached

Dokumentenorientierte Datenbanken

Wichtig

Beispiel

{
  mentorId: 4711
  vorname: "Jürgen",
  nachname: "Glas",
  mentees: [
    { vorname: "Gustav", nachname: "Anders"},
    { vorname: "Petra", nachname: "Rad"}
  ]
}

Bekannte Datenbanken

MongoDB, CouchDB, BaseX, eXist, HCL Notes, OrientDB, Apache Jackrabbit

Wide-Column Store

Bekannte Datenbanken

Cassandra, HBase

Graphdatenbanken

Bekannte Datenbanken

Neo4j, OrientDB

Indexierung

Beispiel

Für Abfrage nach Nachnamen müssen alle Einträge durchlaufen werden

CREATE INDEX Last_Name erstellt einen zusätzlichen Index, welcher alle Nachnamen, in einer separaten Tabelle sortiert speichert

Nachnamen werden schneller gefunden

Quelle

Verwendung

Create Index

Syntax

CREATE INDEX <Indexname> ON
<Tabellenname>(<Spaltenname>)

Unique Index

Syntax

CREATE UNIQUE INDEX <Indexname> ON
<Tabellenname>(<Spaltenname>)

Verteilte Datenbanksysteme

Skalierung

Vertikale Skalierung

Horizontale Skalierung

Failover-Cluster

Replikation

Redundante Verteilung der Daten auf verschiedene Server

Master-Slave-Replikation

Master-Master-Replikation

Sharding

CAP-Theorem

Nach Eric Brewer können in verteilten DBMS maximal zwei, jedoch nie drei der folgenden Eigenschaften garantiert werden:

Konsistenz: alle Knoten liefern identische Ergebnisse

Verfügbarkeit: auf jedem Knoten können Schreib- oder Lesezugriffe durchgeführt werden

Ausfalltoleranz: System kann bei Ausfällen weiterverwendet werden. Bei verteilten DBMS immer notwendig

Quelle

BASE

Eventual Consistency bedeutet, dass Schreibaktionen nicht unmittelbar auf allen Knoten durchgeführt werden müssen, sondern dass Aktualisierungen nach und nach im Knotennetz verteilt werden können.

Literatur