Isi 10 Alternative Datenmodelle

Werbung
10AlternativeDatenmodelleundneuereEntwicklungen
Informationssysteme für Ingenieure (ISI)
Herbstsemester 2016
R.Marti
LimitationendesRelationenmodells
• 1.Normalform:Tupelsind"simpleObjekte"
• "komplexeObjekte",d.h.Objektemit"komplexen"Attributwerten
(z.B.Listen,Arrays,Mengen)sindfürverschiedeneDB-Anwendungen
wünschbar
• DieAbbildungvonDatenstruktureninmodernen(oftobjektorientierten)
ProgrammiersprachenaufrelationaleDBStrukturenistaufwendig
(sog.impedancemismatch)
• SubtypenundVererbung(sowieallenfallsÜberschreibungvonMethoden)
werdennichtdirektunterstützt
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
2
Reminder:WannisteineProgrammiersprache(PL)OO?
• OO =Objekt-Orientiert
• Eigenschaftenwieprozedurale/funktionaleProgrammiersprachenàlaC,PascalundLisp,
insbes."komplexe"Datenstrukturen wiestruct (record),array,evt.Listen
• Datenkapselung [dataencapsulation,auchinformationhiding]
ZugriffaufeinzelneDatenfeldereinesObjektserfolgtausschliesslichodertendentiell(jenach
"Sichtbarkeit")überProzeduren,diefürdiesesObjektdefiniertsind
• Vererbung [inheritance],Erweiterung[extension]undÜberschreibung[override]
MöglichkeitzurDefinitionvonSubtypen(vgl.ER-Modell),welche
- DatenfelderundProzedurendesSupertypserben
- zusätzlicheDatenfelderundProzedurenhabenkönnen
- bestehendeProzedurendesSupertypsüberschreiben(d.h.umdefinieren)können
• dynamischeBindung vonProzeduren
Prozeduren,diefürdenSupertypdefiniertsind,werdenzurLaufzeit(d.h.dynamisch)gemäss
demjeweiligenSubtypeinesObjektsausgewählt(d.h.andasObjektgebunden)
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
3
Beispiel:EinERModellfüreineDatenbank
Person
Department
mitProzedur(*)
Subtyping
Customer
Employee
Project
mitmehrwertigen
Attributen(*)
direktem:mBeziehung
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
4
JavaModellaufBusinessLogicLayer
class Person {
// Disclaimer: this may not be absolutely correct Java …
int persNo;
String name;
String address;
Date birthDate;
int age() {
// a procedure which computes the age of a person
return Calendar.getTime().getYear() – birthDate.getYear();
}
}
class Employee extends Person {
// a subtype
int salary;
Department dept;
// a reference to a Department object
Set<Project> projs;
// a set of references to Project objects
Set<String> childNames; // a set of strings
Person
Department
}
Person
Department
class Department {
int deptNo;
String name;
Set<Employee> emps;
Customer
Employee
}
Customer
R.Marti
Employee
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
Project
Project
5
RelationalesModell("gängige"Alternative)
create table Person (
create table Department (
persNo
integer primary key,
persNo
integer primary key,
name
varchar(40) not null,
name
varchar(40) not null
address
varchar(100) not null,
);
birthDate date not null
);
create table Employee (
persNo
integer primary key, -- primary key of supertype
salary
integer not null,
deptNo
integer,
foreign key persNo references Person,
foreign key deptNo references Department -- a "reference" to a Department
);
create table EmpChild (
Person
Department
persNo
integer not null,
Person
Department
childName varchar not null,
primary key (persNo, childName),
foreign key persNo references Employee
);
Customer
Employee
Project
create table ProjAssig (
Employee
Project
Customer
persNo
integer not null,
projNo
integer not null,
primary key (persNo, projNo),
foreign key persNo references Employee,
ProjAssig
EmpChild
foreign key projNo references Project
);
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
6
ObjectRelationalMapping(ORM)
MöglicheÜbersetzungdesBeispielsinRelationenundnotwendigeAnfragenzur
DarstellungeinesObjekts(z.B.einesEmployee)
• Person(persNo,name,address,birthDate)
- age erfordertBerechnunginSELECT-Liste
• Employee(persNo,salary,deptNo)
- name,address etc.erfordernJoinmitPerson
- projs erfordertJoinmitProjAssigmnt undevt.mitProject
- children erfordertJoinmitEmpChild
- dept erfordertevt.JoinmitDepartment
• EmpChildren(persNo,childName)
• Project(projNo,…)
• ProjAssig(persNo,projNo)
• Department(deptNo,name)
- emps erfordertJoinmitEmployee
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
7
MöglichkeitenzurRealisierungvonORM
• ProgrammierungmitJDBC(evt.SQLJ)"vonHand"
⇒ erfordertrelativvielrepetitivenProgramm-Code
• VerwendungeinesORM-Toolkits,welcherProgramm-CodefürMappingsaufgrund
einerdeklarativenBeschreibungerzeugt
z.B.myBATIS,Hibernate
⇒ zusätzlicherLernaufwand,evt.etwaswenigerperformant
• VerwendungeinesObjekt-orientiertenDatenbanksystems
⇒ Objekt-relationalesDatenbanksystem(OO-ErweiterungenvonSQL)
⇒ Objekt-orientiertesDatenbanksystemgemässODMGStandard
(ODL=ObjectDefinitionLanguage,OQL=ObjectQueryLanguage)
⇒ PersistentJava(C++,Smalltalk)DataStore
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
8
Reminder:DienstleistungenvonDB-Systemen(DBMSs)
• persistenteVerwaltungsehrgrosserDatenmengen(Terabytes)auf
Sekundärspeicher,inkl.Fehlertoleranz(backup,recovery)
• deklarativer,mengenorientierterDatenzugriff
• Mehrbenutzerbetrieb (concurrencycontrol)
• Datenintegritätskontrolle (semanticintegrity)
• Zugriffskontrolle,Datenschutz(authorization)
• OptimierungderDatenzugriffeundAnfragen
(accesspathselection,queryoptimization)
• DatenunabhängigkeitvonProgrammen(dataindependence)
– beiÄnderungenphysischerDatenstrukturenundZugriffsoptimierung
– beiErweiterungenundModifikationenlogischerDatenstrukturen
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
9
WannisteinDatenbanksystem(DBMS)OO
• UnterstützungderEigenschaftenvonDatenbanksystemen(DBMSs)
• UnterstützungderEigenschaftenvonOOPL
(anfänglinsbesaufBasisvonSmalltalk,C++oderCLOS;heuteJava)
– komplexeDatenstrukturen
– Datenkapselung
– Vererbung
– dynamischeBindung
• Objektidentität
– vomDBMSerzeugteOIDs(ObjectIDentifiers)alsPrimärschlüssel
• BerechnungsvollständigeDBProgrammiersprache
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
10
ODMG– ObjectDefinitionLanguage(ODL)
class Person ( extent PersonExtent, key
attribute int persNo;
attribute string name;
attribute string address;
attribute date birthDate;
int age();
}
class Employee extends Person {
attribute int salary;
relationship Department dept
inverse Department::emps;
relationship set(Project) projs
inverse Projects::emps;
attribute set(string) childNames;
}
class Department
( extent DeptExtent, key deptNo )
{
attribute int deptNo;
attribute string name;
relationship set(Employee) emps
inverse Employee::dept;
}
R.Marti
persNo ) {
// an interface of a procedure
// a subtype
// a reference to a Department object
// a set of references to Project objects
// a set of strings
Person
Department
Person
Customer
Customer
Department
Employee
Employee
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
Project
Project
11
ODMG– ObjectQueryLanguage(OQL):Beispiele(1)
Die Anfragesprache OQL
Einfache Anfragen
finde die Namen der C4-Professoren
select p.Name
from p in AlleProfessoren
where p.Rang = „C4“;
Generiere Namen- und Rang-Tupel der C4-Professoren
select struct(n: p.Name, r: p.Rang)
from p in AlleProfessoren
where p.Rang = „C4“;
Geschachtelte Anfragen und Partitionierung
select struct(n: p.Name, a: sum(select v.SWS from v in p.liest))
from p in Alle Professoren
where avg(select v.SWS from v in p.liest) > 2;
© A. Kemper & A. Eickler
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
12
ODMG– ObjectQueryLanguage(OQL):Beispiele(2)
Pfadausdrücke in OQL-Anfragen
select s.Name
from s in AlleStudenten, v in s.hört
where v.gelesenVon.Name = „Sokrates“;
Visualisierung des Pfadausdruckes
Studenten
hört
Vorlesungen
gelesenVon
Professoren
Name
ein längerer Pfadausdruck
eineVorlesung.gelesenVon.residiertIn.Größe
Vorlesungen
Professoren
Räume
float
© A. Kemper & A. Eickler
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
13
ODMG– ObjectQueryLanguage(OQL):Beispiele(3)
Erzeugung von Objekten
Vorlesungen(VorlNr: 5555, Titel: „Ethik II“, SWS: 4, gelesenVon: (
select p
from p in AlleProfessoren
where p.Name = „Sokrates“ ));
Operationsaufruf in OQL-Anfragen
select a.Name
from a in AlleAngestellte
where a.Gehalt() > 100.000;
© A. Kemper & A. Eickler
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
14
Objekt-orientierteundobjekt-relationaleDBMS
• OODB:
unterstützenmeistODLundOQL(konzeptionelleineErweiterungvonSQL)
• ORDB:
unterstützen"plainold"SQLmitrelationalenErweiterungen
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
15
DieNoSQLBewegung
• Treiber
– LimitationendesrelationalenDatenmodells (vgl.OODatenmodelle)
– BewältigungsehrgrosserDatenmengen("BigData")mitsehrvielenBenutzern
(vgl.Google,amazon,facebook,Twitter)
• NoSQL stehtnichtnotwendigerweisefür"no SQL"(="keinSQL")
sondernallenfallsfürnotonlySQL
• Datenmodelle:uneinheitlich,abernichtrelational(bzw."mehralsrelational")
– key-valuedatabases:aneinObjektwerden"beliebige"ListenvonAttribut-WertePaaren
(key-valuelists,auchpropertylists)angehängt
– graphdatabases:Knoten(≈Entitäten)undKanten(≈binäreBeziehungen)
– documentdatabases:Datenbankvon(evt.verketteten)Dokumenten
– columnardatabases:+/−relational,Datenwerdennichtreihen- sondernkolonnenweise
gespeichert⇒ jenachAnwendungsubstantielleVorteilebezügl.PerformanzundPlatzbedarf
• Datensindtypischerweiseverteiltundwerdenparallelverarbeitet
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
16
GrundideevonKey-ValueDatenbanken
ÜblicheDarstellung(auchhorizontaleDarst.)
Person
PersNo
PersName
FirstName
Address
BirthDate
3
'McNealy'
'Scott'
'Atherton'
1954-11-13
ReifizierteDarstellung(auchvertikaleDarst.,Objekt-Attribut-Wert Tripel)
Person
PersAttrValues
PersAttr
PersNo
AttrValue
AttrNo
AttrName
3
'McNealy'
1
'PersName'
3
…
…
…
3
1954-11-13
4
'BirthDate'
Objekt mitKey-Value Liste(JSONFormat)
Person( id:3, [PersName:'McNealy', FirstName:'Scott', … , BirthDate:1954-11-13] )
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
17
Semantic Web:Resource DescriptionFramework(RDF)
• Triple-Datenmodell
– (Subjekt,Prädikat,Objekt)
• MeistgraphischeVisualisierung
– SubjekteundObjektesindKnoten
– PrädikatesindgerichteteKanten
–
© A. Kemper & A. Eickler
R.Marti
VonSubjekt-KnotennachObjektKnoten
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
Beispiel-RDF-Graph
© A. Kemper & A. Eickler
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
CAP– Consistency,Availability,PartitionTolerance
• „CAPTheorem“
beiverteiltenundrepliziertenDatenkönnennur2der3folgendenEigenschaften
- Konsistenz(C =Consistency)
A
- Verfügbarkeit(A =Availability)
- ToleranzbeiNetzwerkpartition(P =Partitioning)
gleichzeitiggarantiertwerden
C
P
• invielen(verteilten)NoSQLSystemenwirddarumdasKriteriumKonsistenz
durch"eventual consistency"ersetzt:
einUpdatemussnur"eventually“(d.h.nacheinergewissenZeit)aufallen
Datenkopiennachgeführtwerden
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
20
MomentanerHype:BigData(1)
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
21
MomentanerHype:BigData(2)
• "Definition"(eher:Charakterisierung)vonBigData:The3Vs
– Volume:≥100Terabyte(100·1012 Byte)odergar≥1Petabyte(1015 Byte)
.Volumenistrelativ,ändertüberdieZeit
.Berücksichtigung"aller"Daten,nichtnurStichproben(samples)
.Speicherung+VerarbeitungbenötigenvieleDisks+CPUs
– Variety:nichtnurstrukturierte,auchunstrukturierteDaten(insbes.Text)
.>80%derDatensindunstrukturiert
.EntdeckenvonStruktureninunstrukturiertenDaten
– Velocity:nichtnurstatische(teilweise"abgestandene")Daten,
sondern"real-time"DatensowiedynamischeDatenströme(datastreams)
."sofortige"SichtbarkeitallerÄnderungeningesamterUnternehmung
.TickervonAktienkursen,SensorDaten,BewegungenmobilerDevices
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
22
DatenbankversusDatenstrom
© A. Kemper & A. Eickler
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
TechnischeSichtaufBigData
• neues"Infrastruktur-Ökosystem"fürBigDataentwickelt
oftOpenSource
– HDFS(HadoopDistributedFileSystem)
– HadoopImplementationvonGoogle'sMapReduceParadigma
– AbfragesprachenwieHiveQL(angelehntanSQL)
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
24
One of the most influential case studies in the NoSQL movement is the Google
MapReduce system. In this paper Google shared their process for transforming
large volumes of web data content into search indexes using low-cost commodity
CPU's.
While the sharing of this information was significant, the concepts of "map"
umdieParallelität(mehrereDatenkopien,sehrvieleProzessoren)
and "reduce" were not new. Map and reduce functions are simply names for two
stages of a data transformation as described in figure 1.6.
Map-ReduceFramework
•
ausnützenzukönnen,
solltenAnfrageninein
sog.Map-Reduce
Framework"gegossen"
werden
Figure 1.6 The map and reduce functions are ways of partitioning large datasets into
smaller chucks that can be transformed on isolated and independent transformation
systems.
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
The initial stages of the transformation
25
are called the map operation. They are
responsible for data extraction, transformation and filtering of data. The results of
Map-Reduce
© A. Kemper & A. Eickler
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
Join mitMap-Reduce
© A. Kemper & A. Eickler
R.Marti
ISI2016 – 10AlterntativeDatenmodelleundneuereEntwicklungen
Herunterladen