SlideShare uma empresa Scribd logo
1 de 32
Baixar para ler offline
www.fromdual.com




  Data Warehouse (DWH)
        mit MySQL

DOAG Konferenz 2012, Nürnberg


          Oli Sennhauser
   Senior MySQL Consultant, FromDual GmbH

    oli.sennhauser@fromdual.com

                                                    1 / 32
Über FromDual GmbH                          www.fromdual.com




●   FromDual bietet neutral und unabhängig:
    ●   Beratung für MySQL und Galera
    ●   Support für MySQL und Galera
    ●   Remote-DBA Dienstleistungen für MySQL
    ●   MySQL Schulungen
●   Oracle Silver Partner (OPN)

                  www.fromdual.com


                                                    2 / 32
Inhalt                                                    www.fromdual.com




         Data Warehouse mit MySQL
         ➢
             Überblick
         ➢
             Extrahieren – Transformieren – Laden (ETL)
         ➢
             Modellieren des Data Warehouse
         ➢
             Reporting




                                                                  3 / 32
Was ist ein Data Warehouse?                           www.fromdual.com



●   Data Warehouse (Abk. DWH)
    ●   Datenbank :-)
    ●   Für Reporting und Datenanalyse
    ●   Meist fürs Management (→ politisch, vereinfacht!)
    ●   Über: Finanzkennzahlen, Produktionskennzahlen, etc.
●   Resultat:




                                                              4 / 32
Technische Sicht                                  www.fromdual.com



●   Datenquellen (OLTP System, Dateien, Fremdsysteme)
●   Datenaufbereitung (ETL)
●   Datenhaltung (DWH: Staging Area)
●   Datenauslieferung (DWH: Data Mart)




                                                          5 / 32
Grober Ablauf                                             www.fromdual.com



●   Datenquellen
    ●   Operative Datenbanken: OLTP (ODBC, JDBC)
        ●   MySQL, Oracle, PostgreSQL, etc.
    ●   Dateien (CSV, XML, ...)
        ●   Apache Log, Host-Systeme
●   Mit ETL-Jobs (Extract, Transform, Load)
    ●   Skripte (PHP, Perl, ...)
    ●   ETL Software (Pentaho, ...)
●   Ins DWH
    ●   Zuerst Staging Area
    ●   Dann Data Mart (Dimensional Model, Star Schema)
●   Report (SQL, Spreadsheet, Reporting-Software)

                                                                  6 / 32
Grobes Vorgehen                              www.fromdual.com




    Ich persönlich würde:
●   Den Gaul von hinten her aufzäumen:
    ●   Welchen Report brauche ich (= Z)?
    ●   Woher kommen die Daten dazu (= A)?
    ●   Wie komme ich von A nach Z?

●   Datenfriedhöfe: Wir sammeln mal, man kann
    ja nie wissen...


                                                     7 / 32
ETL Jobs                                        www.fromdual.com




●   ETL: Extract – Transform – Load
    ●   Extrahieren der Daten von externen Quellen
    ●   Transformieren der Daten entsprechend des
        Bedarfs
    ●   Laden der Daten ins Ziel (Staging Area oder DM)
●   Wie?
    ●   Skripte (PHP, Perl, Shell, ...)
    ●   Software (Pentaho, ...)


                                                        8 / 32
ETL Technisch                                                  www.fromdual.com



●   Extract
    ●   ODBC/JDBC + SQL
    ●   SELECT INTO OUTFILE → CSV
    ●   mysql ­­xml ­e 'SELECT * FROM test' > test.xml
●   Transform
    ●   Filtern, Rausschneiden, Anreichern, Sortieren (PK)
    ●   DB's sind grundsätzlich langsam → ausserhalb der DB erledigen
    ●   Parallelisieren!
●   Load
    ●   Laden in Primary Key Sortierung (InnoDB)
    ●   Parallel laden
    ●   Single Row INSERT vs multi Row INSERT vs LOAD DATA INFILE

                                                                        9 / 32
Welche Storage Engine?                                      www.fromdual.com



●   MyISAM
    ●   Nicht Crash-safe
    ●   Table-Lock, schlecht bei Concurrency
    ●   Kleiner Footprint, schnell bei Full Table Scan
●   InnoDB
    ●   Crash-safe
    ●   Row-Lock, gut bei Concurrency
    ●   Footprint ca. 2 x MyISAM
●   Infobright, InfiniDB, Tokutek
    ●   Spezialisiert (Columnar Storage Engine, Fractal Trees)
    ●   Proprietär, teuer

                                                                    10 / 32
MySQL Konfiguration                           www.fromdual.com



●   InnoDB:
    ●   innodb_buffer_pool_size (RAM!)
    ●   innodb_log_file_size (Data load)
    ●   innodb_flush_log_at_trx_commit (Data load)
●   MyISAM:
    ●   key_buffer_size (RAM!)
    ●   bulk_insert_buffer_size (Bulk data load)
●   Query Cache? → stört eher
●   MyISAM/InnoDB Tabellenkompression?
                                                      11 / 32
Laden möglichst schnell...                                     www.fromdual.com



●   Default Einstellung sind sehr schlecht (43 x langsamer!)
●   InnoDB tendenziell besser als MyISAM
●   Schlecht: autocommit = 1 → Transaktionen verwenden! +20%
●   Schlecht: innodb_flush_log_at_trx_commit = 1
    → 0 (f = 40!)
●   Daten vor-sortieren nach PK: +30%
●   Parallel laden (f = mind. 2 – 3 )
●   Bulk Load (multi Row Insert, LOAD DATA INFILE) f = 3 – 4


●   Total ca. F = 500!
●   Beispiel: 1.140 Mia Rows (ca. 80 Gbyte) in 4 h geladen


                                                                       12 / 32
Weitere Ladehilfen                                              www.fromdual.com



●   INSERT ON DUPLICATE KEY UPDATE
    ●   INSERT oder UPDATE
●   REPLACE INTO
    ●   INSERT oder DELETE + INSERT
●   Federated Storage Engine?
●   Transportable Tables? (MyISAM, oder InnoDB 5.6)
●   Lade-Jobs erneut startbar machen!
    ●   Am 21. 8. laden wir Daten vom 20. 8.
    ●   Daten waren falsch
    ●   Am 22. 8. laden wir geflickten Daten vom 20. 8. und 21. 8.
    ●   Nochmal laden aber vorher löschen!?!

                                                                        13 / 32
Staging Area                                                             www.fromdual.com




●   Beispiel Download-Statistik:
                      ETL – Job
          http     ● parse                               http_log
       accesslog   ● split                               Staging
                   ● load                                Tabelle

●   Data Staging Area /      CREATE TABLE `page_hits_raw` (
                               `host` varchar(32) DEFAULT NULL,

    Tabelle                    `remote_host` char(15) DEFAULT NULL,
                               `logname` varchar(64) DEFAULT NULL,
                               `user` varchar(64) DEFAULT NULL,
                               `ts` int(10) unsigned DEFAULT NULL,
                               `methode` varchar(12) DEFAULT NULL,
                               `request` varchar(1024) DEFAULT NULL,
                               `protocol` varchar(16) DEFAULT NULL,
                               `status` smallint(5) unsigned DEFAULT NULL,


    Noch kein Report
                               `bytes` mediumint(8) unsigned DEFAULT NULL,
●                              `referer` varchar(1024) DEFAULT NULL,
                               `user_agent` varchar(255) DEFAULT NULL,
                               `ua_engine_compatibility` varchar(255) DEFAULT NULL,

    möglich...                 `ua_operating_system` varchar(255) DEFAULT NULL,
                               `ua_platform` varchar(255) DEFAULT NULL,
                               `ua_browser_platform_details` varchar(255) DEFAULT NULL,
                               `ua_browser_enhancements` varchar(255) DEFAULT NULL
                             );




                                                                                    14 / 32
OLTP vs. OLAP                                                 www.fromdual.com



    Unterschiedliche Anwendungsmuster:
●   Operative DB
    ●   Online Transaction Processing (OLTP)
    ●   Beispiel: Webshop, ERP, VoIP Calls, etc.
    ●   Kurze, schnelle Zugriffe auf kleine Datenmengen
●   Reporting DB
    ●   Online Analytical Processing (OLAP)
    ●   Beispiel: Monatsrechnungen, Umsatzentwicklung, etc.
    ●   Langsamere Zugriffe auf grosse Datenmengen
●   Hybride (Web-Anwendungen) :-(
    ●   „Zeig mir die häufigst verkauften Produkte!“
    ●   „Was könnte sonst noch zu mir passen?“

                                                                      15 / 32
Zugriffsmuster                                     www.fromdual.com



●   DB's sind schnell, wenn Daten im RAM liegen:
    ●   OLTP kleine Datenmengen → RAM
    ●   OLAP grosse Datenmengen → Platte
●   Was passiert bei Kombination?
    ●   Sieht man sehr oft!
        → Daher wenn möglich/nötig trennen!




         OLTP                  Hybrid          OLAP


                                                           16 / 32
Relational vs. Dimensional                                             www.fromdual.com



●   OLTP                                ●   OLAP
    ●   Entity Relationship Model (ER       ●   Dimensional Model (Star Schema)
        Schema)                             ●   Stark denormalisiert
    ●   Normalisiert (3rd NF)               ●   Hohe Redundanz
    ●   Keine Redundanz                     ●   Einfaches Schema
    ●   Komplexes Schema                    ●   Wenige Tabellen und Joins
    ●   Vielen Tabellen und Joins               (Joins sind teuer!)
    ●   Hohe Schreib-Performance            ●   Hohe Lese-Performance




                                                                               17 / 32
Dimensional Schema Design                        www.fromdual.com




    Star Schema:
●   Fact Tabellen
    ●   Beinhaltet die Messwerte
        (Downloads der Produkte)
●   Dimension Tabellen
    ●   Einstiegspunkt für Fact Tabellen
    ●   Beschreibung des Geschäftspro-
        zesses
    ●   Oft „sortieren/gruppieren nach Produkt, nach
        Zeit, nach Version etc...“
                                                         18 / 32
Star Schema                                www.fromdual.com



 ●   „Downloads sortieren/gruppieren nach Produkt,
     nach Zeit und nach Version!“




                                                   19 / 32
Fact Tabellen                                              www.fromdual.com



●   Speichert numerisch Performance-Metriken
●   Werte sind additiv (1 download + 1 download)
●   Möglichst atomar (NICHT 7 downloads pro Tag!)
●   Selbe Granularität über ganze Tabelle (sonst Aggregate)
●   Wenig Spalten (Anz. Dim + 2 – 5 Facts) aber oft sehr viele
    Zeilen! → Grosse Tabellen, daher auf Datentypen achten!
●   Lokalität der Daten beeinflussbar:
    ●   InnoDB Primary Key → physische Sortierung der Zeilen
    ●   MyISAM: ALTER TABLE ... ORDER BY ... (teuer!)
    ●   Partitionen (RANGE, meist nach Zeit)!
●   Auf Dimension-Bus-Architektur passend

                                                                   20 / 32
Fact Beispiel                                                                www.fromdual.com




 CREATE TABLE `product_download_fact` (
    `product_id` tinyint(4) NOT NULL,
    `date_id` smallint(6) NOT NULL,
    `time_id` smallint(6) NOT NULL,
    `geo_id` smallint(6) NOT NULL,
    `customer_id` smallint(6) NOT NULL,
    `download` tinyint(4) NOT NULL,
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    PRIMARY KEY (`id`),
    KEY `product_id` (`product_id`),
    KEY `date_id` (`date_id`),
    KEY `time_id` (`time_id`),
    KEY `geo_id` (`geo_id`)
 );

 +------------+---------+---------+--------+-------------+----------+----+
 | product_id | date_id | time_id | geo_id | customer_id | download | id |
 +------------+---------+---------+--------+-------------+----------+----+
 |          0 |    9483 |    1389 |     36 |          57 |        1 | 1 |
 |          0 |    9487 |    1395 |     36 |          79 |        1 | 2 |
 |          0 |    9489 |    1396 |     37 |          85 |        1 | 3 |
 |          0 |    9492 |    1376 |     34 |           5 |        1 | 4 |
 |          0 |    9492 |    1414 |     39 |           0 |        1 | 5 |
 |          0 |    9493 |    1365 |     32 |           0 |        1 | 6 |
 |          0 |    9494 |    1382 |     34 |          28 |        1 | 7 |
 |          1 |       2 |    1283 |     20 |           0 |        1 | 8 |
 |          1 |       7 |    1316 |     25 |          23 |        1 | 9 |
 |          1 |       8 |    1329 |     27 |          71 |        1 | 10 |
 +------------+---------+---------+--------+-------------+----------+----+




                                                                                     21 / 32
Dimension Tabellen                                                            www.fromdual.com



●   Einstieg und User Interface ins DWH (auf Fact Tabellen)
●   Gehören zu Fact Tabellen
●   Textbeschreiben des Geschäfts
●   Hoch redundant
●   Oft „sortieren/gruppieren nach Produkt, nach Zeit, nach Version etc...“
●   Haben viele und lange Spalten (50 – 100, hoch redundant)
    ●   MySQL Limitationen beachten!
●   Üblicherweise nur wenige Zeilen (< 1 Mio)
●   Hier findet Einschränkung (WHERE), Gruppierung (GROUP BY) und Sortierung
    (ORDER BY) statt
●   Verwendung in Report-Titeln
●   Gute Hierarchie ermöglicht „Slice and Dice“ („Scheibchen und Würfel schneiden“)
●   Abkürzungen und NULL Werte sind verpönt
●   Sollte in Dimensions Bus-Architektur passen



                                                                                      22 / 32
Dimension Beispiel                                                                                                         www.fromdual.com




CREATE TABLE product_dim (                             CREATE TABLE date_dim (
   id             smallint(5) unsigned NOT NULL A_I       id           smallint(5) unsigned NOT NULL A_I
, product_name    varchar(255) NOT NULL                , date          date NOT NULL
, product_version varchar(255) NOT NULL                , year          year(4) NOT NULL
, PRIMARY KEY (id)                                     , month         tinyint(3) unsigned NOT NULL
                                                       , month_en      enum('January','February'...
);
                                                       , month_de      enum('Januar','Februar'...
                                                       , day           tinyint(3) unsigned NOT NULL
+----+---------------------------+-----------------+   , last_day      tinyint(3) unsigned NOT NULL
| id | product_name              | product_version |   , weekday_en    enum('Monday','Tuesday','Wednesday'...
+----+---------------------------+-----------------+   , weekday_de    enum('Montag','Dienstag','Mittwoch'...
| 0 | Unknown                    | Unknown         |   , calendar_week tinyint(3) unsigned NOT NULL
| 1 | MySQL Performance Monitor | Unknown          |   , PRIMARY KEY (id)
| 2 | MySQL Performance Monitor | latest           |   );
| 11 | MySQL Performance Monitor | 0.9             |   +------+------------+------+-------+----------+-----+----------+------------+---------------+
| 12 | Database Control          | Unknown         |   | id   | date       | year | month | month_en | day | last_day | weekday_en | calendar_week |
                                                       +------+------------+------+-------+----------+-----+----------+------------+---------------+
| 13 | Database Control          | latest          |   | 4597 | 2012-08-01 | 2012 |     8 | August   |   1 |       30 | Wednesday |             31 |
                                                       | 4598 | 2012-08-02 | 2012 |     8 | August   |   2 |       29 | Thursday   |            31 |
| 14 | Database Control          | 0.1             |   | 4599 | 2012-08-03 | 2012 |     8 | August   |   3 |       28 | Friday     |            31 |
| 15 | MyEnv                     | Unknown         |   | 4600 | 2012-08-04 | 2012 |
                                                       | 4601 | 2012-08-05 | 2012 |
                                                                                        8 | August
                                                                                        8 | August
                                                                                                     |
                                                                                                     |
                                                                                                         4 |
                                                                                                         5 |
                                                                                                                   27 | Saturday
                                                                                                                   26 | Sunday
                                                                                                                                   |
                                                                                                                                   |
                                                                                                                                                31 |
                                                                                                                                                31 |
| 16 | MyEnv                     | latest          |   | 4602 | 2012-08-06 | 2012 |     8 | August   |   6 |       25 | Monday     |            32 |
                                                       | 4603 | 2012-08-07 | 2012 |     8 | August   |   7 |       24 | Tuesday    |            32 |
| 20 | MyEnv                     | 0.5             |   | 4604 | 2012-08-08 | 2012 |     8 | August   |   8 |       23 | Wednesday |             32 |
                                                       | 4605 | 2012-08-09 | 2012 |     8 | August   |   9 |       22 | Thursday   |            32 |
| 21 | Nagios Plugins            | Unknown         |   | 4606 | 2012-08-10 | 2012 |     8 | August   | 10 |        21 | Friday     |            32 |
| 25 | Nagios Plugins            | 0.3.1           |   +------+------------+------+-------+----------+-----+----------+------------+---------------+

+----+---------------------------+-----------------+




                                                                                                                                              23 / 32
DWH Bus Architektur   www.fromdual.com




                              24 / 32
ETL von Staging in Data Mart                            www.fromdual.com



                                    ETL – Job
                     http        ● parse              http_log
                  accesslog      ● split              Staging
                                 ● load               Tabelle



●   Kopieren von Staging in Data Mart            ETL – Job
                                                 ● Facts mit Dim

    ●   Skript oder SQL                            verlinken
    ●   INSERT INTO product_download_fact
        SELECT * FROM http_log ...
    ●   Ganz so einfach ist es meist nicht :-(     product_down-
                                                      load_fact
    ●   Job wieder aufsetzbar machen!
●   Fertig zum Reporting!
                                                                 25 / 32
Slowly Changing Dimenions                            www.fromdual.com



●   Relativ statisch aber nicht ganz
    ●   Beispiel: Kunde zieht um von A nach B
    ●   Report „Umsatz nach Bundesland“?
●   Type 1: Überschreiben der alten Werte
    ●   Einfach aber Historie geht verlohren
●   Type 2: Neuer Eintrag in Dimensionstabelle
    ●   Meistgebrauchte Lösung (Historie)
●   Type 3: Neue Spalte in Dimension
    ●   Report nach alt und neu möglich (Vergleich mit
        letztem Jahr!)

                                                             26 / 32
Reporting                               www.fromdual.com




●   SQL → Nicht ganz Manager tauglich :-(
●   Job: SELECT INTO OUTFILE →
    Spreadsheet (OO calc)
●   OO calc über ODBC/JDBC auf DB lassen
●   Selber kleine LAMP Report App schreiben
●   Reporting Tools (Pentaho, ...)




                                                27 / 32
SELECT → CSV → OO calc                                                                          www.fromdual.com




SELECT *
  FROM date_dim AS dd
  JOIN product_download_fact AS pdf ON pdf.date_id = dd.id
  JOIN product_dim AS pd ON pdf.product_id = pd.id
 WHERE pd.product_name = 'MySQL Performance Monitor'
   AND dd.year between 2007 and 2012
INTO OUTFILE '/tmp/oli/product_download_2007-2012.csv'
;

13852 rows in set (0.20 sec)

+-------+--------+--------------------+------------+---------+------+------------------------------------+
| table | type   | possible_keys      | key        | key_len | rows | Extra                              |
+-------+--------+--------------------+------------+---------+------+------------------------------------+
| pd    | ALL    | PRIMARY            | NULL       | NULL    |   26 | Using where                        |
| pdf   | ref    | product_id,date_id | product_id | 1       | 2365 | Using index condition              |
| dd    | eq_ref | PRIMARY            | PRIMARY    | 2       |    1 | Using index condition; Using where |
+-------+--------+--------------------+------------+---------+------+------------------------------------+




                                                                                                             28 / 32
OO calc → JDBC auf DB                  www.fromdual.com




●   MS Access oder MS Excel sind theoretisch
    auch möglich :-)
●   Connector/J (JDBC)
●   OO calc →
    gestorben :-(
●   Ggf. VIEW
    verwenden



                                               29 / 32
Reporting Tools                           www.fromdual.com




●   Pentaho Business Analytics OSS
●   JasperSoft (JasperReports) OSS
●   Crystal Reports, MicroStrategy, Cognos, ...




                                                  30 / 32
Buchtipp                www.fromdual.com




●   The Data
    Warehouse Toolkit
●   Ralph Kimball &
    Margy Ross




                                31 / 32
Q&A                                                     www.fromdual.com




                               Fragen ?

                            Diskussion?

     Wir haben noch Zeit für ein persönliches Gespräch...

●   FromDual bietet neutral und unabhängig:
    ●   MySQL Beratung
    ●   Remote-DBA für MySQL
    ●   Support für MySQL und Galera
    ●   MySQL Schulung
                               www.fromdual.com/presentations
                                                                32 / 32

Mais conteúdo relacionado

Mais procurados

Big Data Discovery + Analytics = Datengetriebene Innovation!
Big Data Discovery + Analytics = Datengetriebene Innovation!Big Data Discovery + Analytics = Datengetriebene Innovation!
Big Data Discovery + Analytics = Datengetriebene Innovation!Harald Erb
 
Caching: In-Memory Column Store oder im BI Server
Caching: In-Memory Column Store oder im BI ServerCaching: In-Memory Column Store oder im BI Server
Caching: In-Memory Column Store oder im BI ServerAndreas Buckenhofer
 
Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...
Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...
Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...Business Intelligence Research
 
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...Business Intelligence Research
 
Data Virtualization - Supernova
Data Virtualization - SupernovaData Virtualization - Supernova
Data Virtualization - SupernovaTorsten Glunde
 
Modellierung agliler Data Warehouses mit Data Vault
Modellierung agliler Data Warehouses mit Data VaultModellierung agliler Data Warehouses mit Data Vault
Modellierung agliler Data Warehouses mit Data VaultTrivadis
 
Data Quadrant - Daten Management Methode
Data Quadrant - Daten Management MethodeData Quadrant - Daten Management Methode
Data Quadrant - Daten Management MethodeTorsten Glunde
 
Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...
Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...
Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...Business Intelligence Research
 
OpenDMA - Daten Management Solution
OpenDMA  - Daten Management SolutionOpenDMA  - Daten Management Solution
OpenDMA - Daten Management SolutionTorsten Glunde
 
BARC Studie Webinar: Ausgereifte Analysen mit Apache Hadoop
BARC Studie Webinar: Ausgereifte Analysen mit Apache HadoopBARC Studie Webinar: Ausgereifte Analysen mit Apache Hadoop
BARC Studie Webinar: Ausgereifte Analysen mit Apache HadoopCloudera, Inc.
 
Analytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und rAnalytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und rMarcel Franke
 
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...Spark Summit
 
Agiles Data Mining mit Data Vault 2.0
Agiles Data Mining mit Data Vault 2.0Agiles Data Mining mit Data Vault 2.0
Agiles Data Mining mit Data Vault 2.0Michael Olschimke
 
Big Data Bullshit Bingo
Big Data Bullshit BingoBig Data Bullshit Bingo
Big Data Bullshit BingoDanny Linden
 

Mais procurados (20)

Moderne & flexible Architektur mit BW/4HANA
Moderne & flexible Architektur mit BW/4HANAModerne & flexible Architektur mit BW/4HANA
Moderne & flexible Architektur mit BW/4HANA
 
Big Data Discovery + Analytics = Datengetriebene Innovation!
Big Data Discovery + Analytics = Datengetriebene Innovation!Big Data Discovery + Analytics = Datengetriebene Innovation!
Big Data Discovery + Analytics = Datengetriebene Innovation!
 
Caching: In-Memory Column Store oder im BI Server
Caching: In-Memory Column Store oder im BI ServerCaching: In-Memory Column Store oder im BI Server
Caching: In-Memory Column Store oder im BI Server
 
Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...
Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...
Weitere Dezentralisierung der BI - mehr Selbständigkeit der Fachbereiche durc...
 
Portfolio 2016
Portfolio 2016Portfolio 2016
Portfolio 2016
 
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
Analytical Sandboxing: Data-Warehousing und Datenanalysen im Spannungsfeld zw...
 
Data Virtualization - Supernova
Data Virtualization - SupernovaData Virtualization - Supernova
Data Virtualization - Supernova
 
Agile Data Warehousing mit SAP BW/4HANA
Agile Data Warehousing mit SAP BW/4HANAAgile Data Warehousing mit SAP BW/4HANA
Agile Data Warehousing mit SAP BW/4HANA
 
Modellierung agliler Data Warehouses mit Data Vault
Modellierung agliler Data Warehouses mit Data VaultModellierung agliler Data Warehouses mit Data Vault
Modellierung agliler Data Warehouses mit Data Vault
 
The cloud 2011
The cloud 2011The cloud 2011
The cloud 2011
 
Data Quadrant - Daten Management Methode
Data Quadrant - Daten Management MethodeData Quadrant - Daten Management Methode
Data Quadrant - Daten Management Methode
 
Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...
Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...
Beyond SAP - Effektive Nutzung von Business Content durch In-Memory-OLAP und ...
 
OpenDMA - Daten Management Solution
OpenDMA  - Daten Management SolutionOpenDMA  - Daten Management Solution
OpenDMA - Daten Management Solution
 
BARC Studie Webinar: Ausgereifte Analysen mit Apache Hadoop
BARC Studie Webinar: Ausgereifte Analysen mit Apache HadoopBARC Studie Webinar: Ausgereifte Analysen mit Apache Hadoop
BARC Studie Webinar: Ausgereifte Analysen mit Apache Hadoop
 
Analytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und rAnalytic powerhouse parallel data warehouse und r
Analytic powerhouse parallel data warehouse und r
 
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
Clickstream Analysis with Spark—Understanding Visitors in Realtime by Josef A...
 
Agiles Data Mining mit Data Vault 2.0
Agiles Data Mining mit Data Vault 2.0Agiles Data Mining mit Data Vault 2.0
Agiles Data Mining mit Data Vault 2.0
 
SAP BW/4HANA - Ein Überblick
SAP BW/4HANA - Ein ÜberblickSAP BW/4HANA - Ein Überblick
SAP BW/4HANA - Ein Überblick
 
SAP BW im Umbruch
SAP BW im UmbruchSAP BW im Umbruch
SAP BW im Umbruch
 
Big Data Bullshit Bingo
Big Data Bullshit BingoBig Data Bullshit Bingo
Big Data Bullshit Bingo
 

Destaque

Designing Scalable Data Warehouse Using MySQL
Designing Scalable Data Warehouse Using MySQLDesigning Scalable Data Warehouse Using MySQL
Designing Scalable Data Warehouse Using MySQLVenu Anuganti
 
Role of MySQL in Data Analytics, Warehousing
Role of MySQL in Data Analytics, WarehousingRole of MySQL in Data Analytics, Warehousing
Role of MySQL in Data Analytics, WarehousingVenu Anuganti
 
Datenschutz in der Praxis
Datenschutz in der PraxisDatenschutz in der Praxis
Datenschutz in der PraxisDerChb
 
Datenschutz bei elektronischer Personalakte & Datensicherheit
Datenschutz bei elektronischer Personalakte & DatensicherheitDatenschutz bei elektronischer Personalakte & Datensicherheit
Datenschutz bei elektronischer Personalakte & DatensicherheitinPuncto GmbH
 
Domain Driven Design und Nosql
Domain Driven Design und Nosql Domain Driven Design und Nosql
Domain Driven Design und Nosql ArangoDB Database
 
Big Data beyond Apache Hadoop - How to integrate ALL your Data
Big Data beyond Apache Hadoop - How to integrate ALL your DataBig Data beyond Apache Hadoop - How to integrate ALL your Data
Big Data beyond Apache Hadoop - How to integrate ALL your DataKai Wähner
 
Deutschland
DeutschlandDeutschland
Deutschlandelenawik
 
Deutschland, Deutsch ( Präsentation)
Deutschland, Deutsch ( Präsentation)Deutschland, Deutsch ( Präsentation)
Deutschland, Deutsch ( Präsentation)elenawik
 

Destaque (8)

Designing Scalable Data Warehouse Using MySQL
Designing Scalable Data Warehouse Using MySQLDesigning Scalable Data Warehouse Using MySQL
Designing Scalable Data Warehouse Using MySQL
 
Role of MySQL in Data Analytics, Warehousing
Role of MySQL in Data Analytics, WarehousingRole of MySQL in Data Analytics, Warehousing
Role of MySQL in Data Analytics, Warehousing
 
Datenschutz in der Praxis
Datenschutz in der PraxisDatenschutz in der Praxis
Datenschutz in der Praxis
 
Datenschutz bei elektronischer Personalakte & Datensicherheit
Datenschutz bei elektronischer Personalakte & DatensicherheitDatenschutz bei elektronischer Personalakte & Datensicherheit
Datenschutz bei elektronischer Personalakte & Datensicherheit
 
Domain Driven Design und Nosql
Domain Driven Design und Nosql Domain Driven Design und Nosql
Domain Driven Design und Nosql
 
Big Data beyond Apache Hadoop - How to integrate ALL your Data
Big Data beyond Apache Hadoop - How to integrate ALL your DataBig Data beyond Apache Hadoop - How to integrate ALL your Data
Big Data beyond Apache Hadoop - How to integrate ALL your Data
 
Deutschland
DeutschlandDeutschland
Deutschland
 
Deutschland, Deutsch ( Präsentation)
Deutschland, Deutsch ( Präsentation)Deutschland, Deutsch ( Präsentation)
Deutschland, Deutsch ( Präsentation)
 

Semelhante a Data Warehouse (DWH) with MySQL

DOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance TuningDOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance TuningFromDual GmbH
 
FROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance TuningFROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance TuningFromDual GmbH
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA'sFromDual GmbH
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6FromDual GmbH
 
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLInternet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLFromDual GmbH
 
MySQL HA and Security
MySQL HA and SecurityMySQL HA and Security
MySQL HA and SecurityFromDual GmbH
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationFromDual GmbH
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?FromDual GmbH
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLFromDual GmbH
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLFromDual GmbH
 
MySQL Replication for Beginners
MySQL Replication for BeginnersMySQL Replication for Beginners
MySQL Replication for BeginnersFromDual GmbH
 
MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?FromDual GmbH
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sFromDual GmbH
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenLenz Grimmer
 
Datentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsDatentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsChristian Gohmann
 
Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Stefan Frömken
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Ulrike Schwinn
 

Semelhante a Data Warehouse (DWH) with MySQL (20)

Froscon 2012 DWH
Froscon 2012 DWHFroscon 2012 DWH
Froscon 2012 DWH
 
DOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance TuningDOAG 2011: MySQL Performance Tuning
DOAG 2011: MySQL Performance Tuning
 
FROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance TuningFROSCON 2011: MySQL Performance Tuning
FROSCON 2011: MySQL Performance Tuning
 
NoSQL with MySQL
NoSQL with MySQLNoSQL with MySQL
NoSQL with MySQL
 
MySQL für Oracle DBA's
MySQL für Oracle DBA'sMySQL für Oracle DBA's
MySQL für Oracle DBA's
 
MySQL - New Features 5.6
MySQL - New Features 5.6MySQL - New Features 5.6
MySQL - New Features 5.6
 
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQLInternet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
Internet Briefing 2010: Performance Tuning & Scale-Out mit MySQL
 
MySQL HA and Security
MySQL HA and SecurityMySQL HA and Security
MySQL HA and Security
 
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-ReplikationWeltweite Produktionsdatenverwaltung mit MySQL-Replikation
Weltweite Produktionsdatenverwaltung mit MySQL-Replikation
 
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
MySQL Beispiele aus der Praxis - Wie setzen Kunden MySQL ein?
 
DOAG: NoSQL with MySQL
DOAG: NoSQL with MySQLDOAG: NoSQL with MySQL
DOAG: NoSQL with MySQL
 
Internet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQLInternet Briefing 2011: NoSQL with MySQL
Internet Briefing 2011: NoSQL with MySQL
 
MySQL Replication for Beginners
MySQL Replication for BeginnersMySQL Replication for Beginners
MySQL Replication for Beginners
 
MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?MySQL Replikation - Die Eier legende Wollmilchsau?
MySQL Replikation - Die Eier legende Wollmilchsau?
 
MySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA'sMySQL Performance Tuning für Oracle-DBA's
MySQL Performance Tuning für Oracle-DBA's
 
MySQL Hochverfügbarkeitslösungen
MySQL HochverfügbarkeitslösungenMySQL Hochverfügbarkeitslösungen
MySQL Hochverfügbarkeitslösungen
 
Datentransfer mit Oracle Tools
Datentransfer mit Oracle ToolsDatentransfer mit Oracle Tools
Datentransfer mit Oracle Tools
 
MySQL Backup
MySQL BackupMySQL Backup
MySQL Backup
 
Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12Präsentation MySQL auf dem T3CM12
Präsentation MySQL auf dem T3CM12
 
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
Überblick: 18c und Autonomous Data Warehouse Cloud (ADWC)
 

Mais de FromDual GmbH

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...FromDual GmbH
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?FromDual GmbH
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopFromDual GmbH
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New FeaturesFromDual GmbH
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New FeaturesFromDual GmbH
 
PERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaPERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaFromDual GmbH
 
MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/RecoveryFromDual GmbH
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterFromDual GmbH
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?FromDual GmbH
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015FromDual GmbH
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerFromDual GmbH
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprintsFromDual GmbH
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLFromDual GmbH
 
MySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterMySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterFromDual GmbH
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014FromDual GmbH
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLFromDual GmbH
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexingFromDual GmbH
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAsFromDual GmbH
 

Mais de FromDual GmbH (20)

MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...MariaDB/MySQL pitfalls - And how to come out again...
MariaDB/MySQL pitfalls - And how to come out again...
 
MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?MariaDB / MySQL tripping hazard and how to get out again?
MariaDB / MySQL tripping hazard and how to get out again?
 
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration WorkshopPXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
PXC 5.5 to MariaDB 10.4 Galera Cluster Migration Workshop
 
IT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New FeaturesIT Tage 2019 MariaDB 10.4 New Features
IT Tage 2019 MariaDB 10.4 New Features
 
MariaDB 10.4 New Features
MariaDB 10.4 New FeaturesMariaDB 10.4 New Features
MariaDB 10.4 New Features
 
MariaDB 10.2 New Features
MariaDB 10.2 New FeaturesMariaDB 10.2 New Features
MariaDB 10.2 New Features
 
PERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schemaPERFORMANCE_SCHEMA and sys schema
PERFORMANCE_SCHEMA and sys schema
 
MySQL Backup/Recovery
MySQL Backup/RecoveryMySQL Backup/Recovery
MySQL Backup/Recovery
 
MySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und ClusterMySQL-Server im Teamwork - Replikation und Cluster
MySQL-Server im Teamwork - Replikation und Cluster
 
Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?Der Datenbank-Backup ist gemacht - was nun?
Der Datenbank-Backup ist gemacht - was nun?
 
MySQL Security SLAC 2015
MySQL Security SLAC 2015MySQL Security SLAC 2015
MySQL Security SLAC 2015
 
MySQL Performance Tuning für Entwickler
MySQL Performance Tuning für EntwicklerMySQL Performance Tuning für Entwickler
MySQL Performance Tuning für Entwickler
 
Reading MySQL fingerprints
Reading MySQL fingerprintsReading MySQL fingerprints
Reading MySQL fingerprints
 
High-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQLHigh-availability with Galera Cluster for MySQL
High-availability with Galera Cluster for MySQL
 
MySQL always-up with Galera Cluster
MySQL always-up with Galera ClusterMySQL always-up with Galera Cluster
MySQL always-up with Galera Cluster
 
HA with Galera
HA with GaleraHA with Galera
HA with Galera
 
MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014MySQL Indexierung CeBIT 2014
MySQL Indexierung CeBIT 2014
 
MySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQLMySQL Cluster with Galera Cluster for MySQL
MySQL Cluster with Galera Cluster for MySQL
 
Need for Speed: Mysql indexing
Need for Speed: Mysql indexingNeed for Speed: Mysql indexing
Need for Speed: Mysql indexing
 
MySQL for Oracle DBAs
MySQL for Oracle DBAsMySQL for Oracle DBAs
MySQL for Oracle DBAs
 

Último (7)

Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.Angewandte Philosophie an der Universität Duisburg-Essen.
Angewandte Philosophie an der Universität Duisburg-Essen.
 
1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf1029-Danh muc Sach Giao Khoa khoi 12.pdf
1029-Danh muc Sach Giao Khoa khoi 12.pdf
 
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_EssenAngewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
Angewandte Kognitions- und Medienwissenschaft an der Universität Duisburg_Essen
 
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdfLAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
LAKO Kreativpreis_2024_Startnummer_02_(LFS_LA).pdf
 
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-EssenWirtschaftsingenieurwesen an der Universität Duisburg-Essen
Wirtschaftsingenieurwesen an der Universität Duisburg-Essen
 
Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!Welche KI-Kompetenzen brauchen Lehrpersonen?!
Welche KI-Kompetenzen brauchen Lehrpersonen?!
 
1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf1029-Danh muc Sach Giao Khoa khoi 11.pdf
1029-Danh muc Sach Giao Khoa khoi 11.pdf
 

Data Warehouse (DWH) with MySQL

  • 1. www.fromdual.com Data Warehouse (DWH) mit MySQL DOAG Konferenz 2012, Nürnberg Oli Sennhauser Senior MySQL Consultant, FromDual GmbH oli.sennhauser@fromdual.com 1 / 32
  • 2. Über FromDual GmbH www.fromdual.com ● FromDual bietet neutral und unabhängig: ● Beratung für MySQL und Galera ● Support für MySQL und Galera ● Remote-DBA Dienstleistungen für MySQL ● MySQL Schulungen ● Oracle Silver Partner (OPN) www.fromdual.com 2 / 32
  • 3. Inhalt www.fromdual.com Data Warehouse mit MySQL ➢ Überblick ➢ Extrahieren – Transformieren – Laden (ETL) ➢ Modellieren des Data Warehouse ➢ Reporting 3 / 32
  • 4. Was ist ein Data Warehouse? www.fromdual.com ● Data Warehouse (Abk. DWH) ● Datenbank :-) ● Für Reporting und Datenanalyse ● Meist fürs Management (→ politisch, vereinfacht!) ● Über: Finanzkennzahlen, Produktionskennzahlen, etc. ● Resultat: 4 / 32
  • 5. Technische Sicht www.fromdual.com ● Datenquellen (OLTP System, Dateien, Fremdsysteme) ● Datenaufbereitung (ETL) ● Datenhaltung (DWH: Staging Area) ● Datenauslieferung (DWH: Data Mart) 5 / 32
  • 6. Grober Ablauf www.fromdual.com ● Datenquellen ● Operative Datenbanken: OLTP (ODBC, JDBC) ● MySQL, Oracle, PostgreSQL, etc. ● Dateien (CSV, XML, ...) ● Apache Log, Host-Systeme ● Mit ETL-Jobs (Extract, Transform, Load) ● Skripte (PHP, Perl, ...) ● ETL Software (Pentaho, ...) ● Ins DWH ● Zuerst Staging Area ● Dann Data Mart (Dimensional Model, Star Schema) ● Report (SQL, Spreadsheet, Reporting-Software) 6 / 32
  • 7. Grobes Vorgehen www.fromdual.com Ich persönlich würde: ● Den Gaul von hinten her aufzäumen: ● Welchen Report brauche ich (= Z)? ● Woher kommen die Daten dazu (= A)? ● Wie komme ich von A nach Z? ● Datenfriedhöfe: Wir sammeln mal, man kann ja nie wissen... 7 / 32
  • 8. ETL Jobs www.fromdual.com ● ETL: Extract – Transform – Load ● Extrahieren der Daten von externen Quellen ● Transformieren der Daten entsprechend des Bedarfs ● Laden der Daten ins Ziel (Staging Area oder DM) ● Wie? ● Skripte (PHP, Perl, Shell, ...) ● Software (Pentaho, ...) 8 / 32
  • 9. ETL Technisch www.fromdual.com ● Extract ● ODBC/JDBC + SQL ● SELECT INTO OUTFILE → CSV ● mysql ­­xml ­e 'SELECT * FROM test' > test.xml ● Transform ● Filtern, Rausschneiden, Anreichern, Sortieren (PK) ● DB's sind grundsätzlich langsam → ausserhalb der DB erledigen ● Parallelisieren! ● Load ● Laden in Primary Key Sortierung (InnoDB) ● Parallel laden ● Single Row INSERT vs multi Row INSERT vs LOAD DATA INFILE 9 / 32
  • 10. Welche Storage Engine? www.fromdual.com ● MyISAM ● Nicht Crash-safe ● Table-Lock, schlecht bei Concurrency ● Kleiner Footprint, schnell bei Full Table Scan ● InnoDB ● Crash-safe ● Row-Lock, gut bei Concurrency ● Footprint ca. 2 x MyISAM ● Infobright, InfiniDB, Tokutek ● Spezialisiert (Columnar Storage Engine, Fractal Trees) ● Proprietär, teuer 10 / 32
  • 11. MySQL Konfiguration www.fromdual.com ● InnoDB: ● innodb_buffer_pool_size (RAM!) ● innodb_log_file_size (Data load) ● innodb_flush_log_at_trx_commit (Data load) ● MyISAM: ● key_buffer_size (RAM!) ● bulk_insert_buffer_size (Bulk data load) ● Query Cache? → stört eher ● MyISAM/InnoDB Tabellenkompression? 11 / 32
  • 12. Laden möglichst schnell... www.fromdual.com ● Default Einstellung sind sehr schlecht (43 x langsamer!) ● InnoDB tendenziell besser als MyISAM ● Schlecht: autocommit = 1 → Transaktionen verwenden! +20% ● Schlecht: innodb_flush_log_at_trx_commit = 1 → 0 (f = 40!) ● Daten vor-sortieren nach PK: +30% ● Parallel laden (f = mind. 2 – 3 ) ● Bulk Load (multi Row Insert, LOAD DATA INFILE) f = 3 – 4 ● Total ca. F = 500! ● Beispiel: 1.140 Mia Rows (ca. 80 Gbyte) in 4 h geladen 12 / 32
  • 13. Weitere Ladehilfen www.fromdual.com ● INSERT ON DUPLICATE KEY UPDATE ● INSERT oder UPDATE ● REPLACE INTO ● INSERT oder DELETE + INSERT ● Federated Storage Engine? ● Transportable Tables? (MyISAM, oder InnoDB 5.6) ● Lade-Jobs erneut startbar machen! ● Am 21. 8. laden wir Daten vom 20. 8. ● Daten waren falsch ● Am 22. 8. laden wir geflickten Daten vom 20. 8. und 21. 8. ● Nochmal laden aber vorher löschen!?! 13 / 32
  • 14. Staging Area www.fromdual.com ● Beispiel Download-Statistik: ETL – Job http ● parse http_log accesslog ● split Staging ● load Tabelle ● Data Staging Area / CREATE TABLE `page_hits_raw` ( `host` varchar(32) DEFAULT NULL, Tabelle `remote_host` char(15) DEFAULT NULL, `logname` varchar(64) DEFAULT NULL, `user` varchar(64) DEFAULT NULL, `ts` int(10) unsigned DEFAULT NULL, `methode` varchar(12) DEFAULT NULL, `request` varchar(1024) DEFAULT NULL, `protocol` varchar(16) DEFAULT NULL, `status` smallint(5) unsigned DEFAULT NULL, Noch kein Report `bytes` mediumint(8) unsigned DEFAULT NULL, ● `referer` varchar(1024) DEFAULT NULL, `user_agent` varchar(255) DEFAULT NULL, `ua_engine_compatibility` varchar(255) DEFAULT NULL, möglich... `ua_operating_system` varchar(255) DEFAULT NULL, `ua_platform` varchar(255) DEFAULT NULL, `ua_browser_platform_details` varchar(255) DEFAULT NULL, `ua_browser_enhancements` varchar(255) DEFAULT NULL ); 14 / 32
  • 15. OLTP vs. OLAP www.fromdual.com Unterschiedliche Anwendungsmuster: ● Operative DB ● Online Transaction Processing (OLTP) ● Beispiel: Webshop, ERP, VoIP Calls, etc. ● Kurze, schnelle Zugriffe auf kleine Datenmengen ● Reporting DB ● Online Analytical Processing (OLAP) ● Beispiel: Monatsrechnungen, Umsatzentwicklung, etc. ● Langsamere Zugriffe auf grosse Datenmengen ● Hybride (Web-Anwendungen) :-( ● „Zeig mir die häufigst verkauften Produkte!“ ● „Was könnte sonst noch zu mir passen?“ 15 / 32
  • 16. Zugriffsmuster www.fromdual.com ● DB's sind schnell, wenn Daten im RAM liegen: ● OLTP kleine Datenmengen → RAM ● OLAP grosse Datenmengen → Platte ● Was passiert bei Kombination? ● Sieht man sehr oft! → Daher wenn möglich/nötig trennen! OLTP Hybrid OLAP 16 / 32
  • 17. Relational vs. Dimensional www.fromdual.com ● OLTP ● OLAP ● Entity Relationship Model (ER ● Dimensional Model (Star Schema) Schema) ● Stark denormalisiert ● Normalisiert (3rd NF) ● Hohe Redundanz ● Keine Redundanz ● Einfaches Schema ● Komplexes Schema ● Wenige Tabellen und Joins ● Vielen Tabellen und Joins (Joins sind teuer!) ● Hohe Schreib-Performance ● Hohe Lese-Performance 17 / 32
  • 18. Dimensional Schema Design www.fromdual.com Star Schema: ● Fact Tabellen ● Beinhaltet die Messwerte (Downloads der Produkte) ● Dimension Tabellen ● Einstiegspunkt für Fact Tabellen ● Beschreibung des Geschäftspro- zesses ● Oft „sortieren/gruppieren nach Produkt, nach Zeit, nach Version etc...“ 18 / 32
  • 19. Star Schema www.fromdual.com ● „Downloads sortieren/gruppieren nach Produkt, nach Zeit und nach Version!“ 19 / 32
  • 20. Fact Tabellen www.fromdual.com ● Speichert numerisch Performance-Metriken ● Werte sind additiv (1 download + 1 download) ● Möglichst atomar (NICHT 7 downloads pro Tag!) ● Selbe Granularität über ganze Tabelle (sonst Aggregate) ● Wenig Spalten (Anz. Dim + 2 – 5 Facts) aber oft sehr viele Zeilen! → Grosse Tabellen, daher auf Datentypen achten! ● Lokalität der Daten beeinflussbar: ● InnoDB Primary Key → physische Sortierung der Zeilen ● MyISAM: ALTER TABLE ... ORDER BY ... (teuer!) ● Partitionen (RANGE, meist nach Zeit)! ● Auf Dimension-Bus-Architektur passend 20 / 32
  • 21. Fact Beispiel www.fromdual.com CREATE TABLE `product_download_fact` ( `product_id` tinyint(4) NOT NULL, `date_id` smallint(6) NOT NULL, `time_id` smallint(6) NOT NULL, `geo_id` smallint(6) NOT NULL, `customer_id` smallint(6) NOT NULL, `download` tinyint(4) NOT NULL, `id` int(10) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id`), KEY `product_id` (`product_id`), KEY `date_id` (`date_id`), KEY `time_id` (`time_id`), KEY `geo_id` (`geo_id`) ); +------------+---------+---------+--------+-------------+----------+----+ | product_id | date_id | time_id | geo_id | customer_id | download | id | +------------+---------+---------+--------+-------------+----------+----+ | 0 | 9483 | 1389 | 36 | 57 | 1 | 1 | | 0 | 9487 | 1395 | 36 | 79 | 1 | 2 | | 0 | 9489 | 1396 | 37 | 85 | 1 | 3 | | 0 | 9492 | 1376 | 34 | 5 | 1 | 4 | | 0 | 9492 | 1414 | 39 | 0 | 1 | 5 | | 0 | 9493 | 1365 | 32 | 0 | 1 | 6 | | 0 | 9494 | 1382 | 34 | 28 | 1 | 7 | | 1 | 2 | 1283 | 20 | 0 | 1 | 8 | | 1 | 7 | 1316 | 25 | 23 | 1 | 9 | | 1 | 8 | 1329 | 27 | 71 | 1 | 10 | +------------+---------+---------+--------+-------------+----------+----+ 21 / 32
  • 22. Dimension Tabellen www.fromdual.com ● Einstieg und User Interface ins DWH (auf Fact Tabellen) ● Gehören zu Fact Tabellen ● Textbeschreiben des Geschäfts ● Hoch redundant ● Oft „sortieren/gruppieren nach Produkt, nach Zeit, nach Version etc...“ ● Haben viele und lange Spalten (50 – 100, hoch redundant) ● MySQL Limitationen beachten! ● Üblicherweise nur wenige Zeilen (< 1 Mio) ● Hier findet Einschränkung (WHERE), Gruppierung (GROUP BY) und Sortierung (ORDER BY) statt ● Verwendung in Report-Titeln ● Gute Hierarchie ermöglicht „Slice and Dice“ („Scheibchen und Würfel schneiden“) ● Abkürzungen und NULL Werte sind verpönt ● Sollte in Dimensions Bus-Architektur passen 22 / 32
  • 23. Dimension Beispiel www.fromdual.com CREATE TABLE product_dim ( CREATE TABLE date_dim ( id smallint(5) unsigned NOT NULL A_I id smallint(5) unsigned NOT NULL A_I , product_name varchar(255) NOT NULL , date date NOT NULL , product_version varchar(255) NOT NULL , year year(4) NOT NULL , PRIMARY KEY (id) , month tinyint(3) unsigned NOT NULL , month_en enum('January','February'... ); , month_de enum('Januar','Februar'... , day tinyint(3) unsigned NOT NULL +----+---------------------------+-----------------+ , last_day tinyint(3) unsigned NOT NULL | id | product_name | product_version | , weekday_en enum('Monday','Tuesday','Wednesday'... +----+---------------------------+-----------------+ , weekday_de enum('Montag','Dienstag','Mittwoch'... | 0 | Unknown | Unknown | , calendar_week tinyint(3) unsigned NOT NULL | 1 | MySQL Performance Monitor | Unknown | , PRIMARY KEY (id) | 2 | MySQL Performance Monitor | latest | ); | 11 | MySQL Performance Monitor | 0.9 | +------+------------+------+-------+----------+-----+----------+------------+---------------+ | 12 | Database Control | Unknown | | id | date | year | month | month_en | day | last_day | weekday_en | calendar_week | +------+------------+------+-------+----------+-----+----------+------------+---------------+ | 13 | Database Control | latest | | 4597 | 2012-08-01 | 2012 | 8 | August | 1 | 30 | Wednesday | 31 | | 4598 | 2012-08-02 | 2012 | 8 | August | 2 | 29 | Thursday | 31 | | 14 | Database Control | 0.1 | | 4599 | 2012-08-03 | 2012 | 8 | August | 3 | 28 | Friday | 31 | | 15 | MyEnv | Unknown | | 4600 | 2012-08-04 | 2012 | | 4601 | 2012-08-05 | 2012 | 8 | August 8 | August | | 4 | 5 | 27 | Saturday 26 | Sunday | | 31 | 31 | | 16 | MyEnv | latest | | 4602 | 2012-08-06 | 2012 | 8 | August | 6 | 25 | Monday | 32 | | 4603 | 2012-08-07 | 2012 | 8 | August | 7 | 24 | Tuesday | 32 | | 20 | MyEnv | 0.5 | | 4604 | 2012-08-08 | 2012 | 8 | August | 8 | 23 | Wednesday | 32 | | 4605 | 2012-08-09 | 2012 | 8 | August | 9 | 22 | Thursday | 32 | | 21 | Nagios Plugins | Unknown | | 4606 | 2012-08-10 | 2012 | 8 | August | 10 | 21 | Friday | 32 | | 25 | Nagios Plugins | 0.3.1 | +------+------------+------+-------+----------+-----+----------+------------+---------------+ +----+---------------------------+-----------------+ 23 / 32
  • 24. DWH Bus Architektur www.fromdual.com 24 / 32
  • 25. ETL von Staging in Data Mart www.fromdual.com ETL – Job http ● parse http_log accesslog ● split Staging ● load Tabelle ● Kopieren von Staging in Data Mart ETL – Job ● Facts mit Dim ● Skript oder SQL verlinken ● INSERT INTO product_download_fact SELECT * FROM http_log ... ● Ganz so einfach ist es meist nicht :-( product_down- load_fact ● Job wieder aufsetzbar machen! ● Fertig zum Reporting! 25 / 32
  • 26. Slowly Changing Dimenions www.fromdual.com ● Relativ statisch aber nicht ganz ● Beispiel: Kunde zieht um von A nach B ● Report „Umsatz nach Bundesland“? ● Type 1: Überschreiben der alten Werte ● Einfach aber Historie geht verlohren ● Type 2: Neuer Eintrag in Dimensionstabelle ● Meistgebrauchte Lösung (Historie) ● Type 3: Neue Spalte in Dimension ● Report nach alt und neu möglich (Vergleich mit letztem Jahr!) 26 / 32
  • 27. Reporting www.fromdual.com ● SQL → Nicht ganz Manager tauglich :-( ● Job: SELECT INTO OUTFILE → Spreadsheet (OO calc) ● OO calc über ODBC/JDBC auf DB lassen ● Selber kleine LAMP Report App schreiben ● Reporting Tools (Pentaho, ...) 27 / 32
  • 28. SELECT → CSV → OO calc www.fromdual.com SELECT * FROM date_dim AS dd JOIN product_download_fact AS pdf ON pdf.date_id = dd.id JOIN product_dim AS pd ON pdf.product_id = pd.id WHERE pd.product_name = 'MySQL Performance Monitor' AND dd.year between 2007 and 2012 INTO OUTFILE '/tmp/oli/product_download_2007-2012.csv' ; 13852 rows in set (0.20 sec) +-------+--------+--------------------+------------+---------+------+------------------------------------+ | table | type | possible_keys | key | key_len | rows | Extra | +-------+--------+--------------------+------------+---------+------+------------------------------------+ | pd | ALL | PRIMARY | NULL | NULL | 26 | Using where | | pdf | ref | product_id,date_id | product_id | 1 | 2365 | Using index condition | | dd | eq_ref | PRIMARY | PRIMARY | 2 | 1 | Using index condition; Using where | +-------+--------+--------------------+------------+---------+------+------------------------------------+ 28 / 32
  • 29. OO calc → JDBC auf DB www.fromdual.com ● MS Access oder MS Excel sind theoretisch auch möglich :-) ● Connector/J (JDBC) ● OO calc → gestorben :-( ● Ggf. VIEW verwenden 29 / 32
  • 30. Reporting Tools www.fromdual.com ● Pentaho Business Analytics OSS ● JasperSoft (JasperReports) OSS ● Crystal Reports, MicroStrategy, Cognos, ... 30 / 32
  • 31. Buchtipp www.fromdual.com ● The Data Warehouse Toolkit ● Ralph Kimball & Margy Ross 31 / 32
  • 32. Q&A www.fromdual.com Fragen ? Diskussion? Wir haben noch Zeit für ein persönliches Gespräch... ● FromDual bietet neutral und unabhängig: ● MySQL Beratung ● Remote-DBA für MySQL ● Support für MySQL und Galera ● MySQL Schulung www.fromdual.com/presentations 32 / 32