<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