SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 1
Ulrike Schwinn (Ulrike.Schwinn@oracle.com, @uschwinn)
BU Core & Cloud Technologies
Oracle Deutschland B.V. & Co KG
Big Data & Analytics
Heterogene Daten-(strukturen) in der Oracle
Datenbank speichern und verarbeiten.
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 2
Worum geht‘s?
Large Objects External Table Extended Datentyp
VARCHAR2 JSON Database Filesystem
XMLTYPE XMLDB Sentiment Analysis
Partitioned External Table Oracle Text Neuigkeiten
SQL Data Guide LOB Storage
IS JSON ORACLE_DATAPUMP xquery
ORACLE_LOADER LIVE SQL XML vs JSON
Relationale Views über XML ORACLE_HIVE
12.1 Securefiles
Relationale Views über JSON 12.2
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 3
Wo speichern?
• Innerhalb der Datenbank
– Standard Datentypen wie
• VARCHAR2
bis zu 32767 Bytes mit MAX_STRING_SIZE = EXTENDED als Extended Datentyp
bis zu 4000 Bytes mit MAX_STRING_SIZE = STANDARD
• LOB (Basicfile oder Securefile) bis ca 4 PB
– Spezielle Datentypen für XML, Spatial und Media Types
– Unterstützung durch Indizes für Performance und auch für spezielle
Funktionalitätsanforderungen
• Außerhalb der Datenbank
– External Table Technologie
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 4
Datentyp Extended: Pros und Cons
• Pro:
– Migrationenprojekte
– Spaltengröße, Funktionen mit VARCHAR2 Ausgabe wie LISTAGG etc.
– Mehr Funktionalität wie zum Beispiel Case Insensitive Datenbank, IN-Memory JSON
• Contra:
– Speicherung als LOB bei neuangelegten Tabellen
• Hinweis: LIVE SQL nutzt diesen Datentyp
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 6
Daten in der Datenbank speichern
• Ein einziges zentrales Repository => zentrales Management
• Nutzung der Mechanismen einer Datenbank wie
– Backup/Recovery
– Security
– Performance Techniken wie Indizierung, Partitionierung, Parallelisierung,
Laden der Daten usw.
• Einheitliche Werkzeuge
• Einfacher Zugriff auf bestehende (relationale) Stammdaten und
heterogene Daten über SQL
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 7
43 Jahre und immer noch ...
• Developer Survey Results 2017
https://stackoverflow.com/insights/survey/2017#technology
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 8
Die Oracle Datenbank für “all your data”
select p.id, p.name, sl.json_doc.quantity
anzahl
from
product p, customer c, store s, sales sl
where
sl.json_value(json_doc,'$.product_id')=p.id
and
contains(p.notes,fuzzy('Lieferkosten'), 1)
> 0
and
sl.json_value(json_doc,'$.CUSTNumber'
returning number) = c.cust_ids
and
s.store_id = 1234
and
sdo_within_distance(c.location,
s.location,'distance=20')='TRUE'
Alle Arten von Daten mit
Advanced Analytics, OLAP, R, PHP, .NET,
SQL ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 9
Large Objects (LOBs) – Storage Klausel
Bedeutung der Storage Klausel
• LOB-Segmente liegen im gleichen Tablespace wie Tabelle
• Default Securefile Verwendung ab 12c (optional mit Encryption,
Compression, Deduplication)
• Speicherung gemischt; in-line, wenn LOB kleiner als ~4000 Bytes,
ansonsten out-line – Default: ENABLE STORAGE IN ROW
• LOB-Segmente sind nicht im Buffer Cache – Default: NOCACHE
• Redo-Logging wie Table bzw. Tablespace-Einstellung – Default: LOGGING
create table dokument_tab(
name varchar2(200),
lob_column blob);
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 10
Laden von LOBs
• SQL*Loader
• Datapump Export und Import
• PL/SQL und JAVA
• External Table
• Datenbank Filesystem (DBFS) auf Linux
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 11
LOB Neuigkeiten
• Filesystem DBFS
– mit WEBDAV, HTTP und FTP Zugriff
– POSIX File Locking
• Neues Filesystem OFS (Ähnlich zu DBFS aber ...)
– Ein Filesystem (mounted mit OFS Server) kann mit NFS Server exportiert werden
siehe auch https://oracle-base.com/blog/2017/05/17/ofs-and-dbfs-questions/
• SQL Funktionen (wie LENGTH, UPPER, …) auf LOB Spalten für Prädikat
Evaluation in Exadata
• Erweiterungen im Distributed LOBs Umfeld
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 12
XML vs JSON Daten in der Datenbank
Eigenschaft XML JSON
Integraler Bestandteil >= 9i Release 2 >= 12.1.0.2
Datentyp XMLTYPE kein spezieller Datentyp
DB und CloudEditionen alle alle
Generierung XMLELEMENT,
XMLATTRIBUTES ...
JSON_ARRAY,
JSON_OBJECTAGG ...
Relationale Sichten XML_TABLE, XMLEXISTS,
XMLQUERY, XQUERY
JSON_VALUE, JSON_TABLE
oder DataGuide (ab 12.2)
Änderbarkeit SQL/XML Funktionen Mit PL/SQL
Indizierung Function Based Index
XML Index
Function Based Index
DataGuide
Repository Zugriffe HTTP, WEBDAV und FTP keine
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 13
Beispiel mit JSON Daten
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 14
• IS JSON Bedingung prüft auf Gültigkeit
• Mögliche Indizierung über Function Based Index für Tuning
Tabelle Laden und Indizieren
create table json_tab
(id number generated as identity,
json_document clob constraint ensure_json CHECK (json_document IS JSON));
insert into json_tab (json_document)
select json_document from json_contents;
commit;
create index ponumber_idx on json_tab (json_value(json_document, '$.PONumber'
returning number error on error));
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 15
Operationen
• JSON Generieren
• Abfragen
select json_query(json_document,'$.ShippingInstructions')
from json_tab
where json_value(json_document,'$.PONumber' returning number)=1000;
select count(*) from json_tab
where json_exists (json_document, '$.ShippingInstructions.address.country');
select JSON_OBJECT('empid' is empno,'empname' is ename, 'Managerid' is mgr,
'Deptid' is deptno) emp
from scott.emp where deptno=10;
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 16
Einsatz von Data Guide
• Aufgabe: Suche nach Auftraggeber mit „uneindeutigem“ Namen
• (Hierarchischer) Data Guide legt Strukturen an um
– Views zu erzeugen
– linguistisch zu suchen (Textindex)
– virtuelle Spalten zu erzeugen oder zu löschen
create search index JSON_TAB_GUIDE
on JSON_TAB (JSON_DOCUMENT)
for json PARAMETERS ('DATAGUIDE ON SYNC (ON COMMIT)')
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 17
Die (linguistischen) Abfragen
• Operatoren wie JSON_TEXTCONTAINS oder JSON_EXISTS verwenden
json_textcontains(json_document, '$.CostCenter', 'A40')
json_textcontains(json_document,'$.ShippingInstructions','fuzzy(fransesco)')
json_exists(json_document,'$.ShippingInstructions.Address.zipCode')
json_textcontains(json_document, '$','near((United, America), 3)')
json_textcontains(json_document,'$','Sporting near green')
json_textcontains(json_document, '$.LineItems', '$tie')
json_textcontains(json_document, '$.Requestor', 'fuzzy(Sarat)')
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 18
Das Ergebnis
Demo
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 20
Relationale View
(*) Spalten lassen sich umbenennen
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 21
Performance durch …
• Definition von virtuellen Spalten
• Indizierung über
– Function Based Index mit CREATE INDEX und JSON_VALUE
– Volltext Index (Data Guide) mit CREATE SEARCH INDEX
• JSON Optimierungen bei In-Memory Columnstore Verwendung
– Performancegewinn für Funktionen wie JSON_TABLE, JSON_VALUE oder
JSON_EXISTS durch spezielles Binary Format
– Speicherung von virtuellen Spalten
• Monitoren über Ausführungspläne
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 22
Wer die Wahl hat … XMLTYPE Storage
• Verwendbar wie jeder andere Datentyp
• Unterstützt drei unterschiedliche Speicherformen je nach Anforderung
wie
– Konkurrierender Zugriff
– Ladeperformance
– Abfrage-Performance
– Platzbedarf
– XML Schema Support
– Erhalt von XML Informationen
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 23
Beispiele: Tabellen und Indizes
• Nutzung als Tabellenspalte
• Mögliche Indizierung
– B* Index für objektrelationale Speicherung
 XML Index für Textbasierte und Binary XML basierte Speicherung
CREATE TABLE xml_tab (x_doc XMLTYPE)
XMLTYPE COLUMN x_doc STORE AS [clob | object relational | binary xml]
CREATE INDEX xml_index ON binary_xml_tab3(doc)
INDEXTYPE IS xdb.xmlindex parameters ('PATHS
(INCLUDE (/nachricht/aktie /nachricht/kontakt))');
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 24
Beispiele: Abfragen und XML Generierung
• XML Generieren
• Abfragen
select xmlquery(
'/Abteilungen/Abteilung[@nr="2"]/Mitarbeiter[Age>20]' PASSING object_value
RETURNING CONTENT)
FROM xml_tab;
select * FROM xml_tab
WHERE xmlexists(
'/Abteilungen/Abteilung[@nr="2"]/Mitarbeiter[Age>20]' PASSING xmldoc);
select xmlelement( "Department",
xmlattributes(deptno as "DepartmentNumber"),
xmlelement("DepartmentName", d.dname),
xmlagg( xmlelement ...
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 25
Mapping auf relationale Spalten
SELECT warehouse_name warehouse, warehouse2."Water", warehouse2."Rail„
FROM warehouses,
XMLTABLE('/Warehouse‚ PASSING warehouses.warehouse_spec
COLUMNS "Water" varchar2(6) PATH 'WaterAccess',
Rail" varchar2(6) PATH 'RailAccess') warehouse2;
WAREHOUSE Water Rail
----------------------------------- ------ ------
Southlake, Texas Y N
San Francisco Y N
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 26
Neuigkeiten in 12c
• XMLDB ist mandatory!
• XQuery Update und XQuery Full-Text
• Oracle Multitenant Unterstützung
• HTTPS enabled by default (Oracle EM Express)
• XMLTable Optimierung
• Partitioning Erweiterungen
• Integration mit Logical Standby und Oracle Golden-Gate
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 27
Oracle Text Neuigkeiten
• Funktionen:
– Oracle Text mit Sentiment Analyse
• Performance:
– Erhöhung von MAX_INDEX_MEMORY
– Asynchrone Update Informationen
– Wildcard Abfragen mit Reverse Token Index
• Oracle Text Blog in deutsch: http://oracle-text-de.blogspot.co.uk/
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 28
External Table Technologie
• Lesender Zugriff über SQL*Loader Syntax mit Access Treiber ORACLE_LOADER
– Optional: Aufbereitung über ein vorgeschaltetes Preprocessing
• Entladen von Daten (Resultat eines beliebigen SELECT-Statements) mit Access Treiber
ORACLE_DATAPUMP
• Oracle Big Data SQL mit 2 weiteren Access Treibern
– ORACLE_HIVE für Zugriff auf Daten in Apache Hive
(erhält Metadaten von Hive)
– ORACLE_HDFS für Zugriff auf Daten in HDFS
(Metadaten werden in der Definition mitgegeben)
– Vor: Datenbank 12.1.0.2 auf Enterprise Linux (OEL6) und
Apache Hadoop Distribution von Cloudera und Hortonworks (CDH 5.5 und HDP 2.3)
http://www.oracle.com/technetwork/database/bigdata-appliance/overview/bigdatasql-datasheet-2934203.pdf
Steckbrief
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 29
Zugriff auf JSON Daten
• Ausgangssituation
– JSON Daten liegen außerhalb der Datenbank im üblichen Format vor
– Oracle Beispiel: https://github.com/oracle/db-sample-schemas/blob/master/order_entry/PurchaseOrders.dmp
• Vorgehensweise
– Zugriff über logisches Directory
– External Table mit Spalte für die JSON Daten in der Datenbank
create table json_contents (json_document CLOB)
organization external
(type oracle_loader default directory json_dir
access parameters
(records delimited by 0x'0A'
fields (json_document CHAR(5000)))
location ('PurchaseOrders.dmp')) reject limit unlimited;
create directory json_dir as '/home/oracle/db-sample-schemas-12.2.0.1/order_entry';
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 30
Zugriff auf XML Daten
• Neu in 12.2: Mit Klausel XMLTAG sind auch Teildokumente eines XML
Dokuments im Zugriff
CREATE TABLE ext_xml (xml_text VARCHAR2(2000))
ORGANIZATION external
(TYPE oracle_loader
DEFAULT DIRECTORY home
ACCESS PARAMETERS
(RECORDS XMLTAG ("DepartmentName", "employeeName" )
READSIZE 1024 SKIP 0 FIELDS NOTRIM MISSING FIELD VALUES ARE NULL)
location ('emp.xml')) REJECT LIMIT UNLIMITED
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 31
Das Ergebnis
SQL> select * from ext_xml;
XML_TEXT
-------------------------------------------------------------------------------
<DepartmentName>ACCOUNTING</DepartmentName>
<employeeName>CLARK</employeeName>
<employeeName>MILLER</employeeName>
<employeeName>KING</employeeName>
<DepartmentName>RESEARCH</DepartmentName>
<employeeName>JONES</employeeName>
<employeeName>SCOTT</employeeName>
<employeeName>SMITH</employeeName>
<employeeName>ADAMS</employeeName>
<employeeName>FORD</employeeName>
<DepartmentName>SALES</DepartmentName>
<employeeName>WARD</employeeName>
<employeeName>MARTIN</employeeName>
<employeeName>BLAKE</employeeName>
<employeeName>JAMES</employeeName>
<employeeName>ALLEN</employeeName>
<employeeName>TURNER</employeeName>
<DepartmentName>OPERATIONS</DepartmentName>
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 32
External Table für große Datenmengen
• Partitionierung von External Tables ab 12.2 über
Range, List, Composite Range, Composite List
– Mögliche Access Treiber sind ORACLE_LOADER, ORACLE_HIVE und
ORACLE_HDFS
• LOCATION Klausel mit Wildcards
– Beispiel: LOCATION (home:'cust_m*.csv')
• Beim Entladen von Daten mit ORACLE_DATAPUMP können die Daten auch
komprimiert abgelegt werden
– Beispiel: ACCESS PARAMETERS (COMPRESSION ENABLED HIGH)
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 33
Beispiel mit List Partitionierung
create table ext_part
(last_name varchar2(25), gender varchar2(1), city varchar2(50), birth_year number)
ORGANIZATION EXTERNAL
(
type ORACLE_LOADER
DEFAULT DIRECTORY home
ACCESS PARAMETERS( RECORDS DELIMITED BY NEWLINE
FIELDS TERMINATED BY ';' optionally enclosed BY '"'
MISSING FIELD VALUES ARE NULL)
)
REJECT LIMIT UNLIMITED
PARTITION BY LIST (gender)
(
PARTITION part_f VALUES ('F')
LOCATION (home:'cust_f.csv'),
PARTITION part_m VALUES ('M')
LOCATION (home:'cust_m.csv'));
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 34
External Table und HDFS
create table customer_list_hdfs
(CUSTOMER_NUMBER number, CUSTOMER_NAME VARCHAR2(50), POSTAL_CODE CHAR(5))
organization external
(type oracle_hdfs
default directory def_dir1
access parameters
(com.oracle.bigdata.cluster = hadoop_cl_1
com.oracle.bigdata.rowformat = delimited fields terminated by ','))
partition by range(CUSTOMER_NUMBER)
(
partition p1 values less than (100) location('hdfs_pet/p1a.dat', 'hdfs_pet/p1b.dat'),
partition p2 values less than (200) location('hdfs_pet/p2.dat'),
partition p3 values less than (300) location('hdfs_pet/p3.dat')
);
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 35
Flexibilität: Änderungen zur Laufzeit
• In 12.2 können einige Parameter zu Laufzeit geändert werden
– DEFAULT DIRECTORY
– LOCATION
– ACCESS PARAMETERS (BADFILE, LOGFILE, DISCARDFILE)
– REJECT LIMIT
• Dokumentiert in Hermann Bärs Blog
– https://blogs.oracle.com/datawarehousing/the-first-really-hidden-gem-in-oracle-
database-12c-release-2:-runtime-modification-of-external-table-parameters
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 36
Beispiel: Ohne LOCATION Parameter
create table ext_flex
(last_name varchar2(25), gender varchar2(1), city varchar2(50),
birth_year number)
ORGANIZATION EXTERNAL
(
type ORACLE_LOADER
default directory home
ACCESS PARAMETERS(
RECORDS DELIMITED BY NEWLINE
nologfile nobadfile
FIELDS TERMINATED BY ';' optionally enclosed BY '"'
MISSING FIELD VALUES ARE NULL
)
)
REJECT LIMIT UNLIMITED;
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 37
Abfragen
SQL> SELECT * from ext_flex;
no rows selected
SQL> SELECT count(*) FROM ext_flex
EXTERNAL MODIFY (LOCATION(dir_w:'cust_f.csv'));
COUNT(*)
----------
18325
SQL> SELECT count(*) FROM ext_flex
EXTERNAL MODIFY (LOCATION(dir_m:'cust_m.csv'));
COUNT(*)
----------
37175
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 38
Fazit
• Laden und Entladen von Daten über External Tables
• Datenaufbereitung mit Preprocessing
• Zugriff auf heterogene Daten (z.B. XML, JSON, Daten in Hadoop)
• Performanter Zugriff auf große Datenmengen
– Über Partitionierung
– Über deklarative Constraints
• Flexibilität durch Parameter Änderungen zur Laufzeit
• https://blogs.oracle.com/coretec/external-table-in-12c
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 39
LiveSQL.oracle.com
Wo ausprobieren?
• http://livesql.oracle.com
• SQL Scratch Pad in der Oracle Cloud
• Browser und OTN Account nötig
• Kostenlos
• “Save und Share” von SQL Beispielen
• 12.2 Tutorials
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 40
Weitere Informationen
• Deutschsprachige Blogeinträge: blogs.oracle.com/coretec
• Dojos: http://tinyurl.com/dojoonline
• Textblog: http://oracle-text-de.blogspot.co.uk/
• Slideshare: https://www.slideshare.net/uschwinn/json-in-der-oracle-datenbank-12c-release-2
• Kontakt: Ulrike.Schwinn@oracle.com
@uschwinn
Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 41
Heterogene Daten(-strukturen) in der Oracle Datenbank

Weitere ähnliche Inhalte

Was ist angesagt?

Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Dietmar Leher
 
Replikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGateReplikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGateIleana Somesan
 
Ü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
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Ulrike Schwinn
 
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...Ileana Somesan
 
Überblick Oracle GoldenGate
Überblick Oracle GoldenGateÜberblick Oracle GoldenGate
Überblick Oracle GoldenGateIleana Somesan
 
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...OPITZ CONSULTING Deutschland
 
Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cIleana Somesan
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickleroraclebudb
 

Was ist angesagt? (9)

Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)Datenbanken - Eine Übersicht (WPMeetUP München)
Datenbanken - Eine Übersicht (WPMeetUP München)
 
Replikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGateReplikation im heterogenen Umfeld mit Oracle GoldenGate
Replikation im heterogenen Umfeld mit Oracle GoldenGate
 
Ü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)
 
Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2Überblick zu Oracle Database 12c Release 2
Überblick zu Oracle Database 12c Release 2
 
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
Oracle GoldenGate: Synchronisation zwischen Oracle und MySQL Datenbanken, Nov...
 
Überblick Oracle GoldenGate
Überblick Oracle GoldenGateÜberblick Oracle GoldenGate
Überblick Oracle GoldenGate
 
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
Schlaglichter Oracle DB 11gR2 - DOAG Regio-Treffen 2010 - OPITZ CONSULTING - ...
 
Überblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12cÜberblick Oracle Datenbank 12c
Überblick Oracle Datenbank 12c
 
Oracle12c für Entwickler
Oracle12c für EntwicklerOracle12c für Entwickler
Oracle12c für Entwickler
 

Ähnlich wie Heterogene Daten(-strukturen) in der Oracle Datenbank

Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2 oraclebudb
 
Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017oraclebudb
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data KonnektivitätTrivadis
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatengeKarin Patenge
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBPeter Ramm
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga
 
APEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & BetriebAPEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & BetriebNiels de Bruijn
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAsKarin Patenge
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerStefan Oehrli
 
Data Mining und OLAP
Data Mining und OLAPData Mining und OLAP
Data Mining und OLAPmurat9393
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?KurtStockinger
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickKarin Patenge
 
Abap course chapter 4 database accesses
Abap course   chapter 4 database accessesAbap course   chapter 4 database accesses
Abap course chapter 4 database accessesMilind Patil
 
APEX für den Oracle DBA
APEX für den Oracle DBAAPEX für den Oracle DBA
APEX für den Oracle DBANiels de Bruijn
 
Cloud Lösungen für Apex
Cloud Lösungen für ApexCloud Lösungen für Apex
Cloud Lösungen für ApexStefan Witwicki
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...AWS Germany
 
20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatenge20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatengeKarin Patenge
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenBjörn Muschall
 

Ähnlich wie Heterogene Daten(-strukturen) in der Oracle Datenbank (20)

Oracle Database 12c Release 2
Oracle Database 12c Release 2 Oracle Database 12c Release 2
Oracle Database 12c Release 2
 
Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017Oracle Technology Monthly Oktober 2017
Oracle Technology Monthly Oktober 2017
 
Big Data Konnektivität
Big Data KonnektivitätBig Data Konnektivität
Big Data Konnektivität
 
DSpace 5 und Linked (Open) Data
DSpace 5 und Linked (Open) DataDSpace 5 und Linked (Open) Data
DSpace 5 und Linked (Open) Data
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DBDocker-Images mit vorinstallierter Instanz einer Oracle-DB
Docker-Images mit vorinstallierter Instanz einer Oracle-DB
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
APEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & BetriebAPEX 5.1 - Architektur, Installation & Betrieb
APEX 5.1 - Architektur, Installation & Betrieb
 
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
20190604_DOAGDatabase2019_OracleNoSQLDB_for_DBAs
 
DOAG Webinar Oracle und Docker
DOAG Webinar Oracle und DockerDOAG Webinar Oracle und Docker
DOAG Webinar Oracle und Docker
 
Data Mining und OLAP
Data Mining und OLAPData Mining und OLAP
Data Mining und OLAP
 
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
Analyse von Applikationslogs und Querylogs: Datenbanken, Hadoop oder Splunk?
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im ÜberblickBig Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
Big Data Community Webinar vom 16. Mai 2019: Oracle NoSQL DB im Überblick
 
Abap course chapter 4 database accesses
Abap course   chapter 4 database accessesAbap course   chapter 4 database accesses
Abap course chapter 4 database accesses
 
APEX für den Oracle DBA
APEX für den Oracle DBAAPEX für den Oracle DBA
APEX für den Oracle DBA
 
Cloud Lösungen für Apex
Cloud Lösungen für ApexCloud Lösungen für Apex
Cloud Lösungen für Apex
 
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
OOP 2014 SQL oder NoSQL - die Auswahl der richtigen Datenbankplattform für di...
 
20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatenge20181120_DOAG_OracleNoSQLDB_KPatenge
20181120_DOAG_OracleNoSQLDB_KPatenge
 
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer HochschulbibliothekenAMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
AMSL Kick-off-Meeting sächsischer Hochschulbibliotheken
 

Mehr von Ulrike Schwinn

Hybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19cHybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19cUlrike Schwinn
 
JSON in der Oracle Datenbank
JSON in der Oracle DatenbankJSON in der Oracle Datenbank
JSON in der Oracle DatenbankUlrike Schwinn
 
Sensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle DatenbankSensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle DatenbankUlrike Schwinn
 
18c: private temporary tables
18c: private temporary tables18c: private temporary tables
18c: private temporary tablesUlrike Schwinn
 
What's new in SQL und PL/SQL in 12.2
What's new in SQL und PL/SQL in 12.2What's new in SQL und PL/SQL in 12.2
What's new in SQL und PL/SQL in 12.2Ulrike Schwinn
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios Ulrike Schwinn
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Ulrike Schwinn
 
Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ulrike Schwinn
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ulrike Schwinn
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ulrike Schwinn
 

Mehr von Ulrike Schwinn (10)

Hybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19cHybrid Partitioned Tables in Oracle Database 19c
Hybrid Partitioned Tables in Oracle Database 19c
 
JSON in der Oracle Datenbank
JSON in der Oracle DatenbankJSON in der Oracle Datenbank
JSON in der Oracle Datenbank
 
Sensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle DatenbankSensitive Daten in der Oracle Datenbank
Sensitive Daten in der Oracle Datenbank
 
18c: private temporary tables
18c: private temporary tables18c: private temporary tables
18c: private temporary tables
 
What's new in SQL und PL/SQL in 12.2
What's new in SQL und PL/SQL in 12.2What's new in SQL und PL/SQL in 12.2
What's new in SQL und PL/SQL in 12.2
 
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
SQL Tuning Sets: Generieren, Verwenden, Transferieren, Szenarios
 
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
Komprimierung in der Oracle Datenbank (Stand 11gR2, 12c)
 
Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)Ausgewählte PL/SQL Packages (3)
Ausgewählte PL/SQL Packages (3)
 
Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)Ausgewählte PL/SQL Packages (2)
Ausgewählte PL/SQL Packages (2)
 
Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)Ausgewählte PL/SQL Packages (1)
Ausgewählte PL/SQL Packages (1)
 

Heterogene Daten(-strukturen) in der Oracle Datenbank

  • 1. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 1 Ulrike Schwinn (Ulrike.Schwinn@oracle.com, @uschwinn) BU Core & Cloud Technologies Oracle Deutschland B.V. & Co KG Big Data & Analytics Heterogene Daten-(strukturen) in der Oracle Datenbank speichern und verarbeiten.
  • 2. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 2 Worum geht‘s? Large Objects External Table Extended Datentyp VARCHAR2 JSON Database Filesystem XMLTYPE XMLDB Sentiment Analysis Partitioned External Table Oracle Text Neuigkeiten SQL Data Guide LOB Storage IS JSON ORACLE_DATAPUMP xquery ORACLE_LOADER LIVE SQL XML vs JSON Relationale Views über XML ORACLE_HIVE 12.1 Securefiles Relationale Views über JSON 12.2
  • 3. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 3 Wo speichern? • Innerhalb der Datenbank – Standard Datentypen wie • VARCHAR2 bis zu 32767 Bytes mit MAX_STRING_SIZE = EXTENDED als Extended Datentyp bis zu 4000 Bytes mit MAX_STRING_SIZE = STANDARD • LOB (Basicfile oder Securefile) bis ca 4 PB – Spezielle Datentypen für XML, Spatial und Media Types – Unterstützung durch Indizes für Performance und auch für spezielle Funktionalitätsanforderungen • Außerhalb der Datenbank – External Table Technologie
  • 4. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 4 Datentyp Extended: Pros und Cons • Pro: – Migrationenprojekte – Spaltengröße, Funktionen mit VARCHAR2 Ausgabe wie LISTAGG etc. – Mehr Funktionalität wie zum Beispiel Case Insensitive Datenbank, IN-Memory JSON • Contra: – Speicherung als LOB bei neuangelegten Tabellen • Hinweis: LIVE SQL nutzt diesen Datentyp
  • 5. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 6 Daten in der Datenbank speichern • Ein einziges zentrales Repository => zentrales Management • Nutzung der Mechanismen einer Datenbank wie – Backup/Recovery – Security – Performance Techniken wie Indizierung, Partitionierung, Parallelisierung, Laden der Daten usw. • Einheitliche Werkzeuge • Einfacher Zugriff auf bestehende (relationale) Stammdaten und heterogene Daten über SQL
  • 6. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 7 43 Jahre und immer noch ... • Developer Survey Results 2017 https://stackoverflow.com/insights/survey/2017#technology
  • 7. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 8 Die Oracle Datenbank für “all your data” select p.id, p.name, sl.json_doc.quantity anzahl from product p, customer c, store s, sales sl where sl.json_value(json_doc,'$.product_id')=p.id and contains(p.notes,fuzzy('Lieferkosten'), 1) > 0 and sl.json_value(json_doc,'$.CUSTNumber' returning number) = c.cust_ids and s.store_id = 1234 and sdo_within_distance(c.location, s.location,'distance=20')='TRUE' Alle Arten von Daten mit Advanced Analytics, OLAP, R, PHP, .NET, SQL ...
  • 8. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 9 Large Objects (LOBs) – Storage Klausel Bedeutung der Storage Klausel • LOB-Segmente liegen im gleichen Tablespace wie Tabelle • Default Securefile Verwendung ab 12c (optional mit Encryption, Compression, Deduplication) • Speicherung gemischt; in-line, wenn LOB kleiner als ~4000 Bytes, ansonsten out-line – Default: ENABLE STORAGE IN ROW • LOB-Segmente sind nicht im Buffer Cache – Default: NOCACHE • Redo-Logging wie Table bzw. Tablespace-Einstellung – Default: LOGGING create table dokument_tab( name varchar2(200), lob_column blob);
  • 9. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 10 Laden von LOBs • SQL*Loader • Datapump Export und Import • PL/SQL und JAVA • External Table • Datenbank Filesystem (DBFS) auf Linux
  • 10. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 11 LOB Neuigkeiten • Filesystem DBFS – mit WEBDAV, HTTP und FTP Zugriff – POSIX File Locking • Neues Filesystem OFS (Ähnlich zu DBFS aber ...) – Ein Filesystem (mounted mit OFS Server) kann mit NFS Server exportiert werden siehe auch https://oracle-base.com/blog/2017/05/17/ofs-and-dbfs-questions/ • SQL Funktionen (wie LENGTH, UPPER, …) auf LOB Spalten für Prädikat Evaluation in Exadata • Erweiterungen im Distributed LOBs Umfeld
  • 11. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 12 XML vs JSON Daten in der Datenbank Eigenschaft XML JSON Integraler Bestandteil >= 9i Release 2 >= 12.1.0.2 Datentyp XMLTYPE kein spezieller Datentyp DB und CloudEditionen alle alle Generierung XMLELEMENT, XMLATTRIBUTES ... JSON_ARRAY, JSON_OBJECTAGG ... Relationale Sichten XML_TABLE, XMLEXISTS, XMLQUERY, XQUERY JSON_VALUE, JSON_TABLE oder DataGuide (ab 12.2) Änderbarkeit SQL/XML Funktionen Mit PL/SQL Indizierung Function Based Index XML Index Function Based Index DataGuide Repository Zugriffe HTTP, WEBDAV und FTP keine
  • 12. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 13 Beispiel mit JSON Daten
  • 13. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 14 • IS JSON Bedingung prüft auf Gültigkeit • Mögliche Indizierung über Function Based Index für Tuning Tabelle Laden und Indizieren create table json_tab (id number generated as identity, json_document clob constraint ensure_json CHECK (json_document IS JSON)); insert into json_tab (json_document) select json_document from json_contents; commit; create index ponumber_idx on json_tab (json_value(json_document, '$.PONumber' returning number error on error));
  • 14. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 15 Operationen • JSON Generieren • Abfragen select json_query(json_document,'$.ShippingInstructions') from json_tab where json_value(json_document,'$.PONumber' returning number)=1000; select count(*) from json_tab where json_exists (json_document, '$.ShippingInstructions.address.country'); select JSON_OBJECT('empid' is empno,'empname' is ename, 'Managerid' is mgr, 'Deptid' is deptno) emp from scott.emp where deptno=10;
  • 15. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 16 Einsatz von Data Guide • Aufgabe: Suche nach Auftraggeber mit „uneindeutigem“ Namen • (Hierarchischer) Data Guide legt Strukturen an um – Views zu erzeugen – linguistisch zu suchen (Textindex) – virtuelle Spalten zu erzeugen oder zu löschen create search index JSON_TAB_GUIDE on JSON_TAB (JSON_DOCUMENT) for json PARAMETERS ('DATAGUIDE ON SYNC (ON COMMIT)')
  • 16. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 17 Die (linguistischen) Abfragen • Operatoren wie JSON_TEXTCONTAINS oder JSON_EXISTS verwenden json_textcontains(json_document, '$.CostCenter', 'A40') json_textcontains(json_document,'$.ShippingInstructions','fuzzy(fransesco)') json_exists(json_document,'$.ShippingInstructions.Address.zipCode') json_textcontains(json_document, '$','near((United, America), 3)') json_textcontains(json_document,'$','Sporting near green') json_textcontains(json_document, '$.LineItems', '$tie') json_textcontains(json_document, '$.Requestor', 'fuzzy(Sarat)')
  • 17. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 18 Das Ergebnis Demo
  • 18. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 20 Relationale View (*) Spalten lassen sich umbenennen
  • 19. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 21 Performance durch … • Definition von virtuellen Spalten • Indizierung über – Function Based Index mit CREATE INDEX und JSON_VALUE – Volltext Index (Data Guide) mit CREATE SEARCH INDEX • JSON Optimierungen bei In-Memory Columnstore Verwendung – Performancegewinn für Funktionen wie JSON_TABLE, JSON_VALUE oder JSON_EXISTS durch spezielles Binary Format – Speicherung von virtuellen Spalten • Monitoren über Ausführungspläne
  • 20. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 22 Wer die Wahl hat … XMLTYPE Storage • Verwendbar wie jeder andere Datentyp • Unterstützt drei unterschiedliche Speicherformen je nach Anforderung wie – Konkurrierender Zugriff – Ladeperformance – Abfrage-Performance – Platzbedarf – XML Schema Support – Erhalt von XML Informationen
  • 21. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 23 Beispiele: Tabellen und Indizes • Nutzung als Tabellenspalte • Mögliche Indizierung – B* Index für objektrelationale Speicherung  XML Index für Textbasierte und Binary XML basierte Speicherung CREATE TABLE xml_tab (x_doc XMLTYPE) XMLTYPE COLUMN x_doc STORE AS [clob | object relational | binary xml] CREATE INDEX xml_index ON binary_xml_tab3(doc) INDEXTYPE IS xdb.xmlindex parameters ('PATHS (INCLUDE (/nachricht/aktie /nachricht/kontakt))');
  • 22. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 24 Beispiele: Abfragen und XML Generierung • XML Generieren • Abfragen select xmlquery( '/Abteilungen/Abteilung[@nr="2"]/Mitarbeiter[Age>20]' PASSING object_value RETURNING CONTENT) FROM xml_tab; select * FROM xml_tab WHERE xmlexists( '/Abteilungen/Abteilung[@nr="2"]/Mitarbeiter[Age>20]' PASSING xmldoc); select xmlelement( "Department", xmlattributes(deptno as "DepartmentNumber"), xmlelement("DepartmentName", d.dname), xmlagg( xmlelement ...
  • 23. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 25 Mapping auf relationale Spalten SELECT warehouse_name warehouse, warehouse2."Water", warehouse2."Rail„ FROM warehouses, XMLTABLE('/Warehouse‚ PASSING warehouses.warehouse_spec COLUMNS "Water" varchar2(6) PATH 'WaterAccess', Rail" varchar2(6) PATH 'RailAccess') warehouse2; WAREHOUSE Water Rail ----------------------------------- ------ ------ Southlake, Texas Y N San Francisco Y N
  • 24. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 26 Neuigkeiten in 12c • XMLDB ist mandatory! • XQuery Update und XQuery Full-Text • Oracle Multitenant Unterstützung • HTTPS enabled by default (Oracle EM Express) • XMLTable Optimierung • Partitioning Erweiterungen • Integration mit Logical Standby und Oracle Golden-Gate
  • 25. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 27 Oracle Text Neuigkeiten • Funktionen: – Oracle Text mit Sentiment Analyse • Performance: – Erhöhung von MAX_INDEX_MEMORY – Asynchrone Update Informationen – Wildcard Abfragen mit Reverse Token Index • Oracle Text Blog in deutsch: http://oracle-text-de.blogspot.co.uk/
  • 26. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 28 External Table Technologie • Lesender Zugriff über SQL*Loader Syntax mit Access Treiber ORACLE_LOADER – Optional: Aufbereitung über ein vorgeschaltetes Preprocessing • Entladen von Daten (Resultat eines beliebigen SELECT-Statements) mit Access Treiber ORACLE_DATAPUMP • Oracle Big Data SQL mit 2 weiteren Access Treibern – ORACLE_HIVE für Zugriff auf Daten in Apache Hive (erhält Metadaten von Hive) – ORACLE_HDFS für Zugriff auf Daten in HDFS (Metadaten werden in der Definition mitgegeben) – Vor: Datenbank 12.1.0.2 auf Enterprise Linux (OEL6) und Apache Hadoop Distribution von Cloudera und Hortonworks (CDH 5.5 und HDP 2.3) http://www.oracle.com/technetwork/database/bigdata-appliance/overview/bigdatasql-datasheet-2934203.pdf Steckbrief
  • 27. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 29 Zugriff auf JSON Daten • Ausgangssituation – JSON Daten liegen außerhalb der Datenbank im üblichen Format vor – Oracle Beispiel: https://github.com/oracle/db-sample-schemas/blob/master/order_entry/PurchaseOrders.dmp • Vorgehensweise – Zugriff über logisches Directory – External Table mit Spalte für die JSON Daten in der Datenbank create table json_contents (json_document CLOB) organization external (type oracle_loader default directory json_dir access parameters (records delimited by 0x'0A' fields (json_document CHAR(5000))) location ('PurchaseOrders.dmp')) reject limit unlimited; create directory json_dir as '/home/oracle/db-sample-schemas-12.2.0.1/order_entry';
  • 28. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 30 Zugriff auf XML Daten • Neu in 12.2: Mit Klausel XMLTAG sind auch Teildokumente eines XML Dokuments im Zugriff CREATE TABLE ext_xml (xml_text VARCHAR2(2000)) ORGANIZATION external (TYPE oracle_loader DEFAULT DIRECTORY home ACCESS PARAMETERS (RECORDS XMLTAG ("DepartmentName", "employeeName" ) READSIZE 1024 SKIP 0 FIELDS NOTRIM MISSING FIELD VALUES ARE NULL) location ('emp.xml')) REJECT LIMIT UNLIMITED
  • 29. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 31 Das Ergebnis SQL> select * from ext_xml; XML_TEXT ------------------------------------------------------------------------------- <DepartmentName>ACCOUNTING</DepartmentName> <employeeName>CLARK</employeeName> <employeeName>MILLER</employeeName> <employeeName>KING</employeeName> <DepartmentName>RESEARCH</DepartmentName> <employeeName>JONES</employeeName> <employeeName>SCOTT</employeeName> <employeeName>SMITH</employeeName> <employeeName>ADAMS</employeeName> <employeeName>FORD</employeeName> <DepartmentName>SALES</DepartmentName> <employeeName>WARD</employeeName> <employeeName>MARTIN</employeeName> <employeeName>BLAKE</employeeName> <employeeName>JAMES</employeeName> <employeeName>ALLEN</employeeName> <employeeName>TURNER</employeeName> <DepartmentName>OPERATIONS</DepartmentName>
  • 30. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 32 External Table für große Datenmengen • Partitionierung von External Tables ab 12.2 über Range, List, Composite Range, Composite List – Mögliche Access Treiber sind ORACLE_LOADER, ORACLE_HIVE und ORACLE_HDFS • LOCATION Klausel mit Wildcards – Beispiel: LOCATION (home:'cust_m*.csv') • Beim Entladen von Daten mit ORACLE_DATAPUMP können die Daten auch komprimiert abgelegt werden – Beispiel: ACCESS PARAMETERS (COMPRESSION ENABLED HIGH)
  • 31. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 33 Beispiel mit List Partitionierung create table ext_part (last_name varchar2(25), gender varchar2(1), city varchar2(50), birth_year number) ORGANIZATION EXTERNAL ( type ORACLE_LOADER DEFAULT DIRECTORY home ACCESS PARAMETERS( RECORDS DELIMITED BY NEWLINE FIELDS TERMINATED BY ';' optionally enclosed BY '"' MISSING FIELD VALUES ARE NULL) ) REJECT LIMIT UNLIMITED PARTITION BY LIST (gender) ( PARTITION part_f VALUES ('F') LOCATION (home:'cust_f.csv'), PARTITION part_m VALUES ('M') LOCATION (home:'cust_m.csv'));
  • 32. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 34 External Table und HDFS create table customer_list_hdfs (CUSTOMER_NUMBER number, CUSTOMER_NAME VARCHAR2(50), POSTAL_CODE CHAR(5)) organization external (type oracle_hdfs default directory def_dir1 access parameters (com.oracle.bigdata.cluster = hadoop_cl_1 com.oracle.bigdata.rowformat = delimited fields terminated by ',')) partition by range(CUSTOMER_NUMBER) ( partition p1 values less than (100) location('hdfs_pet/p1a.dat', 'hdfs_pet/p1b.dat'), partition p2 values less than (200) location('hdfs_pet/p2.dat'), partition p3 values less than (300) location('hdfs_pet/p3.dat') );
  • 33. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 35 Flexibilität: Änderungen zur Laufzeit • In 12.2 können einige Parameter zu Laufzeit geändert werden – DEFAULT DIRECTORY – LOCATION – ACCESS PARAMETERS (BADFILE, LOGFILE, DISCARDFILE) – REJECT LIMIT • Dokumentiert in Hermann Bärs Blog – https://blogs.oracle.com/datawarehousing/the-first-really-hidden-gem-in-oracle- database-12c-release-2:-runtime-modification-of-external-table-parameters
  • 34. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 36 Beispiel: Ohne LOCATION Parameter create table ext_flex (last_name varchar2(25), gender varchar2(1), city varchar2(50), birth_year number) ORGANIZATION EXTERNAL ( type ORACLE_LOADER default directory home ACCESS PARAMETERS( RECORDS DELIMITED BY NEWLINE nologfile nobadfile FIELDS TERMINATED BY ';' optionally enclosed BY '"' MISSING FIELD VALUES ARE NULL ) ) REJECT LIMIT UNLIMITED;
  • 35. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 37 Abfragen SQL> SELECT * from ext_flex; no rows selected SQL> SELECT count(*) FROM ext_flex EXTERNAL MODIFY (LOCATION(dir_w:'cust_f.csv')); COUNT(*) ---------- 18325 SQL> SELECT count(*) FROM ext_flex EXTERNAL MODIFY (LOCATION(dir_m:'cust_m.csv')); COUNT(*) ---------- 37175
  • 36. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 38 Fazit • Laden und Entladen von Daten über External Tables • Datenaufbereitung mit Preprocessing • Zugriff auf heterogene Daten (z.B. XML, JSON, Daten in Hadoop) • Performanter Zugriff auf große Datenmengen – Über Partitionierung – Über deklarative Constraints • Flexibilität durch Parameter Änderungen zur Laufzeit • https://blogs.oracle.com/coretec/external-table-in-12c
  • 37. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 39 LiveSQL.oracle.com Wo ausprobieren? • http://livesql.oracle.com • SQL Scratch Pad in der Oracle Cloud • Browser und OTN Account nötig • Kostenlos • “Save und Share” von SQL Beispielen • 12.2 Tutorials
  • 38. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 40 Weitere Informationen • Deutschsprachige Blogeinträge: blogs.oracle.com/coretec • Dojos: http://tinyurl.com/dojoonline • Textblog: http://oracle-text-de.blogspot.co.uk/ • Slideshare: https://www.slideshare.net/uschwinn/json-in-der-oracle-datenbank-12c-release-2 • Kontakt: Ulrike.Schwinn@oracle.com @uschwinn
  • 39. Copyright © 2017, Oracle and/or its affiliates. All rights reserved.BU Core & Cloud Technologies 41