Cache Pattern for Offline Web Applications

Size: px
Start display at page:

Download "Cache Pattern for Offline Web Applications"

Transcription

1

2 Cache Pattern for Offline Web Applications Robert Kroeger June 27, 2009 Post your questions for this talk on Google Moderator: code.google.com/events/io/questions

3 Why Mobile Web Applications? Pro: server-side features that cannot be accommodated in a mobile device Mobile devices have limited storage Mobile devices have limited CPU Pro: ease of distribution No app store approval process Launch on your schedule Update frequently But: use of wireless connections can make this much too slow 3

4 The Connection Problem EDGE/3G Internet Server High latency Flaky Connection 4

5 Caching Keeps Mobile Web Apps Responsive No Synchronous Connection From Web UI to Server Mobile Device Web application UI Internet Server Update UI Mobile Device Update Cache Web application UI Devicelocal Cache Internet Server 5 Modify Cache Push To Server

6 Implementing Cache Pattern Storing the data Cached Content to UI Cache Changes from server Changes from UI Browser platform DB Updates bound for Server 6

7 Cache Storage: Structured Storage Structured storage capability in HTML5 and Gears A SQL database Local to the client Can access in absence of network connection Keep the cached contents here Persistent across browser restarts ACID properties maintain consistent database state 7

8 The Asynchronous Programming Model Structured Storage: Gears!= HTML5 Gears JavaScript Thread Function call database action Return HTML5 JavaScript Thread SQL Execution Thread database action Function call Other JavaScript Function call (back) 8

9 Portability? Gears vs HTML5 Structured Storage SQL database Synchronous Programming model Asynchronous programming model Android Platform iphone HTML5 Structured Storage Google Gears Database 9

10 Web Storage Portability Layer (WSPL) One API For Gears and HTML5 Statement HTML5 Structured Storage Common API Results Transactions Google Gears Asynchronous worker Code to one common API Asynchronous programming model Gears worker implements the asynchronous programming model above synchronous database Available at code.google.com/ webstorageportabilitylayer 10

11 Build Portable Cache above WSPL Cached Content to UI Cache Changes from server Changes from UI Browser platform WSPL API DB Updates bound for Server Asynchronous interface 11

12 Asynchronous Cache Architecture Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange Get Apply Changes Cache Server Merge Ack Changes execute callback Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost WSPL API 12

13 SimpleNotes A Concrete Example of the Cache Pattern Toy application keep notes server side left as audience exercise Demonstrates use of the WSPL library Included with WSPL Three different pages in the application List Notes Page Time Time Subject... Subject New Click Back View Note Subject Note content Save Edit Edit Note Subject Note content 13

14 Key Cache Design Aspects Hit Determination: what data is cached? A contiguous range of notes Refresh: when to update the cached data with server changes? Every request for a list of notes Eviction: what to discard to make room for new data Coherency: how to merge server changes into cache Always send updates ahead of queries Reapply actions for unacknowledged updates 14

15 Simple Notes Tables google.wspl.simplenotes.cache.create_cached_notes_ = new google.wspl.statement( 'CREATE TABLE IF NOT EXISTS cached_notes (' + 'notekey INTEGER UNIQUE PRIMARY KEY,' + 'subject TEXT,' + 'body TEXT' + ');' ); Separate write buffer: actions vs state google.wspl.simplenotes.cache.create_write_buffer_ = new google.wspl.statement( 'CREATE TABLE IF NOT EXISTS write_buffer (' + 'sequence INTEGER UNIQUE PRIMARY KEY AUTOINCREMENT,' + 'notekey INTEGER,' + 'status INTEGER,' + 'subject TEXT,' + 'body TEXT' + ');' ); google.wspl.simplenotes.cache.determine_min_key_ = new google.wspl.statement( 'SELECT MIN(noteKey) as minnotekey FROM cached_notes;'); google.wspl.simplenotes.cache.determine_max_key_ = new google.wspl.statement( 'SELECT MAX(noteKey) as maxnotekey FROM cached_notes;'); 15

16 Simple Notes Creation google.wspl.simplenotes.cache.prototype.startcache = function(callback) { var statc = 0; var self = this; var perstatcallback = function(tx, result) { google.logger('perstatcallback'); if (statc == 4) { self.start_ = (result.isvalidrow())? result.getrow().minnotekey : -1; self.serverstart_ = self.start_; // Temporary. Remove when server exists. } else if (statc == 5) { self.end_ = (result.isvalidrow())? result.getrow().maxnotekey : -1; self.serverend_ = self.end_; // Temporary. Remove when server exists. } statc++; }; this.dbms_.executeall([ google.wspl.simplenotes.cache.create_cached_notes_, google.wspl.simplenotes.cache.create_write_buffer_, google.wspl.simplenotes.cache.create_update_trigger_, google.wspl.simplenotes.cache.create_replay_trigger_, google.wspl.simplenotes.cache.determine_min_key_, google.wspl.simplenotes.cache.determine_max_key_], {onsuccess: perstatcallback, onfailure: this.logerror_}, {onsuccess: callback, onfailure: this.logerror_}); google.logger('finished startcache'); }; Asynchronous here too 16

17 getvalues Hit Call Flow Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange createtransaction Get Apply Changes Cache Server Merge Ack Changes execute intransactiongetnotes execute callback accumulateresults Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost WSPL API 17

18 getvalues Example Code (1) google.wspl.simplenotes.cache.prototype.getvalues = function(type, query, valuescallback) { // Reduce any query to what would be available from the server query[0] = Math.max(this.serverStart_, query[0]); query[1] = Math.min(this.serverEnd_, query[1]); if (type == 'list') { this.getnotelist_(query[0], query[1], valuescallback); } else if (type == 'fullnote') { this.getonenote_(query[0], valuescallback); } }; Same idea as getnotelist_ 18

19 getvalues Example Code (2) google.wspl.simplenotes.cache.prototype.getnotelist_ = function(start, end, valuescallback) { var notes = []; var accumulateresults = function(tx, result) { for(; result.isvalidrow(); result.next()) { notes.push(result.getrow()); } }; var intransactiongetnotes = function(tx) { tx.execute(google.wspl.simplenotes.cache.list_cached_notes_. createstatement([start, end]), { onsuccess: accumulateresults, onfailure: this.logerror_}); }; Need a cache membership scheme var hit = this.iscachehit_(start, end); this.dbms_.createtransaction(intransactiongetnotes, {onsuccess: function() { valuescallback(notes, hit); }, onfailure: this.logerror_}); if (hit) { this.fetchfromserver(this.start_, this.end_); // Refresh } else { this.fetchfromserver(math.min(this.start_, start), Math.max(this.end_, end)); this.lastmiss_ = {callback: valuescallback, start: start, end: end}; } }; In transaction getnotelist intransactiongetnotes accumulateresults valuescallback 19

20 Hitting and Missing iscachehit Application Specific Simple approach here: cache contains a contiguous range of notes. google.wspl.simplenotes.cache.prototype.iscachehit_ = function(start, end) { return start >= this.start_ && end <= this.end_; }; Cache maintains the start and end values in JavaScript Cache grows its range by making a server request for the missing values. Avoid database accesses 20

21 applyuichange Call Flow Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange executeall Get Apply Changes Cache ackcallback Server Merge Ack Changes execute callback Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost Update via a trigger WSPL API updatetrigger 21

22 applyuichange Code google.wspl.simplenotes.cache.insert_ui_update_ = new google.wpsl.statement( 'INSERT INTO write_buffer (' + 'notekey, status, subject, body )' + 'VALUES(?,?,?,?);'); google.wspl.simplenotes.cache.prototype.applyuichange = function(notekey, subject, body, ackcallback) { var self = this; var update = [notekey, 2 8, subject, body]; var stat = google.wspl.simplenotes.cache.insert_ui_update_.createstatement( update); this.dbms_.execute(stat, null, {onsuccess: function() { ackcallback(notekey); }, onfailure: function (error) { self.logerror_(error); ackcallback(-1); }}); }; 22

23 Why Triggers: Avoid Ping-Ponging Long Transactions Are Bad JavaScript Thread SQL Execution Thread onclick txget In transaction select txmodify update end of tx Read-modifiy-write operations are inefficient A trigger runs entirely inside SQL thread JavaScript Thread SQL Execution Thread onclick In transaction txmodify trigger update end of tx 23

24 applyuichange Trigger Code google.wspl.simplenotes.cache.create_update_trigger_ = new google.wspl.statement( 'CREATE TRIGGER IF NOT EXISTS updatetrigger ' + 'AFTER INSERT ON write_buffer ' + 'BEGIN ' + ' REPLACE INTO cached_notes ' + ' SELECT notekey, subject, body ' + ' FROM write_buffer WHERE status & 8 = 8; ' + ' UPDATE write_buffer SET status = status & ~ 8; ' + 'END;' ); status: a bit-field of states 1 The update is inflight to the server 2 The update needs to be (re)sent to the server 8 The update needs to replayed against the cache Update cache from write_buffer Trigger is only way to execute several statements 24

25 insertupdate Call Flow Request Cached Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange Callback if servicing a cache miss Get Apply Changes createtransaction Cache callback execute Server Merge Ack Changes intrans executeall afterinsert Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost Coherency: replay actions WSPL API replaytrigger 25

26 insertupdate Code google.wspl.simplenotes.cache.prototype.insertupdate = function(notes) { var self = this; var stats = []; var start = notes[0].notekey; var end = notes[0].notekey; for (var i = 0; i < notes.length; i++) { stats.push(google.wspl.simplenotes.cache.insert_note_. createstatement([notes[i].notekey, notes[i].subject, notes[i].body])); start = Math.min(start, notes[0].notekey); end = Math.max(end, notes[0].notekey); } stats.push(google.wspl.simplenotes.cache.evict_.createstatement([start, end])); stats.push(google.wspl.simplenotes.cache.force_replay_); var intrans = function(tx) { self.start_ = start; self.end_ = end; tx.executeall(stats); }; Must update here to align JS change with transaction boundary var afterinsert = function(tx) { if (this.lastmiss_ && this.iscachehit_(this.lastmiss_.start, this.lastmiss_.end)) { this.lastmiss_.callback(notes); this.lastmiss_ = undefined; } }; this.dbms_.createtransaction(intrans, {onsuccess: afterinsert, onerror: this.logerror_}); }; Callback if this update from the server satisfies a pending request 26

27 fetchfromserver Call Flow Handling Cache Misses and Refresh Request Cache-miss Content: getvalues Cached Content to UI: valuecallback Acknowledge UI Change: ackcallback Changes from UI Action: applyuichange executeall Get Apply Changes Cache accumulateupdates Server Merge Ack Changes ackandpost execute callback Server response: ackchange Server response: insertupdate Updates bound for Server: sendxhrpost Queries bound for Server: sendxhrpost WSPL API 27

28 fetchfromserver Code google.wspl.simplenotes.cache.prototype.fetchfromserver = function(start, end) { var now = this.dbms_.getcurrenttime(); if (start >= this.start_ && end <= this.end_ && now - this.lastrefresh_ < google.wspl.simplenotes.cache.time_between_refresh_) { return; } var updates = []; var self = this; var flag = 1; var sql = []; sql.push(google.wspl.simplenotes.cache.get_updates_to_resend_); sql.push(google.wspl.simplenotes.cache.mark_as_inflight_); var accumulateupdates = function(tx, rs) { if (flag == 1) { for(; rs.isvalidrow(); rs.next()) { updates.push(['u', rs.getrow()]); } flag++; } }; var ackandpost = function() { updates.push(['q', {start: start, end: end}]); self.sendxhrpost(updates); }; this.dbms_.executeall(sql, {onsuccess: accumulateupdates, onfailure: this.logerror_}, {onsuccess: ackandpost, onfailure: this.logerror_}); }; 28

29 Maintaining Server Consistency Resend failures before queries, then reapply actions Time! 1 Q In Flight 1 2 Q ackchange Write Buffer sendxhrpost ackchange fetchfromserver applyuichange fetchfromserver applyuichange insertupdate 29

30 Miscellaneous Tidbits Messages to server JSON-encoded via XHR POST See the WSPL open source distribution for the remaining missing bits Asynchronous model decouples the execution order from the display order Triggers crucial to rapid development SimpleNotes glosses over some hard problems: Database too slow to serve as application model Too much data traffic 30

31 Summary Cache pattern workable in real products: Mobile Gmail for iphone and Android. WSDL library same Workable local storage solution across iphone and Android 31

32 Q & A Post your questions for this talk on Google Moderator: code.google.com/events/io/questions

33

Beyond Cookies: Persistent Storage for Web Applications. Brad Neuberg Google

Beyond Cookies: Persistent Storage for Web Applications. Brad Neuberg Google Beyond Cookies: Persistent Storage for Web Applications Brad Neuberg Google What? What? 4K What? 4K 100K What? 4K 100K 500K What? 4K 100K 500K >1 MB What? Name/Value Storage Database Static Files Why?

More information

Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and

Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and Copyright is owned by the Author of the thesis. Permission is given for a copy to be downloaded by an individual for the purpose of research and private study only. The thesis may not be reproduced elsewhere

More information

IT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including:

IT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including: IT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including: 1. IT Cost Containment 84 topics 2. Cloud Computing Readiness 225

More information

Using HTML5 Offline Storage. Brady Eidson Safari and WebKit Engineer

Using HTML5 Offline Storage. Brady Eidson Safari and WebKit Engineer Using HTML5 Offline Storage Brady Eidson Safari and WebKit Engineer 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 So what can I do without the cloud? 22 What You ll Learn Make apps accessible offline

More information

Creating a Client-Side Search Engine with Gears. Brad Neuberg, Gears

Creating a Client-Side Search Engine with Gears. Brad Neuberg, Gears Creating a Client-Side Search Engine with Gears Brad Neuberg, Gears Agenda Gears PubTools Search Gears Modules Search Architecture Dojo Tips, Tricks, and Code JavaScript CSS HTML 5 HTML What is Gears?

More information

Asynchronous JavaScript + XML (Ajax)

Asynchronous JavaScript + XML (Ajax) Asynchronous JavaScript + XML (Ajax) CSE 190 M (Web Programming), Spring 2008 University of Washington References: w3schools, Wikipedia Except where otherwise noted, the contents of this presentation are

More information

Introduction to Gears. Brad Neuberg Google

Introduction to Gears. Brad Neuberg Google Introduction to Gears Brad Neuberg Google JavaScript CSS HTML What is Gears? JavaScript CSS HTML What is Gears? JavaScript CSS HTML What is Gears? JavaScript CSS HTML What is Gears? JavaScript CSS HTML

More information

Performance Case Study

Performance Case Study Performance Case Study @Fabian_Frank Yahoo! Search, Engineer Youthmedia.eu, Volunteer A Dynamic Website self-contained App self-contained App self-contained App node v0.4.x multi-core

More information

Creating a Client-Side Search Engine with Gears and Dojo. Brad Neuberg, Google

Creating a Client-Side Search Engine with Gears and Dojo. Brad Neuberg, Google Creating a Client-Side Search Engine with Gears and Dojo Brad Neuberg, Google Agenda Gears PubTools Search Gears Modules Search Architecture Dojo Tips, Tricks, and Code JavaScript CSS HTML What is Gears?

More information

AJAX for Mobile Devices

AJAX for Mobile Devices AJAX for Mobile Devices Using Apache Projects to get the job done Roland Tritsch Director PS FUSE ACCU 2009 - Apr., 23rd - Oxford (UK) Why is this relevant? Mobile is the next Desktop! The only bright

More information

Web Application with AJAX. Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar. University of Colorado, Colorado Springs

Web Application with AJAX. Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar. University of Colorado, Colorado Springs Web Application with AJAX Kateb, Faris; Ahmed, Mohammed; Alzahrani, Omar University of Colorado, Colorado Springs CS 526 Advanced Internet and Web Systems Abstract Asynchronous JavaScript and XML or Ajax

More information

MongoDB Web Architecture

MongoDB Web Architecture MongoDB Web Architecture MongoDB MongoDB is an open-source, NoSQL database that uses a JSON-like (BSON) document-oriented model. Data is stored in collections (rather than tables). - Uses dynamic schemas

More information

Tableau Server - 101

Tableau Server - 101 Tableau Server - 101 Prepared By: Ojoswi Basu Certified Tableau Consultant LinkedIn: https://ca.linkedin.com/in/ojoswibasu Introduction Tableau Software was founded on the idea that data analysis and subsequent

More information

Web application Architecture

Web application Architecture 1 / 37 AJAX Prof. Cesare Pautasso http://www.pautasso.info cesare.pautasso@usi.ch @pautasso Web application Architecture 5 / 37 Client Server Backend Response Database File System 2013 Cesare Pautasso

More information

Web Programming Step by Step

Web Programming Step by Step Web Programming Step by Step Lecture 19 Ajax Reading: 10.1-10.2 Except where otherwise noted, the contents of this presentation are Copyright 2009 Marty Stepp and Jessica Miller. Synchronous web communication

More information

<Insert Picture Here> RDBMS-based Coverage Collection and Analysis

<Insert Picture Here> RDBMS-based Coverage Collection and Analysis RDBMS-based Coverage Collection and Analysis James Roberts Coverage-driven Flow Grading coverage merge coverage merge Vault Analysis coverage merge Coverage-driven Flow Grading coverage

More information

Active Endpoints. ActiveVOS Platform Architecture Active Endpoints

Active Endpoints. ActiveVOS Platform Architecture Active Endpoints Active Endpoints ActiveVOS Platform Architecture ActiveVOS Unique process automation platforms to develop, integrate, and deploy business process applications quickly User Experience Easy to learn, use

More information

Designing dashboards for performance. Reference deck

Designing dashboards for performance. Reference deck Designing dashboards for performance Reference deck Basic principles 1. Everything in moderation 2. If it isn t fast in database, it won t be fast in Tableau 3. If it isn t fast in desktop, it won t be

More information

Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios

Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Comet and WebSocket Web Applications How to Scale Server-Side Event-Driven Scenarios Simone Bordet sbordet@intalio.com 1 Agenda What are Comet web applications? Impacts of Comet web applications WebSocket

More information

Building Offline Mobile Apps with Oracle JET and MCS

Building Offline Mobile Apps with Oracle JET and MCS Building Offline Mobile Apps with Oracle JET and MCS JavaScript Persistence and Offline Sync Library for Cordova or Browser based applications MCS Sync Express Lyudmil Pelov @lpelov Oracle A-Team Nov,

More information

Controller/server communication

Controller/server communication Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication

More information

A Library and Proxy for SPDY

A Library and Proxy for SPDY A Library and Proxy for SPDY Interdisciplinary Project Andrey Uzunov Chair for Network Architectures and Services Department of Informatics Technische Universität München April 3, 2013 Andrey Uzunov (TUM)

More information

Project Zygote. Rapid prototyping for the Internet of Things

Project Zygote. Rapid prototyping for the Internet of Things Project Zygote Rapid prototyping for the Internet of Things The Problem we set out to solve How to make interconnecting things easier? What IoT means to us Seamless interconnection between any IoT enabled

More information

Module 6 Node.js and Socket.IO

Module 6 Node.js and Socket.IO Module 6 Node.js and Socket.IO Module 6 Contains 2 components Individual Assignment and Group Assignment Both are due on Wednesday November 15 th Read the WIKI before starting Portions of today s slides

More information

0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann. presented by

0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann. presented by 0.9: Faster, Leaner and Dijit? July 25, 2007 Dylan Schiemann presented by Key Features Browser support Package/build system Easy widget building Declarative widget creation Rich built-in widget set Comprehensive

More information

! The final is at 10:30 am, Sat 6/4, in this room. ! Open book, open notes. ! No electronic devices. ! No food. ! Assignment 7 due 10pm tomorrow

! The final is at 10:30 am, Sat 6/4, in this room. ! Open book, open notes. ! No electronic devices. ! No food. ! Assignment 7 due 10pm tomorrow Announcements ECS 89 6/1! The final is at 10:30 am, Sat 6/4, in this room! Open book, open notes! No electronic devices! No food! Assignment 7 due 10pm tomorrow! No late Assignment 7 s! Fill out course

More information

NODE.JS MOCK TEST NODE.JS MOCK TEST I

NODE.JS MOCK TEST NODE.JS MOCK TEST I http://www.tutorialspoint.com NODE.JS MOCK TEST Copyright tutorialspoint.com This section presents you various set of Mock Tests related to Node.js Framework. You can download these sample mock tests at

More information

Sample Kentico Website Audit

Sample Kentico Website Audit Sample Kentico Website Audit XYX CORPORATION NOVEMBER 2017 Wakefly, Inc. 293 Boston Post Road West Suite 140, MARLBOROUGH, MA 01752 www.wakefly.com Overview 2 Code Audit Synopsis for www.xyzcorp.com The

More information

Distributed Systems. Lec 10: Distributed File Systems GFS. Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung

Distributed Systems. Lec 10: Distributed File Systems GFS. Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung Distributed Systems Lec 10: Distributed File Systems GFS Slide acks: Sanjay Ghemawat, Howard Gobioff, and Shun-Tak Leung 1 Distributed File Systems NFS AFS GFS Some themes in these classes: Workload-oriented

More information

Build Native-like Experiences in HTML5

Build Native-like Experiences in HTML5 Developers Build Native-like Experiences in HTML5 The Chrome Apps Platform Joe Marini - Chrome Developer Advocate About Me Joe Marini Developer Relations Lead - Google Chrome google.com/+joemarini @joemarini

More information

Ajax- XMLHttpResponse. Returns a value such as ArrayBuffer, Blob, Document, JavaScript object, or a DOMString, based on the value of

Ajax- XMLHttpResponse. Returns a value such as ArrayBuffer, Blob, Document, JavaScript object, or a DOMString, based on the value of Ajax- XMLHttpResponse XMLHttpResponse - A Read only field Returns a value such as ArrayBuffer, Blob, Document, JavaScript object, or a DOMString, based on the value of XMLHttpRequest.responseType. This

More information

Determining the Best Approach

Determining the Best Approach 2 Determining the Best Approach The remaining chapters of this book cover the capabilities of the BlackBerry application platform and then dig into each application development option in detail. Before

More information

MySQL & NoSQL: The Best of Both Worlds

MySQL & NoSQL: The Best of Both Worlds MySQL & NoSQL: The Best of Both Worlds Mario Beck Principal Sales Consultant MySQL mario.beck@oracle.com 1 Copyright 2012, Oracle and/or its affiliates. All rights Safe Harbour Statement The following

More information

GFS Overview. Design goals/priorities Design for big-data workloads Huge files, mostly appends, concurrency, huge bandwidth Design for failures

GFS Overview. Design goals/priorities Design for big-data workloads Huge files, mostly appends, concurrency, huge bandwidth Design for failures GFS Overview Design goals/priorities Design for big-data workloads Huge files, mostly appends, concurrency, huge bandwidth Design for failures Interface: non-posix New op: record appends (atomicity matters,

More information

Asynchronous Method Calls White Paper VERSION Copyright 2014 Jade Software Corporation Limited. All rights reserved.

Asynchronous Method Calls White Paper VERSION Copyright 2014 Jade Software Corporation Limited. All rights reserved. VERSION 7.0.10 Copyright 2014 Jade Software Corporation Limited. All rights reserved. Jade Software Corporation Limited cannot accept any financial or other responsibilities that may be the result of your

More information

HTML 5: Fact and Fiction Nathaniel T. Schutta

HTML 5: Fact and Fiction Nathaniel T. Schutta HTML 5: Fact and Fiction Nathaniel T. Schutta Who am I? Nathaniel T. Schutta http://www.ntschutta.com/jat/ @ntschutta Foundations of Ajax & Pro Ajax and Java Frameworks UI guy Author, speaker, teacher

More information

Using GWT and Eclipse to Build Great Mobile Web Apps

Using GWT and Eclipse to Build Great Mobile Web Apps Using GWT and Eclipse to Build Great Mobile Web Apps Chris Ramsdale Product Manager, GWT and Google Plugin for Eclipse Feedback: http://goo.gl/mn6y4 Twitter: #io2011 #gwt Why Are We Here? 3 The Problems

More information

Cross-compiling C++ to JavaScript. Challenges in porting the join.me common library to HTML5

Cross-compiling C++ to JavaScript. Challenges in porting the join.me common library to HTML5 Cross-compiling C++ to JavaScript Challenges in porting the join.me common library to HTML5 JUNE 24, 2015 LEVENTE HUNYADI join.me at a glance 2 join.me at a glance 3 join.me characteristics Application

More information

Web Application Development Using Spring, Hibernate and JPA

Web Application Development Using Spring, Hibernate and JPA Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days Price: CDN$3275 *Prices are subject to GST/HST Course Description: This course provides a comprehensive introduction to JPA

More information

Investigating Source Code Reusability for Android and Blackberry Applications

Investigating Source Code Reusability for Android and Blackberry Applications Investigating Source Code Reusability for Android and Blackberry Applications Group G8 Jenelle Chen Aaron Jin 1 Outline Recaps Challenges with mobile development Problem definition Approach Demo Detailed

More information

Controller/server communication

Controller/server communication Controller/server communication Mendel Rosenblum Controller's role in Model, View, Controller Controller's job to fetch model for the view May have other server communication needs as well (e.g. authentication

More information

Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation. What s in a process? Organizing a Process

Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation. What s in a process? Organizing a Process Questions answered in this lecture: CS 537 Lecture 19 Threads and Cooperation Why are threads useful? How does one use POSIX pthreads? Michael Swift 1 2 What s in a process? Organizing a Process A process

More information

Kaazing Gateway: An Open Source

Kaazing Gateway: An Open Source Kaazing Gateway: An Open Source HTML 5 Websocket Server Speaker Jonas Jacobi Co-Founder: Kaazing Co-Author: Pro JSF and Ajax, Apress Agenda Real-Time Web? Why Do I Care? Scalability and Performance Concerns

More information

10/18/2017. Announcements. NoSQL Motivation. NoSQL. Serverless Architecture. What is the Problem? Database Systems CSE 414

10/18/2017. Announcements. NoSQL Motivation. NoSQL. Serverless Architecture. What is the Problem? Database Systems CSE 414 Announcements Database Systems CSE 414 Lecture 11: NoSQL & JSON (mostly not in textbook only Ch 11.1) HW5 will be posted on Friday and due on Nov. 14, 11pm [No Web Quiz 5] Today s lecture: NoSQL & JSON

More information

Cloud Programming on Java EE Platforms. mgr inż. Piotr Nowak

Cloud Programming on Java EE Platforms. mgr inż. Piotr Nowak Cloud Programming on Java EE Platforms mgr inż. Piotr Nowak Distributed data caching environment Hadoop Apache Ignite "2 Cache what is cache? how it is used? "3 Cache - hardware buffer temporary storage

More information

Building mobile app using Cordova and AngularJS, common practices. Goran Kopevski

Building mobile app using Cordova and AngularJS, common practices. Goran Kopevski Building mobile app using Cordova and AngularJS, common practices Goran Kopevski Agenda What is cordova? How to choose proper JS framework Building mobile app using Cordova and AngularJS Common fails,

More information

Java vs JavaScript. For Enterprise Web Applications. Chris Bailey IBM Runtime Technologies IBM Corporation

Java vs JavaScript. For Enterprise Web Applications. Chris Bailey IBM Runtime Technologies IBM Corporation Java vs JavaScript For Enterprise Web Applications Chris Bailey IBM Runtime Technologies 1 What Languages do you use? 120 Percentage of Audience 100 80 60 40 20 0 Java 2 JavaScript Both What Runtimes do

More information

Jquery.ajax Call Returns Status Code Of 200 But Fires Jquery Error

Jquery.ajax Call Returns Status Code Of 200 But Fires Jquery Error Jquery.ajax Call Returns Status Code Of 200 But Fires Jquery Error The request returns http 200 OK, but the xhr status is 0, error. jquery Ajax Request to get JSON data fires error event to make an ajax

More information

A demo Wakanda solution (containing a project) is provided with each chapter. To run a demo:

A demo Wakanda solution (containing a project) is provided with each chapter. To run a demo: How Do I About these examples In the Quick Start, you discovered the basic principles of Wakanda programming: you built a typical employees/companies application by creating the datastore model with its

More information

CS 498RK FALL RESTFUL APIs

CS 498RK FALL RESTFUL APIs CS 498RK FALL 2017 RESTFUL APIs Designing Restful Apis blog.mwaysolutions.com/2014/06/05/10-best-practices-for-better-restful-api/ www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api Resources

More information

JS Event Loop, Promises, Async Await etc. Slava Kim

JS Event Loop, Promises, Async Await etc. Slava Kim JS Event Loop, Promises, Async Await etc Slava Kim Synchronous Happens consecutively, one after another Asynchronous Happens later at some point in time Parallelism vs Concurrency What are those????

More information

Real-Time SignalR. Overview

Real-Time SignalR. Overview Real-Time SignalR Overview Real-time Web applications feature the ability to push server-side content to the connected clients as it happens, in real-time. For ASP.NET developers, ASP.NET SignalR is a

More information

Copyright 2012, Oracle and/or its affiliates. All rights reserved.

Copyright 2012, Oracle and/or its affiliates. All rights reserved. 1 ADF Mobile The Data Layer 2 Mobile Device Device Services ADF Mobile Architecture Device Native Container HTML5 & JavaScript Presentation Phone Gap Native View ADF Mobile XML View ADF Controller Local

More information

JKO Content Development Kit

JKO Content Development Kit Handset Developer Guide Version 2.1 JKO Content Development Kit JKO Content Development Kit JKO Content Development Kit JKO Content Development Kit 12 November 2012 https://connect.tribalgroup.com/image%20library/forms/allitems.aspx?rootfolder=%2fimage

More information

Time Series Live 2017

Time Series Live 2017 1 Time Series Schemas @Percona Live 2017 Who Am I? Chris Larsen Maintainer and author for OpenTSDB since 2013 Software Engineer @ Yahoo Central Monitoring Team Who I m not: A marketer A sales person 2

More information

Replication features of 2011

Replication features of 2011 FOSDEM 2012 Replication features of 2011 What they were How to get them How to use them Sergey Petrunya MariaDB MySQL Replication in 2011: overview Notable events, chronologically: MySQL 5.5 GA (Dec 2010)

More information

Lab 3: Using Worklight Server and Environment Optimization Lab Exercise

Lab 3: Using Worklight Server and Environment Optimization Lab Exercise Lab 3: Using Worklight Server and Environment Optimization Lab Exercise Table of Contents Lab 3 Using the Worklight Server and Environment Optimizations... 3-4 3.1 Building and Testing on the Android Platform...3-4

More information

Manjunath Subburathinam Sterling L2 Apps Support 11 Feb Lessons Learned. Peak Season IBM Corporation

Manjunath Subburathinam Sterling L2 Apps Support 11 Feb Lessons Learned. Peak Season IBM Corporation Manjunath Subburathinam Sterling L2 Apps Support 11 Feb 2014 Lessons Learned Peak Season Agenda PMR Distribution Learnings Sterling Database Miscellaneous 2 PMR Distribution Following are the areas where

More information

5 System architecture

5 System architecture 5 System architecture This chapter provides an overview of the system architecture. The first section presents a superficial explanation of the entire systems architecture. In section two, architectural

More information

Web Application Development Using Spring, Hibernate and JPA

Web Application Development Using Spring, Hibernate and JPA Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days US Price: $2795 UK Price: 1,995 *Prices are subject to VAT CA Price: CDN$3,275 *Prices are subject to GST/HST Delivery Options:

More information

Building Native Mapping Apps with PhoneGap: Advanced Techniques Andy

Building Native Mapping Apps with PhoneGap: Advanced Techniques Andy Building Native Mapping Apps with PhoneGap: Advanced Techniques Andy Gup @agup Agenda Application life-cycle Working with UI frameworks Security Geolocation Offline Expectations Experience with PhoneGap

More information

Why Discuss JavaScript? CS312: Programming Languages. Lecture 21: JavaScript. JavaScript Target. What s a Scripting Language?

Why Discuss JavaScript? CS312: Programming Languages. Lecture 21: JavaScript. JavaScript Target. What s a Scripting Language? Why Discuss JavaScript? CS312: Programming Languages Lecture 21: JavaScript Thomas Dillig JavaScript is very widely used and growing Any AJAX application heavily relies on JavaScript JavaScript also has

More information

NODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js

NODE.JS SERVER SIDE JAVASCRIPT. Introduc)on Node.js NODE.JS SERVER SIDE JAVASCRIPT Introduc)on Node.js Node.js was created by Ryan Dahl starting in 2009. For more information visit: http://www.nodejs.org 1 What about Node.js? 1. JavaScript used in client-side

More information

FREQUENTLY ASKED QUESTIONS ABOUT CLASS LOGISTICS AND TELECONFERENCE TECHNOLOGY

FREQUENTLY ASKED QUESTIONS ABOUT CLASS LOGISTICS AND TELECONFERENCE TECHNOLOGY FREQUENTLY ASKED QUESTIONS ABOUT CLASS LOGISTICS AND TELECONFERENCE TECHNOLOGY 1. CAN I GET CEUS FOR TAKING LLA? A: LLA has been approved for Continuing Education Credits (CEUs) by a variety of professional

More information

SALESFORCE DMP SUPERTAG USER GUIDE 00. SuperTag User Guide VER. 2, UPDATED 1/16. Rights Reserved, Proprietary &

SALESFORCE DMP SUPERTAG USER GUIDE 00. SuperTag User Guide VER. 2, UPDATED 1/16. Rights Reserved, Proprietary & SALESFORCE DMP SUPERTAG USER GUIDE 00 SuperTag User Guide VER. 2, UPDATED 1/16 SALESFORCE DMP SUPERTAG USER GUIDE 01 CONTENTS I. Introduction 2 SuperTag Overview 2 Benefits of Managing Tags with SuperTag

More information

OFFLINE MODE OF ANDROID

OFFLINE MODE OF ANDROID OFFLINE MODE OF ANDROID APPS @Ajit5ingh ABOUT ME new Presenter( Ajit Singh, github.com/ajitsing, www.singhajit.com, @Ajit5ingh ) AGENDA Why offline mode? What it takes to build an offline mode Architecture

More information

Web Application Development Using Spring, Hibernate and JPA

Web Application Development Using Spring, Hibernate and JPA Web Application Development Using Spring, Hibernate and JPA Duration: 5 Days Price: 1,995 + VAT Course Description: This course provides a comprehensive introduction to JPA (the Java Persistence API),

More information

Contents Getting Started... 3 About Scribe Online and Connectors... 3 Scribe Online Services... 3 CDK Components... 3 Audience... 4 Prerequisites...

Contents Getting Started... 3 About Scribe Online and Connectors... 3 Scribe Online Services... 3 CDK Components... 3 Audience... 4 Prerequisites... Contents Getting Started... 3 About Scribe Online and Connectors... 3 Scribe Online Services... 3 CDK Components... 3 Audience... 4 Prerequisites... 4 Requirements... 4 CDK Workflow... 5 Scribe Online

More information

CS312: Programming Languages. Lecture 21: JavaScript

CS312: Programming Languages. Lecture 21: JavaScript CS312: Programming Languages Lecture 21: JavaScript Thomas Dillig Thomas Dillig, CS312: Programming Languages Lecture 21: JavaScript 1/25 Why Discuss JavaScript? JavaScript is very widely used and growing

More information

Scaling Without Sharding. Baron Schwartz Percona Inc Surge 2010

Scaling Without Sharding. Baron Schwartz Percona Inc Surge 2010 Scaling Without Sharding Baron Schwartz Percona Inc Surge 2010 Web Scale!!!! http://www.xtranormal.com/watch/6995033/ A Sharding Thought Experiment 64 shards per proxy [1] 1 TB of data storage per node

More information

,

, Weekdays:- 1½ hrs / 3 days Fastrack:- 1½hrs / Day [Class Room and Online] ISO 9001:2015 CERTIFIED ADMEC Multimedia Institute www.admecindia.co.in 9911782350, 9811818122 Welcome to one of the highly professional

More information

Simple AngularJS thanks to Best Practices

Simple AngularJS thanks to Best Practices Simple AngularJS thanks to Best Practices Learn AngularJS the easy way Level 100-300 What s this session about? 1. AngularJS can be easy when you understand basic concepts and best practices 2. But it

More information

Architecting C++ apps

Architecting C++ apps Architecting C++ apps with a multi-device application platform John JT Thomas Director of Product Management jt@embarcadero.com @FireMonkeyPM blogs.embarcadero.com/jtembarcadero/ What is a multi-device

More information

CHAPTER 3 - PROCESS CONCEPT

CHAPTER 3 - PROCESS CONCEPT CHAPTER 3 - PROCESS CONCEPT 1 OBJECTIVES Introduce a process a program in execution basis of all computation Describe features of processes: scheduling, creation, termination, communication Explore interprocess

More information

2015 NALIT Professional Development Seminar September 30, Tools for Mobile App Development

2015 NALIT Professional Development Seminar September 30, Tools for Mobile App Development 2015 NALIT Professional Development Seminar September 30, 2015 Tools for Mobile App Development Kyle Forster, IT Manager North Dakota Legislative Council Mobile App ND Legis Daily Daily legislative agenda

More information

Raima Database Manager Version 14.1 In-memory Database Engine

Raima Database Manager Version 14.1 In-memory Database Engine + Raima Database Manager Version 14.1 In-memory Database Engine By Jeffrey R. Parsons, Chief Engineer November 2017 Abstract Raima Database Manager (RDM) v14.1 contains an all new data storage engine optimized

More information

Protocol Buffers, grpc

Protocol Buffers, grpc Protocol Buffers, grpc Szolgáltatásorientált rendszerintegráció Service-Oriented System Integration Dr. Balázs Simon BME, IIT Outline Remote communication application level vs. transport level protocols

More information

(Partition Map) Exchange - under the hood

(Partition Map) Exchange - under the hood (Partition Map) Exchange - under the hood Notes: Contents: Following notation is used: words written in italics and wihout spacing mean class names without package name, for example, GridCache MapEntry

More information

STARCOUNTER. Technical Overview

STARCOUNTER. Technical Overview STARCOUNTER Technical Overview Summary 3 Introduction 4 Scope 5 Audience 5 Prerequisite Knowledge 5 Virtual Machine Database Management System 6 Weaver 7 Shared Memory 8 Atomicity 8 Consistency 9 Isolation

More information

MarkLogic Server. Database Replication Guide. MarkLogic 6 September, Copyright 2012 MarkLogic Corporation. All rights reserved.

MarkLogic Server. Database Replication Guide. MarkLogic 6 September, Copyright 2012 MarkLogic Corporation. All rights reserved. Database Replication Guide 1 MarkLogic 6 September, 2012 Last Revised: 6.0-1, September, 2012 Copyright 2012 MarkLogic Corporation. All rights reserved. Database Replication Guide 1.0 Database Replication

More information

Programming for Digital Media. Lecture 7 JavaScript By: A. Mousavi and P. Broomhead SERG, School of Engineering Design, Brunel University, UK

Programming for Digital Media. Lecture 7 JavaScript By: A. Mousavi and P. Broomhead SERG, School of Engineering Design, Brunel University, UK Programming for Digital Media Lecture 7 JavaScript By: A. Mousavi and P. Broomhead SERG, School of Engineering Design, Brunel University, UK 1 Topics Ajax (Asynchronous JavaScript and XML) What it is and

More information

Putting together the platform: Riak, Redis, Solr and Spark. Bryan Hunt

Putting together the platform: Riak, Redis, Solr and Spark. Bryan Hunt Putting together the platform: Riak, Redis, Solr and Spark Bryan Hunt 1 $ whoami Bryan Hunt Client Services Engineer @binarytemple 2 Minimum viable product - the ideologically correct doctrine 1. Start

More information

System Workers. 1 of 11

System Workers. 1 of 11 System Workers System workers allow JavaScript code to call any external process (a shell command, PHP, etc.) on the same machine. By using callbacks, Wakanda makes it possible to communicate both ways.

More information

SystemWorker.exec( )

SystemWorker.exec( ) 1 28/06/2012 11:18 System workers allow JavaScript code to call any external process (a shell command, PHP, etc.) on the same machine. By using callbacks, Wakanda makes it possible to communicate both

More information

Implementing Oath s CMP JS

Implementing Oath s CMP JS Implementing Oath s CMP JS A Guide For Third Party Publishers - V1.1 Table of contents Implementing Oath s CMP JS A Guide For Third Party Publishers - V1.1........ 1 What s new in this version?...............................

More information

MillWheel:Fault Tolerant Stream Processing at Internet Scale. By FAN Junbo

MillWheel:Fault Tolerant Stream Processing at Internet Scale. By FAN Junbo MillWheel:Fault Tolerant Stream Processing at Internet Scale By FAN Junbo Introduction MillWheel is a low latency data processing framework designed by Google at Internet scale. Motived by Google Zeitgeist

More information

CS371m - Mobile Computing. Persistence - Web Based Storage CHECK OUT g/sync-adapters/index.

CS371m - Mobile Computing. Persistence - Web Based Storage CHECK OUT   g/sync-adapters/index. CS371m - Mobile Computing Persistence - Web Based Storage CHECK OUT https://developer.android.com/trainin g/sync-adapters/index.html The Cloud. 2 Backend No clear definition of backend front end - user

More information

Custom Embedded Tabs, on page 1 Configure Cisco Jabber for Android on Chromebook, on page 8 Cisco Jabber Mobile App Promotion, on page 9

Custom Embedded Tabs, on page 1 Configure Cisco Jabber for Android on Chromebook, on page 8 Cisco Jabber Mobile App Promotion, on page 9 Custom Embedded Tabs, on page 1 Configure Cisco Jabber for Android on Chromebook, on page 8 Cisco Jabber Mobile App Promotion, on page 9 Custom Embedded Tabs Applies to Cisco Jabber for desktop and mobile

More information

CSE506: Operating Systems CSE 506: Operating Systems

CSE506: Operating Systems CSE 506: Operating Systems CSE 506: Operating Systems Disk Scheduling Key to Disk Performance Don t access the disk Whenever possible Cache contents in memory Most accesses hit in the block cache Prefetch blocks into block cache

More information

DESIGN TRANSFORMATIONAL IPAD APPS

DESIGN TRANSFORMATIONAL IPAD APPS DESIGN TRANSFORMATIONAL IPAD APPS Thank you for participating in a workshop at MicroStrategy World 2019. If you missed or did not finish an exercise and want to complete it after the conference, use this

More information

Guide to Business Continuity Preparedness

Guide to Business Continuity Preparedness Guide to Business Continuity Preparedness Released June 22, 2016 Revised June 6, 2018 duo.com Table of contents 1. Overview Why do I need this guide? Planning for success 2. Types of outages How do I know

More information

Use Page Speed to Optimize Your Web Site for Mobile

Use Page Speed to Optimize Your Web Site for Mobile Use Page Speed to Optimize Your Web Site for Mobile Bryan McQuade and Libo Song, May 10, 2011 Hashtags: #io2011 #DevTools Feedback: http://goo.gl/ce1zu Page Speed Background Help developers optimize their

More information

SOASTA (mpulse )

SOASTA (mpulse ) SOASTA 55.1.2 (mpulse 7950.23.1022) August 7, 2015 Table of Contents SOASTA 55.1.2 (mpulse 7950.23.1022)... 1 SOASTA 55 (mpulse 7950.24.1)... 2 Features... 2 Bugs Fixed... 3 SOASTA 55.1.2 (mpulse 7950.23.1022)

More information

Support Offline Mobile Web Apps with HTML5 API's

Support Offline Mobile Web Apps with HTML5 API's Support Offline Mobile Web Apps with HTML5 API's Kim Dalsgaard @kimdalsgaard Application Cache Local Storage Web SQL Database Indexed Database Application Cache Offline Web applications From the specification

More information

Distributed File Systems II

Distributed File Systems II Distributed File Systems II To do q Very-large scale: Google FS, Hadoop FS, BigTable q Next time: Naming things GFS A radically new environment NFS, etc. Independence Small Scale Variety of workloads Cooperation

More information

RESTful APIs ECS 189 WEB PROGRAMMING. Browser s view. Browser s view. Browser s view. Browser s view. Which will It be for photobooth?

RESTful APIs ECS 189 WEB PROGRAMMING. Browser s view. Browser s view. Browser s view. Browser s view. Which will It be for photobooth? RESTful APIs ECS 189 WEB PROGRAMMING 5/19! We re implementing what is called a RESTful API! ReST stands for representational state transfer! The term was coined in 2000 by Roy Fielding, who at the time

More information

Using Web Workers to Improve the Performance of Metro HTML5- JavaScript* Apps

Using Web Workers to Improve the Performance of Metro HTML5- JavaScript* Apps Using Web Workers to Improve the Performance of Metro HTML5- JavaScript* Apps Objective This article provides an introduction on how to use web workers inside HTML5-JavaScript* Metro apps. We will discuss

More information

Manual Trigger Sql Server 2008 Examples Insert Update

Manual Trigger Sql Server 2008 Examples Insert Update Manual Trigger Sql Server 2008 Examples Insert Update blog.sqlauthority.com/2011/03/31/sql-server-denali-a-simple-example-of you need to manually delete this trigger or else you can't get into master too

More information

This tutorial is intended to make you comfortable in getting started with the Firebase backend platform and its various functions.

This tutorial is intended to make you comfortable in getting started with the Firebase backend platform and its various functions. Firebase About the Tutorial Firebase is a backend platform for building Web, Android and IOS applications. It offers real time database, different APIs, multiple authentication types and hosting platform.

More information

Your Speakers. Iwan e1 Rahabok Linkedin.com/in/e1ang

Your Speakers. Iwan e1 Rahabok Linkedin.com/in/e1ang Your Speakers Iwan e1 Rahabok virtual-red-dot.info e1@vmware.com @e1_ang Linkedin.com/in/e1ang 9119 9226 Sunny Dua vxpresss.blogspot.com duas@vmware.com @sunny_dua Linkedin.com/in/duasunny 2 Need more

More information