Oracle In-Memory Techniken: TimesTen In-Memory

Werbung
<Insert Picture Here>
Oracle In-Memory Techniken:
TimesTen In-Memory Database & Coherence Data Grid
Markus Kißling
Business Unit Server Technologies - PCM
ORACLE Deutschland B.V. & Co. KG
Agenda
• In-Memory Grid Computing
• Oracle In-Memory DB Cache / TimesTen
• Oracle Coherence Data Grid
Übersicht In-Memory Techniken
Data Buffer
Keep Cache
LRU-Algorithmus
Result
Cache
Coherence
Object Cache / Data
Grid für Anwendungen
Auf der Middletier
Shared Pool oder Client
Transparent für Anwendungen
Flash
Cache
Data Buffer Erweiterung
2nd level Cache
Auch für Datafiles
“In-Memory”
Techniken der
Datenbank
In-Memory Database
Cache
Memory
optimierende
Techniken
Compression
Partitioning
Parallelisierung
OLAP
Kürzeste Antwortzeiten
Real-Time
Oracle DB konform
Auf der Middletier
In-Memory und Real-Time – ein Gespann
Autorisierung,
Online Abrechnung,
Lokations-basierte
Dienste
Markt Daten,
Marktereignisse,
Auftragszusammenführung,
Trading
Real-Time Analytics Interaktive Dashboards
Data Mart, Scorecard
eCommerce,
Personalisierung,
Real-Time Ad
Serving
Real-Time Applikationen
Instantly Responsive / Highly Scalable / Always-On
Mainstream 64-bit
Prozessoren
Schnelle
Netzwerke
Schlüsseltechnologien
Genügend RAM
Applikations-Antwortzeiten
Warum sind diese entscheidend?
• Service Level Agreements (SLA) nicht eingehalten
• Aufgrund hoher Antwortzeiten
• Bestimmt Mitarbeiterproduktivität und Kundenzufriedenheit
• Kundenabwägungen
• Mitbewerb liefert bessere Antwortzeiten
• Unternehmensziele nicht erreicht und abnehmende
Profitabilität
• Auswirkungen auf das Geschäftsergebnis
Agenda
• In-Memory Grid Computing
• Oracle In-Memory DB Cache / TimesTen
• Oracle Coherence Data Grid
Entwicklung der TimesTen In-Memory DB
2010
2009
2007
2005
LOBs
2011
Cache Advisor
In-Memory Analytics
Columnar Compression
Parallel Replication
ODP.NET Support
Cache Grid for Scale Out
Oracle Clusterware Integration
PL/SQL Support
Oracle Call Interface Support
OEM & SQLDeveloper Integration
Oracle Database Data Types Support
2000
National Language Support
Integration with Oracle RAC
1998
Mid-tier Cache for Oracle DB
Online Upgrades
High Availability
1st Commercial In-Memory RDBMS
Eine Memory-optimierte Datenbank
Telco Services
Financial Services
Application
CRM, Portal,
SaaS,
Customer-facing
Applications
Application
Real-Time
BAM & BI
Application
• Real-Time Applikationen erfordern
kürzeste Antwortzeiten
• TimesTen hält die Daten dicht an
der Applikation
• Kürzere Netzwerklatenzzeiten
• Weniger physischer I/O zur
Beschaffung der Daten
• Vollständiges relationales DBMS
• Anbindung über ODBC, JDBC
oder OCI
• Bedienung mit Standard-SQL
• Reduzierung der Antwortzeiten
Microsecond Response Time
7.0
1.78
Oracle TimesTen In-Memory Database 11.2.2.0 - Intel Xeon 5670 2.93Ghz, 2 CPUs, 6 cores/CPU - Oracle Linux 5.6
Massive Read Throughput
Over 4.14M
Reads per Sec
Oracle TimesTen In-Memory Database 11.2.2.0 - Intel Xeon 5670 2.93Ghz, 2 CPUs, 6 cores/CPU - Oracle Linux 5.6
Blazing Update Throughput
647K Updates
per Sec
Oracle TimesTen In-Memory Database 11.2.2.0 - Intel Xeon 5670 2.93Ghz, 2 CPUs, 6 cores/CPU - Oracle Linux 5.6
Anwendungsszenarien
• Sehr Hohe Transaktionslast
• United States Postal Service: 33000 Filialen 275M Txs/15h
• Ericsson: Abrechnungssystem für Mobiltelefone
• Monitoringsystem für Energieunternehmen mit bis zu 2167
Messages/sec, die es zu verarbeiten gilt
• Service Level Agreement – Konsistentes
Antwortzeitverhalten
• Bank of America: Wertpapierhandelssystem
• Deutsche Börse: Xetra Vorsystem – 80ms SLA (Order-Routing)
• Real-Time Szenarien mit Antwortzeiten in
Mikrosekunden
• Reisereservierungssystem und Ticket-Suche
TimesTen In-Memory Database ist schnell
Client-Server
Application
• TT läuft idealerweise auf dem Rechner des
Application Server
TimesTen
Client Lib
Client/
Server
• In-Memory optimiert
– Datenbank komplett im Shared Memory
– Zugriffsmethoden dafür optimiert
Direct-Linked
Application
TimesTen Libraries
JDBC / ODBC / ADO.NET / OCI / PLSQL
Fast
data
access
Checkpoint
Files
Transaction
Log Files
Memory-Resident
Database
• Direct-Link für ideale Performance
– Shared Memory hängt am
Applikationsprozess
– Kein Netzwerk Overhead
– Client-Server-Anbindung zur Admin
möglich (z.B. SQL Developer)
Unterschiede TimesTen zur Oracle DB
• TimesTen In-Memory Datenbank
•
•
•
•
Gesamte Datenbank ist komplett im Hauptspeicher
Datenbank-Design speziell auf Memory Layout abgestimmt
Weniger Strukturen, weniger Prozesse – weniger Overhead
Direkterer Zugriff auf die Daten
• Eine Anwendung kann direkt mit TimesTen gelinkt werden
• Datenbank-Operationen werden aus dem Adressraum des
Anwendungsprozesses heraus ausgeführt
• Kein Overhead für Netzwerk und IPC (Inter Process
Communication)
Replikation von TimesTen Datenbanken
Applikation
Applikation
Netzwerk
CKPT
LOG
Netzwerk
• Replikation von TimesTen Datenbanken wird primär als
Hochverfügbarkeits-Lösung eingesetzt
• Mögliche Konfigurationen als
• Active-Active / Active-Standby
• Master-Subscriber
• Uni- und bidirektional
CKPT
LOG
In-Memory
Database Cache
Zentrale Daten aus der Oracle Datenbank
Applikation
Applikation
Applikation
Applikation
Netzwerk
Netzwerk
• Daten aus der Oracle Datenbank nutzen
DB-Instanz
• Daten werden initial in TimesTen geladen
• Änderungen lassen sich in die Oracle Datenbank
zurückschreiben (synchron/asynchron oder über
Cache Write-Through Mechanismus)
Daten aus einer zentralen Enterprise
Datenbank für schnellen Zugriff bereitstellen
TimesTen Cache Connect
Applikation
• Tabellen aus der Oracle Datenbank
oder Teile davon werden in TimesTen
als sog. “Cache Groups” geladen
CKPT
LOG
• Cache Groups lassen sich für lesenden
als auch schreibenden Zugriff
konfigurieren
Netzwerk
• Daten werden in regelmäßigen
Abständen automatisch synchronisiert
DB-Instanz
• Cache Group Daten sind auch dann
verfügbar, wenn die Verbindung zur
Oracle Datenbank zeitweise nicht
besteht
Oracle Maximum Availability Architecture
• TimesTen unterstützt
RAC und die synchrone
DataGuard Physical
Standby-Konfiguration
• Failover/Switchover
• Transient Rolling Upgrade
• Automatische Wiederauf- LOG
nahme der Datenaktualisierung von Oracle nach
TimesTen
• Automatische
Wiederaufnahme der
Transaktionsweitergabe von
TimesTen an Oracle
ApplikationsTransaktionen
Hot Standby
(Read-Only)
In-Memory
Cache Tables
In-Memory
Cache Tables
Active
Standby
LOG
Cache
Refresh
Cache
Write-Through
Data Guard
Real Application Clusters
Active Data Guard
TimesTen Support im SQL Developer
• Bearbeiten von TimesTen-Datenbankobjekten
• Konfiguration des Cachings von Oracle
Tabellen in sog. Cache Groups
• Definition von Cache Groups
• Laden/Refresh von Cache Data
•
•
•
•
Entwicklung von PL/SQL Prozeduren/Packages
Anzeige von SQL Execution Plans
Aktualisieren von Statistiken
Verwendung des SQL Worksheet für die Ausführung von
ad-hoc Queries oder internen
TimesTen Prozeduren
TimesTen Enterprise Manager PlugIn
• Monitoring der Key Performance Metrics
• Bestimmen von Schwellwerten für Alerts und
Benachrichtigungen
• Standard Reports über
TimesTen-Metriken
• Angepasste Reports lassen
sich per Report Wizard
erzeugen
• Geringer Overhead
Oracle Exalytics – Under the Hood
TimesTen for Exalytics
Memory Optimized Essbase
1 TB RAM
40 Processing Cores
High Speed Networking
Adaptive In-Memory Tools
Optimized Oracle Business Intelligence Foundation
Suite
In-Memory Analytics
Software
In-Memory Analytics
Hardware
TimesTen In-Memory Database for
Exalytics
• The leading in-memory relational database
• Persistent and highly available
• Used by 1000s of customers
• New SQL extensions for BI
• OLAP operators: CUBE, ROLLUP, GROUPING SETS
• Analytic functions
• New in-memory enhancements
• Columnar compression
• Fast, parallel load
• Standard SQL/ODBC/JDBC interfaces
Agenda
• In-Memory Grid Computing
• Oracle In-Memory DB Cache / TimesTen
• Oracle Coherence Data Grid
Oracle Coherence vs. Oracle TimesTen
Oracle Coherence
Oracle TimesTen
•
•
•
•
•
Objektmodell
Horizontale Skalierung
Programmierung gegen Objekt-API
oder Object/Relational Mapping
•
•
•
Relationales Modell
Microseconds Latency (Coherence
typischerweise liefert Milliseconds
Latency)
Oracle Database-Kunden möchten die
Latency ihrer Applikation reduzieren
(TimesTen für performancekritische
Daten (Bereiche) innerhalb
bestehender Oracle Database
Applikationen einsetzen)
Kunden können die selben Oracle
Schnittstellen verwenden, wie OCI,
Pro*C, PL/SQL, .NET (ODP.NET),
JDBC
Kunden suchen nach In-Memory DB
(Oracle Coherence ist ein In-Memory
Data Grid / Cache, keine Datenbank)
Warteschlange am Flughafen
Definition In-Memory Datagrid
• Ein In-Memory Datgrid ist ein [In-Memory]
Datenmanagment-System zum Verwalten von
Anwendungsobjekten, welche verteilt genutzt werden
können.
Es zeichnet sich durch
•
•
•
•
•
eine geringe Latenz bei Zugriffen
einen hohen Durchsatz
vorhersehbare Skalierbarkeit
hohe Verfügbarkeit und
ein robustes Verhalten
aus.
Ein “Mitarbeiter“
Vier “Mitarbeiter“
Was ist Oracle Coherence?
• Eine Java Bibliothek:
• ~ 12 MB Download: coherence-java-3.7.0.0b23397.zip
• keine Abhängigkeit zu anderen Bibliotheken,
ausser JDK (>= 1.5)
• Java, .NET, C++ Client API
(für .NET und C++ zusätzliche Bibliotheken zum
Download)
• Coherence Knoten ist JVM Prozess,
gestartet mit notwendigen Coherence Java Bibliothek und
Konfigurationsdateien
• Storageknoten können Daten aufnehmen/verwalten,
spezielle Serialisierungsmechanismen sind möglich
• Coherence Knoten laufen in Coherence Cluster:
dynamische Kapazität, spezielle Protokolle (TCMP)
Was ist Oracle Coherence?
• Client (Java, .NET, C++) verbindet sich mit Cluster
(wird selbst Teil des Verbunds) und iniitiert CRUD
Operationen, Berechnungen, Abfragen
Dynamisches
Hinzufügen/Wegnehmen
von Knoten
Coherence for .NET
coherence-net-3.7.1.0b27698.zip
Coherence Cluster Consensus
• Coherence Consensus = ein Vertrag zwischen einer
Menge von Prozessen über Mitgliedschaft innerhalb
des Verbundes zu einer bestimmten Zeit
• Analogie: Telefonkonferenzmodell
• ermöglicht transparentes, dynamisches und
automatisches Failover/Failback von Services und
Daten
• ermöglicht zuverlässiges Partitionieren von Daten
und Services
• In-Memory
Coherence Cluster Consensus
• Coherence Consensus basiert auf
• Proprietärem Network Stack: TCMP
• TCMP = The Consensus Management Protocol ;-)
• TCMP = Tangosol Coherence Management Protocol
• TCMP
• Peer-to-Peer Unicast-basiertes Protokoll
• Vollständig asynchron, feste Anzahl von Sockets (2+1) und
Threads pro JVM (6+1) – unabhängig von Clustergrösse
• Server Discovery, Cluster Management, Service Provisioning
Data Transmission
• Optionale Unterstützung für Multicast
Begrifflichkeiten
• Service:
• Menge von Threads für dedizierte Aufgabe
• Verschiedene Typen, z.B. Connectivity Services,
Processing Services, Cache Services
• Cluster: Menge von Services innerhalb eines
definierten Verbundes im Netzwerk
• Cache:
• bildet Schlüssel auf Werte ab
• wird mittels Namen referenziert(deshalb interface
NamedCache.)
• typischerweise geclustert, d.h. Zugriff von jedem
Clustermitglied aus
Begrifflichkeiten
• Backing Map:
• Datenstruktur eines Storage-Knotens zum Verwalten des
Inhalts von Caches
Cache Typen – Replicated Cache
• Jeder Knoten hat alle Informationen
Cache Typen – Partitioned Cache
• = “distributed cache”: partitioniert, Load-Balancing,
Lokationstransparenz, Failover
Cache Typen – Local Cache
• Jeder Knoten hat nur Informationen lokal
• Keine geclusterten Services
• Implementiert gleiche Standard Collections wie
geclusterte Caches
• Wird in Kombination mit geclusterten Services
benutzt
Cache Typen – Near Cache
• Kombiniert Local Cache mit Distributed Cache
Cache Konfiguration
• Coherence benutzt XML File zur Konfiguration der
Cache Topologie
• Zwei Abschnitte
• Cache Names mit Mapping auf Cache Schemes
• Definition der Cache Schemes
• Beim Aufruf von CacheFactory.getCache("name")
wird Argument mit Namen im Konfigurationsfile
verglichen
Cache Konfiguration
• coherence.jar beinhaltet coherence-cache-config.xml
• Überschreiben mittels:
• -Dtangosol.coherence.cacheconfig=my-config.xml
• Oder in coherence-tangosol-override*.xml
Cluster Konfiguration
• coherence.jar beinhaltet coherence-tangosol*.xml
• Überschreiben von Parametern mittels:
• Java System Properties
• coherence-tangosol-override*.xml im Classpath vor
coherence.jar oder mittels -Dtangosol.coherence.override
• Beispiel: Benutzung von WKAs (Well Known
Adresses) anstelle von Multicast
Exkurs Serialisierung – Portable Object
Format
• Vergleich
• XML
• <date format=“java.util.Date”>2008-07-03</date>
• 47 Zeichen (möglich 94 bytes abhängig vom Encoding)
• Java (raw long)
• 64 bits = 8 bytes
• Java (java.util.Date mit ObjectOutputStream)
• 46 bytes
• In ExternalizableLite (raw long)
• 8 bytes
• In POF
• 4F 58 1F 70 6C = 5 bytes
Exkurs Serialisierung – Portable Object
Format
• Eigener Pof Serializer oder Interface
com.tangosol.io.pof.PortableObject implementieren:
Clustering Java Prozesse
• Cluster beitreten oder
neuen Cluster formieren
• cluster enthält
Information über
•
•
•
•
Cluster Name
Members
Locations
Processes
• Es gibt keinen “Master
Server”
• Es gibt keine “Server
Registries”
Cluster cluster = CacheFactory.ensureCluster();
Einen Cluster verlassen
• Verlässt den aktuellen
Cluster
• shutdown blockt bis
Daten “sicher”
CacheFactory.shutdown();
Benutzen des Caches
get, put, size & remove
• CacheFactory löst
Cache Namen auf (z.B:
“mine”) wurde als Cache
konfiguriert
• NamedCache liefert
Topologie-agnostischen
Zugriff auf Information
• NamedCache
Implementierungen
implementieren
verschiedene Interfaces:
• java.util.Map, Jcache,
ObservableMap*,
ConcurrentMap*,
QueryMap*,
InvocableMap*
NamedCache nc = CacheFactory.getCache(“mine”);
Object previous = nc.put(“key”, “hello world”);
Object current = nc.get(“key”);
int size = nc.size();
Object value = nc.remove(“key”);
Coherence* Extensions
Benutzen des Caches
keySet, entrySet, containsKey
• Benutzung eines
NamedCache ist analog
zu java.util.Map
NamedCache nc = CacheFactory.getCache(“mine”);
Set keys = nc.keySet();
Set entries = nc.entrySet();
• Was ist gleich/anders?
• Beide nutzen (key,value)
Paare für Einträge
• Map Einträge haben kein
Ablauf (Expiration)
• Maps sind limitiert durch
Heap Space
• Caches sind
typischerweise grössenlimitiert (#Einträge oder
Speicher)
• Map ist In-Process
boolean exists = nc.containsKey(“key”);
Überwachen von Veränderungen
ObservableMap
• Überwachungen von
Veränderungen in
Echtzeit
• Optionen: Benutzung
von Filtern und Lite
Events
• Verschiedene
MapListener stehen
zur Verfügung:
• Abstract, Multiplexing...
NamedCache nc = CacheFactory.getCache(“stocks”);
nc.addMapListener(new MapListener() {
public void onInsert(MapEvent mapEvent) {
}
public void onUpdate(MapEvent mapEvent) {
}
public void onDelete(MapEvent mapEvent) {
}
});
Zusammenfassung
• Oracle Coherence realisiert In-Memory Datagrid, mit
• sehr geringe Latenzzeiten und einem hohen Durchsatz
• vorhersehbarer Skalierbarkeit für Lese- als auch
Schreibzugriff
• hoher Verfügbarkeit
• keine Single-Point-of-Failures (SPOF)
• schnellem transparentes Failover und Failback
• Zugriff auf In-Memory gehaltenen Daten (Objekte) durch
verschiedene Programmiersprachen, wie Java, .Net, und
C++
• ...
• Wertschöpfung in neuen und bestehenden
Architekturen
Coherence@Nike+ platform
https://blogs.oracle.com/fusionmiddleware/entry/hasan_session
Coherence@Nike+ platform
• Nicole Otto, Sr. Director of Consumer Digital Technology discussed the
vision of the Nike+ platform, a platform which represents a shift for NIKE
from a "product" to a "product +" experience. There are currently
nearly 8 million users in the Nike+ system who are using digitallyenabled Nike+ devices. Once data from the Nike+ device is
transmitted to Nike+ application, users access the Nike+ website or via
the Nike mobile applicatoin, seeing metrics around their daily active
lifestyle and even engage in socially compelling experiences to
compare, compete or collaborate their data with their friends. Nike
expects the number of users to grow significantly this year which will
drive an explosion of data and potential new experiences.
• To deal with this challenge, Nike envisioned building a shared platform
that would drive a consumer-centric model for the company. Nike built
this new platform using Oracle Coherence and Oracle Exadata. Using
Coherence, Nike built a data grid tier as a distributed cache, thereby
provide low-latency access to most recent and relevant data to
consumers. Nicole discussed how Nike+ Digital Sports Platform is
unique in the way that it utilizes the Coherence Grid. Nike takes
advantage of Coherence as a traditional cache using both cache-aside
and cache-through patterns. This new tier has enabled Nike to create a
horizontally scalable distributed event-driven processing architecture.
Current data grid volume is approximately 150,000 request per minute
with about 40 million objects at any given time on the grid.
Weitere Informationen
• [email protected]
• otn.oracle.com (Oracle Technology Network)
• Download
• Oracle TimesTen In-Memory Database /
Oracle In-Memory DB Cache
• Oracle Coherence Data Grid
• coherence.oracle.com
Herunterladen