Building Real-time Data in Web Applications with Node · Building Real-time Data in Web...

Post on 06-Sep-2018

216 views 0 download

Transcript of Building Real-time Data in Web Applications with Node · Building Real-time Data in Web...

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

BuildingReal-timeDatainWebApplicationswithNode.js

DanMcGhanOracleDeveloperAdvocateJavaScriptandHTML5March,2017

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

SafeHarborStatementThefollowingisintendedtooutlineourgeneralproductdirection.Itisintendedforinformationpurposesonly,andmaynotbeincorporatedintoanycontract.Itisnotacommitmenttodeliveranymaterial,code,orfunctionality,andshouldnotberelieduponinmakingpurchasingdecisions.Thedevelopment,release,andtimingofanyfeaturesorfunctionalitydescribedforOracle’sproductsremainsatthesolediscretionofOracle.

3

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Whoareyou?

4

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Aboutme• DanMcGhan–OracleDeveloperAdvocate– FocusonJavaScriptandHTML5

• ContactInfo– dan.mcghan@oracle.com–@dmcghan– jsao.io

5

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Agenda

Howwegothere

Wherewe’reat

Mixinginthedatabase

1

2

3

6

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Demotime!

7

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Agenda

Howwegothere

Wherewe’reat

Mixinginthedatabase

1

2

3

8

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 9

WebBrowser WebServer

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 10

WebBrowser WebServer

HTTPrequest

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 11

WebBrowser WebServer

HTTPresponse

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 12

WebBrowser WebServer Database

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 13

WebBrowser WebServer Database

HTTPrequest

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 14

WebBrowser WebServer Database

DBdriverrequest

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 15

WebBrowser WebServer Database

DBdriverresponse

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 16

WebBrowser WebServer Database

HTTPresponse

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 17

WebBrowser WebServer Database

Transactions

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 18

WebBrowser WebServer Database

Sharding

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 19

WebBrowser WebServer Database

Auto-Scaling Sharding

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 20

WebBrowser WebServer Database

Auto-Scaling ShardingLotsO’Users

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 21

WebBrowser WebServer Database

Auto-Scaling ShardingLotsO’Users

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 22

WebBrowser WebServer Database

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 23

WebBrowser WebServer Database

WhataboutsubsequentDBchanges?

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 24

WebBrowser WebServer Database

HTTPrequest

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 25

WebBrowser WebServer Database

HTTPrequest

Notpossibleforgoodreasons

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Thusbeganthequesttosimulate pushingdata…

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Techniquestobridgethegap• Foreverframe• Ajaxpolling• Ajaxlongpolling• HTML5ServerSentEvents

27

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Agenda

Howwegothere

Wherewe’reat

Mixinginthedatabase

1

2

3

28

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Newtechnologieshaveemerged• WebSocket– Allowsbi-directionalcommunication– StartswithHTTP(S)andthenupgradestoWebSocket– Greatforserverstopushtoclients

• WebRTC– Enablesdirect,peer-to-peerconnectionsovertheweb• Nomiddle-mangreatlyreduceslatency• RequiresaTURNservertogetclientsconnecteddirectly

– Greatfor• Streamingaudio/video• Communicatingarbitrarydata(thinkgames)

29

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 30

CurrentWebRTC support

http://caniuse.com/#search=webrtc

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 31

CurrentWebSocket support

http://caniuse.com/#search=websocket

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

WebSocket example

https://developer.mozilla.org/en-US/docs/Web/API/WebSocket

32

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Socket.IO• 2parts:client-sideandserver-side– Startswithlong-polling,upgradestoWebSocket ifpossible

• SimpleAPIwithgreatfeatures–Multiplexing/namespacing support(separatechannelsoverthesameconnection)– Rooms(groupuserswithinanamespace)– Auto-reconnect

33

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 34

WebBrowser WebServer Database

Codereview

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Agenda

Howwegothere

Wherewereat

Mixinginthedatabase

1

2

3

35

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 36

DatabaseEvents Communication

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 37

DatabaseEvents Communication• Triggers

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

• DMLTriggers– BEFOREINSERT– AFTERUPDATE– INSTEADOFDELETE(forviews)

• SystemTriggers– AFTERLOGON– BEFOREDROP

38

Triggers:2maintypes

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Icouldhaveusedaninserttrigger…

39

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Icouldhaveusedaninserttrigger…

40

butthatwouldbebad.

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 41

DatabaseEvents Communication• Triggers• Scheduler

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

DBMS_SCHEDULER• Arobustschedulingtool

42

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Icouldhaveusedaninserttriggerw/scheduler

43

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 44

DatabaseEvents Communication• Triggers• Scheduler• AdvancedQueuing(AQ)w/Notification

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

AdvancedQueuing

45

• Adurable,scalablequeuingframeworkinthedatabase– Hasanenqueue notificationfeaturetoavoidpolling

• Point-to-pointmessaging

• Publish/Subscribemode

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 46

DatabaseEvents Communication• Triggers• Scheduler• AdvancedQueuing(AQ)w/Notification• ContinuousQueryNotification

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

ContinuousQueryNotification

47

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 48

DatabaseEvents Communication• Triggers• Scheduler• AdvancedQueuing(AQ)w/Notification• ContinuousQueryNotification

• UTL_TCP• UTL_HTTP• UTL_SMTP&UTL_MAIL

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 49

DatabaseEvents Communication• Triggers• Scheduler• AdvancedQueuing(AQ)w/Notification• ContinuousQueryNotification

• UTL_TCP• UTL_HTTP• UTL_SMTP&UTL_MAIL• APEX_WEB_SERVICE

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

APEX_WEB_SERVICE• AnAPIprovidedbyApplicationExpress

50

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 51

WebBrowser WebServer Database

Codereview

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 52

DatabaseEvents Communication• Triggers• Scheduler• AdvancedQueuing(AQ)w/Notification• ContinuousQueryNotification

• UTL_TCP• UTL_HTTP• UTL_SMTP&UTL_MAIL• APEX_WEB_SERVICE• NativeDriverSupport

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

Whatthefuturecouldlooklike…

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.|

• OracleJET

• Socket.IO (client)

• Node.js

• Socket.IO (server)

54

• Triggers

• Scheduler

• AdvancedQueuing– Usersguide– DBMS_AQ– DBMS_AQADM– Types

• ContinuousQueryNotification– Usersguide– Types

• APEX_WEB_SERVICE

Nextsteps:learnandcode!WebBrowser WebServer Database

Copyright©2017, Oracleand/oritsaffiliates.Allrightsreserved.| 56

WebBrowser AppServer Database