JavaScript in SAP HANA Das Schöne und das Biest? Dr. Ralph Guderlei JAX 2014



Ähnliche Dokumente
Hands-on für UI5-Anwendung auf HANA

Microsoft Dynamics NAV 2013 SOAP und OData Webservices mit.net nutzen Dipl.-Inf. (FH) Ingo Jansen

Die Alternative zum Web-Form Modell

SAP NetWeaver Gateway. 2013

Swetlana Stickhof. Universität Heidelberg

NoSQL mit Postgres 15. Juni 2015

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick Parameterübergabe...

CLR-Integration im SQL-Server. Alexander Karl

Moderne Benutzeroberflächen für SAP Anwendungen

6.9 Java Server Pages

Frontend-Entwicklung mit JavaScript

VSTO Was gibt es Neues in der Office Entwicklung? Lars Keller netcreate OHG

APEX: from past to present

RIPS. Automatisierte Schwachstellenerkennung in PHP-Software mittels statischer Quellcode-Analyse. BSI Deutscher IT-Sicherheitskongress

Oracle und LDAP. Zugriff auf LDAP-Daten aus einer Oracle-DB. Martin Busik

LT 56 - NODE.JS ES GIBT AUCH SCHÖNE MOMENTE. Ralf Enderle

Abschlussarbeiten für StudentInnen

Web Sockets mit HTML5. Quelle:

Copyr i g ht 2014, SAS Ins titut e Inc. All rights res er ve d. HERZLICH WILLKOMMEN ZUR VERANSTALTUNG HADOOP

Prozedurale Datenbank- Anwendungsprogrammierung

REST-API mit Node, Express und MongoDB

PostgreSQL in großen Installationen

EPO Consulting GmbH. Ihr Partner für HTML5 und SAP UI5 Apps. Stand 2015/04. EPO Consulting GmbH - 1 -

Copyr i g ht 2014, SAS Ins titut e Inc. All rights res er ve d. HERZLICH WILLKOMMEN ZUR VERANSTALTUNG VISUAL ANALYTICS

Mobile Backend in der

Release Automation für Siebel

Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006

Oracle 12c: Neuerungen in PL/SQL. Roman Pyro DOAG 2014 Konferenz

Wolkig bis heiter. Andreas Wismann WHEN OTHERS. APEX als Drehkreuz für Web Service-Anwendungen

CouchDB & CouchApps. Strukturlose Speicherung von Daten und Anwendungen. B1 Systems GmbH. March 18,

Elasticsearch aus OPS-Sicht Teil1. Markus Rodi Karlsruhe,

Innovative Use Cases & User Interfaces mit SAP Fiori & SAPUI5

Archive / Backup System für OpenVMS

drupal + nodejs erste - fl@flink-solutions.de

Apollo Überblick. Klaus Kurz. Manager Business Development Adobe Systems Incorporated. All Rights Reserved.

Open Source. Hendrik Ebbers 2015

Dokumentenorientierte Datenbanken - MongoDB

Geocom UC GEONIS: Status und Blick in die Zukunft. Christoph Spörri

Die perfekte Online-Hilfe auf Basis von HTML5 und Open-Source- Komponenten. Jochen Marczinzik , tekom Führjahrstagung

Grundlagen und Best Practices bei der SharePoint Entwicklung

Der Oracle Mobile Cloud Service

Webengineering. jquery

Übung 1: Von einer naiven JavaScript Applikation zu einem modernen Front-End Build:

Grid-Systeme. Betrachtung verschiedener Softwareplattformen zur Realisierung von Grids und Vorstellung des Globus Toolkit Grid Systeme 1

NoSQL Datenbanken am Beispiel von CouchDB

OERA OpenEdge Reference Architecture. Mike Fechner PUG Infotag 19. Mai 05 Frankfurt

SP2013 Search Driven Publishing Model

à la Carte KMU - Lösungen im Alltag für Filemaker und das Web

Enterprise Application Integration Erfahrungen aus der Praxis

BTree.dll - Balancierte und verkettete Bäume. Ecofor. BTree.dll. Realisiert mit Microsoft Visual Studio /9

Web 2. Gang. Python User Group Köln Christopher Arndt

Visual Studio 2012 Windows 8 und.net 4.5. Hans Peter Bornhauser, Noser Engineering AG Fachbereichsleiter.NET, Digicomp AG

ALM As-A-Service TFS zur hausinternen Cloud ausbauen

The linux container engine. Peter Daum

The app the crashes, before the breakpoint is reached: Code to the event:

Multimedia im Netz Wintersemester 2011/12

Werkzeugbasierte Entwicklung von Benutzeroberflächen mit CDA-Templates und ART DECOR

EXASOL Anwendertreffen 2012

Betroffene Produkte: Alle Versionen von Oracle Forms (3.0-10g, C/S und Web), Oracle Clinical, Oracle Developer Suite

Sonnenfinsternis in der Technischen Redaktion

Aktuelle Sicherheitsprobleme im Internet: Angriffe auf Web-Applikationen

Web APIs auf dem Prüfstand Volle Kontrolle oder fertig mit den Azure Mobile Services?

Zend PHP Cloud Application Platform

Backend. Hochschule Darmstadt, Fachbereich Informatik, Wintersemester 2016/2017. Christopher Dörge, Thomas Sauer, David Müller

ZSDGMDZFGW... Zehn Sicherheitsprobleme, die gerne mit dem ZendFramework gebaut werden. Ben Fuhrmannek #phpug-köln

APEX und Phonegap? Das kann APEX doch mit HTML5! APEX connect Düsseldorf, 10. Juni 2015 Daniel Horwedel. APEX und Phonegap?

Freebase Eine Datenbank mit RDF-Tripeln zu Personen, Orten, Dingen( )

Immer mehr lebt mobil

SCHNELLEINSTIEG ZUM TOOL NODEBUILDER

SMARTtill Server mit Manager

Uwe Baumann artiso Solutions

Suchen und Finden mit Lucene und Solr. Florian Hopf

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel Michael Kluge (michael.kluge@tu-dresden.

Scala & Lift. Ferenc Lajko

EPOKO.net. Frank Schwichtenberg. SourceTalk 2009 Göttingen,

Allgemeines. veröffentlicht unter lizensiert unter. Creative Commons BY-SA 3.0. XQuery in MS SQL Server 2005

JavaScript in Drupal

Eclipse Equinox als Basis für Smart Client Anwendungen. Christian Campo, compeople AG, Java Forum Stuttgart 2007

IntelliJ IDEA. Gliederung. Was ist IntelliJ IDEA? Lizenzmodell Warum IntelliJ einsetzen? IntelliJ und Eclipse Demo. Blick über den Eclipse-Tellerrand

easylearn Webservice lsessionservice Interface für Single Sign On (SSO)

Open Source als de-facto Standard bei Swisscom Cloud Services

Web-Anwendungsentwicklung mit dem Delivery Server

Karim El Jed, Lars Keller netcreate OHG. VSTO in der Praxis

Dokumentation für das Web-basierte Abkürzungsverzeichnis (Oracle mod_plsql / Apache)

BIW - Überblick. Präsentation und Discoverer Demonstration - Teil 1 - Humboldt Universität zu Berlin am 10. Juni 2004

Risiko Modellierung mit PillarOne PillarOne Risk Management meets Open Source

Interaktionen in der Office-Welt mit.net

Next Generation CMS. API zu ihrem Content

Werkzeugbasierte Entwicklung von Benutzeroberflächen mit CDA-Templates und ART DECOR

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs

Datenbank-Refactoring mit LiquiBase

MHP Real-Time Business Solution Ihre Lösung zur Harmonisierung und Analyse polytechnischer Messdaten

Control-M Workload Change Management 8

Infrastruktur entwickeln mit Chef

Nico Orschel AIT GmbH & Co KG Marc Müller 4tecture GmbH. 95 Prozent brauchen es, 5 Prozent machen es: Load Testing mit VS leicht gemacht

Business Applika-onen schnell entwickeln JVx Framework - Live!

Der Beginn einer wunderbaren Freundschaft von Stefan Schnell

Modul 122 VBA Scribt.docx

Integration, Migration und Evolution

Transkript:

JavaScript in SAP HANA Das Schöne und das Biest? Dr. Ralph Guderlei JAX 2014

Agda Serverseitiges Javascript SAP HANA vs. Node.js Fazit 2

Typische Anwdung Web Mobile REST Geschäftslogik Datbank 3

Warum Serverseitiges Javascript? Reduzierung der Anzahl der verwdet Sprach Interessante Features von JavaScript insb. Funktionale Konzepte Effizite Umsetzung von Projekt hohe Geschwindigkeit der Innovation Performance z.b. durch Async/Non-blocking IO 4

Node.js Erstes Release: Mai 2009 Runtime : Google v8 Server für TCP, DNS, HTTP, Single-Threaded Evt Loop Non-blocking IO Viele Module (ca. 70.000) Op Source 5

Node.js ME(A)N Stack Node.js Service-Frameworks REST: Restify/express OData: Jaydata Dathaltung Mongoose MongoDB UI: Angular.js Utilities Q lodash 6

SAP Hana Erstes Release: November 2010 SpaIt-oritierte In-Memory Datbank Repository, Staging-Mechanismus Javascript-Runtime (XS Engine) Engine: Spidermonkey API/Library basiert auf JQuery kommerziell 7

Vergleichsszari Tooling normale REST-Services ODATA Geschäftslogik Abfrag Transformation von Dat Infrastruktur Security 8

Node.js - Tooling Primär Command Line-basiert Etablierte Tools: NPM (Node Package Manager) Grunt (Task runner, vergleichbar mit Ant) Viele gute Testtools (Jasmine, Karma) IDE-Unterstützung IntelliJ Idea Visual Studio Instabilität: Jeder Tag ein neues Buildsystem 9

SAP Hana - Arbeitsweise Integrierte Toolchain auf Eclipse-Basis Editor für Javascript, SQLScript Interaktion mit Repository und Staging 10

HANA Studio

Node.js REST-Services Routdefinition server.post('/items', items.create); // url with path param server.get('/items/:itemid', items.fetchone); // versioned url via AcceptVersion header server.get({path: '/items', version: '1.0.0'}, items.listv1); Callback exports.fetchone = function (req, res, next) { model.items.findbyid(req.params.itemid, function (err, data) { assert.iferror(err); res.sd(data); return next(); }); }; 12

SAP Hana REST-Services mit XSJS Ansicht Kopf-/Fußzeile query = 'SELECT NAME, DATEN FROM "RepairService.data::ZORIGINALDOKUMENT" WHERE QMNUM =?'; preparedstatemt = connection.preparestatemt(query); preparedstatemt.setnstring(1, meldungsnummer); var rs = preparedstatemt.executequery(); var body = '['; while (rs.next()) { if (!first) { body += ','; first = false; } body += '{ "name" : "' + rs.getnstring(1) + '", "data" : "'; body += base64arraybuffer(rs.getblob(2)) + '" }'; } body += ']'; $.response.contttype = 'application/json'; $.response.setbody(body); $.response.status = $.net.http.ok; 13

ODATA Op Data Access Protocol Entwickelt von Microsoft Basiert auf AtomPub Alternativ: Gdata, RDF Versuch einer semantisch Standardisierung von REST-Services SOAP für REST-Services Erleichtert durch die Standardisierung die (automatisierte) Verwdung von REST-Services 14

ODATA Beispiel Metadat <edmx:edmx xmlns:edmx="http://schemas.microsoft.com/ado/2007/06/edmx" Version="1.0"> <edmx:dataservices xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" m:dataserviceversion="2.0"> <Schema xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://schemas.microsoft.com/ado/2007/05/edm" Namespace="reparatur.services"> <EntityType Name="KundType"> <Key> <PropertyRef Name="KUNNR"/> </Key> <Property Name="KUNNR" Type="Edm.String" Nullable="false" MaxLgth="10"/> <Property Name="LAND1" Type="Edm.String" Nullable="false" MaxLgth="3"/> <Property Name="NAME1" Type="Edm.String" Nullable="false" MaxLgth="35"/> <Property Name="ORT01" Type="Edm.String" Nullable="false" MaxLgth="35"/> <Property Name="PSTLZ" Type="Edm.String" Nullable="false" MaxLgth="10"/> <Property Name="STRAS" Type="Edm.String" Nullable="false" MaxLgth="35"/> <Property Name="APART" Type="Edm.String" Nullable="false" MaxLgth="40"/> </EntityType> <EntityContainer Name="kund" m:isdefaultentitycontainer="true"> <EntitySet Name="Kund" EntityType="reparatur.services.KundType"/> </EntityContainer> </Schema> </edmx:dataservices> </edmx:edmx> 15

Odata Beispiel Nutzdat <feed xml:base="http://54.83.207.87:8000/repairservice/services/kund.xsodata/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/atom"> <title type="text">kund</title> <id>http://somehost:8000/repairservice/services/kund.xsodata/kund</id> <author> <name/> </author> <link rel="self" title="kund" href="kund"/> <try> <id>http://somehost:8000/repairservice/services/kund.xsodata/kund('1')</id> <title type="text"></title> <author> <name/> </author> <link rel="edit" title="kund" href="kund('1')"/> <contt type="application/xml"> <m:properties> <d:kunnr m:type="edm.string">1</d:kunnr> <d:land1 m:type="edm.string">de</d:land1> <d:name1 m:type="edm.string">kunde1</d:name1> <d:ort01 m:type="edm.string">ulm</d:ort01> <d:pstlz m:type="edm.string">89073</d:pstlz> <d:stras m:type="edm.string">beim Alt Fritz 1</d:STRAS> <d:apart m:type="edm.string">ansprechpartner 1</d:APART> </m:properties> </contt> </try> </feed>

Node.js OData Server require('odata-server'); $data.entity.extd("todo", { Id: { type: "id", key: true, computed: true }, Task: { type: String, required: true, maxlgth: 200 }, DueDate: { type: Date }, Completed: { type: Boolean } }); $data.entitycontext.extd("tododatabase", { Todos: { type: $data.entityset, elemttype: Todo } }); $data.createodataserver(tododatabase, '/todo', 52999, 'localhost');

SAP HANA ODATA-Service service namespace "reparatur.services" { "JAX_DEMO"."RepairService.data::ZGERAETE" as "Geraete"; } 18

Node.js - Dattransformation Stream API ermöglicht UNIX-artige Pipeline - Konstrukte model.tests.find({_id: {$in: result}}).lean().batchsize(1000).stream().pipe(sometransformation).pipe(anothertransformation).pipe(res); 19

SAP HANA - Dattransformation Sprache: SQL Script Wizzards zum Erstell von Views im Hana Studio l l l CREATE PROCEDURE ProcWithResultView(IN id INT, OUT o1 CUSTOMER) LANGUAGE SQLSCRIPT READS SQL DATA WITH RESULT VIEW ProcView AS BEGIN l o1 = SELECT * FROM CUSTOMER WHERE CUST_ID = :id; END 20

Node.js - Security Authtifizierung / Authorisierung über NPM-Modul z.b. Passport.js Typischerweise HTTP Authtication oder OpID/OAuth 21

SAP HANA - Security Integriertes Rechte/Roll-Konzept Single-Sign-On via Kerberos/SAML Integrierter Auditing Trail bis auf Datbank-Ebe 22

All together now Node Hana Modul: clit.prepare('call * from DUMMY where X =?', function (err, statemt){ if (err) { return console.error('error:', err); } statemt.exec([1], function (err, rows) { if (err) { return console.error('error:', err); } res.sd(json.stringify(rows)); return next(); }); });

Node.js Pros & Cons Großes Op Source Ökosystem Leichtgewichtige Entwicklung Gute Performance Dynamische Entwicklung CPU-intsive Aufgab limitier Performance (node ist single threaded) 24

SAP Hana Pros & Cons Odata-Support Viele Standards Gutes Tooling Integrierte Lösung Lizzkost Hardware-Bundle Widersprüchliche Dokumtation zu SapUI5 im Netz ungewöhnliches Doku-Format (PDF) 25

Danke für Ihre Aufmerksamkeit! Ralph.guderlei@exxcellt.de @rguderlei Demo am Stand von exxcellt Solutions 26