Oracle RDBMS vs NoSQL

Werbung
Oracle RDBMS vs NoSQL
Matthias Fuchs, Principal Consultant, esentri AG Nürnberg
@hias222
DOAG Datenbanken – 30. Mai 2017 - Düsseldorf
Über mich
Matthias Fuchs
Principal Conultant
[email protected]
@hias222
>
>
>
>
10+ years Experience with Oracle
Database, Middleware, SOA
OCP
Engineered Systems
> Exadata
> Exalogic
Link with esentri
2
Agenda
>
>
>
>
SQL, NoSQL, Cloud
Oracle one for all your data
JSON
Von Partitioning bis Sharding
> Oracle Partitoning
> Oracle Sharding
> Cassandra
> Zukunft
> Oracle RDBMS vs NoSQL - Agenda
3
SQL, NoSQL, Cloud
EINFACH MEHR
> MUT
> Oracle RDBMS vs NoSQL
4
AWS – Databases
> AWS Plattform
> Database RDBMS Services
> MySQL
> MariaDB
> PostgreSQL
> Oracle
> SQLServer
> Aurora
> Database on your own servers
> Oracle RDBMS vs NoSQL
5
Pivotal Cloud Foundry
>
>
>
>
>
Cloud Native Entwicklung
Spring Boot Umfeld
MySQL
Redis
Amazon Aurora
> Oracle RDBMS vs NoSQL
SQL, NoSQL, Cloud – RDBMS vs NoSQL
SQL- RDBMS
NoSQL – Key/Value
Konsistenz
HoheDatensicherheit(ACID)
Tunable Consistency
(Cassandra)
EventualConsitency
Skalierung
SkalierbardurchHardware
oderCluster
Einfachhorizontalskalierbar
mitgängigerHardware
Schnittstelle
SQL
SQL- ähnlicheSpracheoder
nurAPIs – Java,Nodejs
PartitionToleranz
Ausfall beiverteilten
Installationüber
Rechenzentrenhinweg
WeiterlaufenmöglichKonsistenz
> Oracle RDBMS vs NoSQL
7
7
Oracle one for all your data
EINFACH MEHR
> MUT
EINFACH MEHR
> WERTE
> Oracle RDBMS vs NoSQL
8
Oracle All Data
>
>
>
>
JSON
XML
Oracle Text
Oracle Multimedia
(intermedia)
> Oracle Secure Files and
Large Objects
> OLAP
> R Statistik
> Spatial and Graph
> Oracle RDBMS vs NoSQL
> In Memory
> Sharding
>
>
>
>
>
SQL Plus
Java in der Datenbank
Pro*C/C++
Pro*Cobol
Pro*Fortran
All Data All Databases
Text
ElasticSearch,
Solr
JSON
MongoDB,
CouchDB,
DocumentDB
Sharding
> Oracle RDBMS vs NoSQL
Cassandra,
Elastic
Datenbanken und Daten Model – Ranking non relational
JSON
Database
Ranking
Licence
Model
MongoDB
5
GNUAGPLv3.0
BSON(JSON)
Cassandra
8
ApacheLicense
Widecolumn store
(schema free)
Redis
9
BSD3
Key-value store
Elasticsearch
11
ApacheLicense
SearchEngine,JSON
Solr
14
ApacheLicense
Searchengines
https://db-engines.com
> Oracle RDBMS vs NoSQL
Sharding
JSON
> Oracle RDBMS vs NoSQL
12
XML und JSON
XML
> Extensible Markup Language
> struktur-beschreibend
> Felexible Schnittstellen
> strikte Spezifizierung
> Auszeichnungssprache
JSON
> JavaScript Object Notation
> Syntax-Konvention
> Regide Schnittstelle
> Einfacher Syntax
> Wenig overhead
> Datenaustauschformat
> ORACLE DB 10g/11g
> Oracle DB 12c
> Middleware meist SOAP (Simple Object Access
Protocol)
> Oracle RDBMS vs NoSQL
> Middleware meist REST Services
(REpresentational State Transfer )
JSON Data Guide 12.2
> Zusammenfassung über die Strukturen in einem JSON Dokument
> Basis für die Entwicklung von Analysen und BI
> Zum Abfragen und Suchen von JSON Inhalten
> Neue JSON dagegen zu verfizieren
> Direkte Abfrage der Daten
> Views und virtuelle Spalten aus dem JSON Inhalt erzeugen
No Oracle Text:
CREATE SEARCH INDEX po_dg_only_idx ON j_purchaseorder
(po_document) FOR JSON PARAMETERS ('SEARCH_ON NONE');
Dataguide off:
ALTER INDEX po_search_idx REBUILD PARAMETERS ('DATAGUIDE
OFF');
Tipps: https://apex.oracle.com/pls/apex/germancommunities/dbacommunity/tipp/5901/index.html
> Oracle RDBMS vs NoSQL
14
1
JSON Data Guide
DBMS_JSON.get_index_dataguide à
> Example Flat Data Guide
VirtualColumn
DBMS_JSON.rename_column( 'J_PURCHASEORDER',
'PO_DOCUMENT', '$.PONumber', DBMS_JSON.TYPE_NUMBER,
'PONumber');
> Oracle RDBMS vs NoSQL
15
JSON in Oracle 12c
> JSON Daten können gespeichert, indiziert und abgefragt werden ohne Schemadefinition
> JSON kann ähnlich wie XML benutzt werden
> JSON wird mit Datentypen VARCHAR2, CLOB und BLOB gespeichert
> XML wird mit XMLType gespeichert
> Funktionen:
> json_value, json_query, json_table
> Bedingungen
> json_exists, is json, is not json, json_textcontains
> Daten können, ähnlich wie in NoSQL Datenbanken, gespeichert werden in Kombination mit dem Konsistenz
Model einer relationalen DB.
> Oracle RDBMS vs NoSQL
16
Von Partitioning bis Sharding
EINFACH MEHR
> VERTRAUEN
> Oracle RDBMS vs NoSQL
17
Table example
Customers
Orders
CustId VARCHAR2(60)NOTNULL
OrderId INTEGERNOTNULL
FirstName VARCHAR2(60)
CustId VARCHAR2(60)NOTNULL,
LastName VARCHAR2(60)
OrderDate TIMESTAMPNOT
NULL,
ClassVARCHAR2(10)
Geo VARCHAR2(8)
CustProfile VARCHAR2(4000)
> Oracle RDBMS vs NoSQL
SumTotal NUMBER(19,4)
StatusCHAR(4)
Partitioning
> Immer: Tabellen größer 2 GB
> Tabellen mit historischen Daten, neue Daten werden
in neue oder die aktuelle Partition angehängt
> Typisch sind z.B Montspartititonen
> Die Partitionen können über uneterschiedliche
Storagebackends verteilt werden
> Information Lifecycle Management
http://www.oracle.com/us/products/database/database-11g-managing-storage-wp-354099.pdf
> Oracle RDBMS vs NoSQL
Partitioning Types
CREATE TABLE PART_Customers
(
CustId VARCHAR2(60) NOT NULL,
FirstName VARCHAR2(60),
....
CONSTRAINT part_pk_customers PRIMARY KEY (CustId),
CONSTRAINT part_json_customers CHECK (CustProfile IS JSON)
)partition by hash (CustId)
partitions 8 ;
CREATE TABLE PART_Orders
(
OrderId INTEGER NOT NULL,
CustId VARCHAR2(60) NOT NULL,
...
constraint part_pk_orders primary key (CustId, OrderId),
constraint part_fk_orders_parent foreign key (CustId)
references PART_Customers on delete cascade
) partition by reference (part_fk_orders_parent)
>; Oracle RDBMS vs NoSQL
Sharding
>
>
>
>
Lineare Skalierung
Eingrenzung von Fehlern - Fault Containment.
> Shared Nothing
> Probleme in einem Shard beeinflussen kein anderes Shard
Rolling Upgrades.
> Unabhängige Shards
> Test auf kleinem Teil möglich
Ready for Cloud – Deployments on
> on-premises
> cloud
> hybrid
> Oracle RDBMS vs NoSQL
Sharding Example
CREATE SHARDED TABLE Customers
(
CustId VARCHAR2(60) NOT NULL,
FirstName VARCHAR2(60),
.....
CONSTRAINT pk_customers PRIMARY KEY (CustId),
CONSTRAINT json_customers CHECK (CustProfile IS JSON)
) TABLESPACE SET TAB_PRIMA_SET PARTITION BY CONSISTENT
HASH (CustId) PARTITIONS AUTO;
CREATE SHARDED TABLE Orders
(
OrderId INTEGER NOT NULL,
CustId VARCHAR2(60) NOT NULL,
....
constraint pk_orders primary key (CustId, OrderId),
constraint fk_orders_parent foreign key (CustId)
references Customers on delete cascade
) partition by reference (fk_orders_parent);
> Oracle RDBMS vs NoSQL
Application
Server
Application
Server
Directors
(GSM)
Shards
Application
Server
Shard Catalog
Shard Access ODBC
>
>
Zugriff SQL -> Shard
https://docs.oracle.com/database/122/JJDBC/database-sharding.htm
sqlplus user_shard/root@‘
(description=(address=(protocol=tcp)
(host=sharddemo1)(port=1571))
(connect_data=
(service_name= sharddb.cust_sdb.oradbcloud)
(region=region1)
([email protected])
)
)'
OracleShardingKey sdkey =ods.createShardingKeyBuilder()
.subkey(shardingKeyVal,OracleType.VARCHAR2)
.build();
> Oracle RDBMS vs NoSQL
Demo
Oracle Partition
Demo
Oracle Shard
Demo
Oracle Jdev
Cassandra
>
Tunable Data Consistency
>
Write
> Any
> One/Two/Three
> Local_One
> Quorum
> Local_Quorum
> Each_Quorum
> All
Reads
> One/Two/Three
> Local_One
> Quorum
> Local_Quorum
> Each_Quorum
> All
>
A
I
B
1. write
2. write
H
C
G
Anderes Rechenzentrum
D
F
Unterschiedliches Rack
E
Entscheidung pro Insert
> Oracle RDBMS vs NoSQL
Cassandra Datenmodell
Define Data
Domain
Millionen von
orderIDs
Jede orderID
hat einen
Kunden
> Oracle RDBMS vs NoSQL
Define
Access
pattern
Abfrage von:
OrderID
CustomerID
Primary
Access
Entities
CustomerID
Secondary
Access
Entities
OrderID
Sortierung
nach Datum
Review
Partition
ClusterKeys
Customer ID
als Partition
Key, häufig
Gruppierung
mit
ClusterKey
Cassandra Joins and Performance
>
>
>
>
ApacheSpark or DataStax ODBC connectors
Daten Joins werden auf Applikationsebene durchgeführt
Daten über den gesamten Cluster verteilen
Anzahl der Partition Reads klein halten (Partition Key)
> Oracle RDBMS vs NoSQL
http://www.esentri.com/blog/2017/04/06/apache-cassandra-performance-explained/
Casandra Tabelle
> Oracle RDBMS vs NoSQL
Demo
Cassandra
Hochverfügbarkeit
EINFACH MEHR
> SCHWUNG
> Oracle RDBMS vs NoSQL
32
Hochverfügbarkeit über Rechenzentrumsgrenzen
> Oracle (Active) Data Guard
> Data Guard Modes entscheiden über die Konsistenz (Max, Performance, Security, Avaiability)
> In 12.2 viele Fetures zum schnelleren Umschalten (perwarming
> Far Sync für zwischenspeichern der Redo Logs
> Fast Sync für schnelleres schreiben auf der Standbyseite
> Nologging Optimierungen
> Sharding
> Verteilt über mehrere Rechenzentren
> Shards basieren auf Data Guard
> Nur ein Shard wird bearbeitet
> Cassandra
> Tunable Consistency
> Oracle RDBMS vs NoSQL
3
Ausfall
> Ausfall Rechenzentrum
> Partitioning -> Dataguard Switch
> Sharding -> Dataguard Switch der Shards
> Cassandra –> Gossip talks -> Nodes werden nicht entfernt, Admin Eingriff
> CAP Consitency – Availibility – Partition Toleranz
> Partitioning – CA (Dataguard Mode?)
> Sharding – AP
> Cassandra - AP
No Go
Strict Consistency
Consistency
Partition
Toleranz
> Oracle RDBMS vs NoSQL
Availibility
Eventual Consistency
34
Zukunft
> Oracle RDBMS vs NoSQL
35
Zukunft
> NewSQL – NoSQL DBS, welche SQL oder SQL ähnliche Sprache unterstützen
> Google spanner (CP)
> MySQL Derivate
> Amazon Aurora
> Oracle RDBMS vs NoSQL
36
Vielen Dank!
37
Herunterladen