In browser data stores

25
In-Browser Data Stores James Thomas twitter.com/thomasj

description

London AJAX Conference, July 2010. An old talk about Dojo Data Stores.

Transcript of In browser data stores

Page 1: In browser data stores

In-Browser Data Stores

James Thomastwitter.com/thomasj

Page 2: In browser data stores

Dealing with data

Page 3: In browser data stores

Dealing with data•How do we store and access client-side data in long-lived apps?

Page 4: In browser data stores

Dealing with data•How do we store and access client-side data in long-lived apps?

•How do we maintain data consistency in-browser?

Page 5: In browser data stores

Dealing with data•How do we store and access client-side data in long-lived apps?

•How do we maintain data consistency in-browser?

•How do we migrate between data sources?

Page 6: In browser data stores

dojo.data"uniform data access layer that removes the concepts of database drivers, service endpoints, and unique data formats."

Page 7: In browser data stores

dojo.data"uniform data access layer that removes the concepts of database drivers, service endpoints, and unique data formats."

Standardised interfaces for all data access

•Read, Write, Identity, Notification•Stores, items and attributes

Page 8: In browser data stores

dojo.data.Read•Fetch store items•Retrieve item's attributes•Search for items matching query•and more......

Page 9: In browser data stores

dojo.data.Read

var store = new some.Datastore();

var gotItems = function(items, request){ console.log("Items located: " + items.length); };

store.fetch({onComplete: gotItems});

Page 10: In browser data stores

dojo.data.Write•Creating new items•Deleting an item•Updating an item•Saving series of creates, updates, deletes•Revert changes

Page 11: In browser data stores

dojo.data.Write

var store = new some.Datastore();

var gotItems = function(items, request){ for (var i = 0; i < items.length; i++){ var item = items[i]; store.setValue(item, "foo", "bar"); } store.save();};

store.fetch({onComplete: gotItems});

Page 12: In browser data stores

dojo.data.Identity & dojo.data.Notifications•Items have unique identifier

•Fetch items by unique key

•Emit notifications when items created, updated and deleted

Page 13: In browser data stores

dojo.data features

Page 14: In browser data stores

dojo.data features

•Asynchronous by default

Page 15: In browser data stores

dojo.data features

•Asynchronous by default

•"Store-centric" data view

Page 16: In browser data stores

dojo.data features

•Asynchronous by default

•"Store-centric" data view

•Interfaces are independent

Page 17: In browser data stores

dojo.data features

•Asynchronous by default

•"Store-centric" data view

•Interfaces are independent

•Notifications enable easy consistency

Page 18: In browser data stores

dojo.data stores

Page 19: In browser data stores

dojo.data stores

Need a custom store? Make your own!

Page 20: In browser data stores

dojo.data widgets•Lots of Dojo's UI widgets (Dijits) automatically work with stores

Page 21: In browser data stores

Dealing with data

Page 22: In browser data stores

Dealing with data•How do we store and access client-side data in long-lived apps?

Generic client-side data store

Page 23: In browser data stores

Dealing with data•How do we store and access client-side data in long-lived apps?

Generic client-side data store•How do we maintain data consistency in-browser?

Store generated event notifications

Page 24: In browser data stores

Dealing with data•How do we store and access client-side data in long-lived apps?

Generic client-side data store•How do we maintain data consistency in-browser?

Store generated event notifications •How do we migrate between data sources?

Uniform interface for data access

Page 25: In browser data stores

Questions?