Building Real-time Data in Web Applications with Node · Building Real-time Data in Web...
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– [email protected]–@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