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