better data management using taffydb

51
Better Data Management with TaffyDB taffydb.com

Upload: typicaljoe

Post on 16-Apr-2017

6.723 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Better Data Management using TaffyDB

Better Data Management with TaffyDB

 taffydb.com

Page 2: Better Data Management using TaffyDB

 

  Who here considered

themselves a JavaScript Programmer 5 years ago?

Page 3: Better Data Management using TaffyDB
Page 4: Better Data Management using TaffyDB

Three Types of JavaScript Developer

 

Page 5: Better Data Management using TaffyDB

Three Types of JavaScript Developer

 

Page 6: Better Data Management using TaffyDB

Three Types of JavaScript Developer

 

Page 7: Better Data Management using TaffyDB

Three Types of JavaScript Developer

 

Page 8: Better Data Management using TaffyDB

Three Types of JavaScript Developer

 

Page 9: Better Data Management using TaffyDB

Three Types of JavaScript Developer

 

Page 10: Better Data Management using TaffyDB
Page 11: Better Data Management using TaffyDB

It all started with arrays

 

Page 12: Better Data Management using TaffyDB

It all started with arrays

var todos = [      ["Home To Dos",1,false,[          ["Replace light bulbs",false,"Ian"],          ["Clean out desk",false,"Ian"]]      ],      ["Work To Dos",0,true,[          ["Fix bug with form",false,"Ian"],          ["Draft requirements doc",false,"Ian"],          ["Learn JavaScript Objects",false,"Ian"]]      ]];

Page 13: Better Data Management using TaffyDB

It all started with arrays

var todos = [      ["Home To Dos",1,false,[          ["Replace light bulbs",false,"Ian"],          ["Clean out desk",false,"Ian"]]      ],      ["Work To Dos",0,true,[          ["Fix bug with form",false,"Ian"],          ["Draft requirements doc",false,"Ian"],          ["Learn JavaScript Objects",false,"Ian"]]      ]];// update Fix bug with form to completetodos[1][3][0][1] = true;

Page 14: Better Data Management using TaffyDB

Functions like this

function checkTask (list,task) {    for(var li = 0;li<todos;li++) {        if (todos[li][0] == list) {            for (var ta = 0; ta < todos[li][3]; ta++) {                if (todos[li][3][ta][0] == task) {                    todos[li][3][ta][1] == true;                }            }        }    }}checkTask("Work To Dos","Draft requirements doc");

Page 15: Better Data Management using TaffyDB

 

 

Page 16: Better Data Management using TaffyDB

JavaScript Object Literals

{}

Page 17: Better Data Management using TaffyDB

JavaScript Object Literals

Useful for storing related name value pairs:

        {country:"United States",        government:"Democracy",        president:"Barrak Obama"}

Page 18: Better Data Management using TaffyDB

JavaScript Object Literals

Useful for storing related name value pairs:

        {country:"United States",        government:"Democracy",        president:"Barrak Obama"}

Also useful for composing instructions for functions:

find({government:"Democracy"})// find all records where government == Democracy   

Page 19: Better Data Management using TaffyDB

This is TaffyDB

 

Page 20: Better Data Management using TaffyDB

This is TaffyDB

• A wrapper for object literals (records)  

Page 21: Better Data Management using TaffyDB

This is TaffyDB

• A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects)

 

Page 22: Better Data Management using TaffyDB

This is TaffyDB

• A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects)• Uses familiar database concepts

 

Page 23: Better Data Management using TaffyDB

This is TaffyDB

• A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects)• Uses familiar database concepts • But it isn't a DB - no persistence

 

Page 24: Better Data Management using TaffyDB

This is TaffyDB

• A wrapper for object literals (records) • Provides a JavaScript centric API (using arrays/objects)• Uses familiar database concepts • But it isn't a DB - no persistence

 • Thin (under 12K)• Opensource and Free• Maintained (v1.7.1)• One global object, no prototype modification

Page 25: Better Data Management using TaffyDB

Create a data collection

// create a populated data collectionvar jsConfSpeakers = TAFFY([     {"name":"John Resig","topic":"Surprise!"},     {"name":"Francisco Tolmask","topic":"Objective-J"},     {"name":"Chris Anderson","topic":"CouchDB"},     {"name":"Jeff Haynie","topic":"Web Apps on the Desktop"},     {"name":"Stoyan Stefanov","topic":"Kick Ass Web Apps"}]);

Page 26: Better Data Management using TaffyDB

Insert

     jsConfSpeakers.insert(    {"name":"Richard D. Worth","topic":"jQuery UI"}  );

Page 27: Better Data Management using TaffyDB

Getting records

jsConfSpeakers.first();// returns {"name":"John Resig","topic":"Surprise!"}

Page 28: Better Data Management using TaffyDB

Getting records

jsConfSpeakers.first();// returns {"name":"John Resig","topic":"Surprise!"}// TaffyDB filtering is overloaded// 0 and [0] will both return the first record jsConfSpeakers.get(0); jsConfSpeakers.get([0]);  // returns [{"name":"John Resig","topic":"Surprise!"}]

Page 29: Better Data Management using TaffyDB

Remove

// delete is a reserved word// use remove function instead jsConfSpeakers.remove(0); 

Page 30: Better Data Management using TaffyDB

Update

 jsConfSpeakers.update({"topic":"TBD"},0); // updates the first record, sets topic = "TBD"

Page 31: Better Data Management using TaffyDB

Advanced filtering

// Use Object Literals to construct "where clauses" jsConfSpeakers.find({name:"Chris Anderson"});// returns [2]

Page 32: Better Data Management using TaffyDB

Advanced filtering

// Use Object Literals to construct "where clauses" jsConfSpeakers.find({name:"Chris Anderson"});// returns [2]jsConfSpeakers.find({topic:{like:"Web Apps"}});// returns [3,4]

Page 33: Better Data Management using TaffyDB

Advanced filtering

// Use Object Literals to construct "where clauses" jsConfSpeakers.find({name:"Chris Anderson"});// returns [2]jsConfSpeakers.find({topic:{like:"Web Apps"}});// returns [3,4]

jsConfSpeakers.find({            topic:{like:"Web Apps"},            name:{like:"Jeff"}});// returns [3]// "where topic like Web Apps and name like Jeff"

Page 34: Better Data Management using TaffyDB

Let's see it in action...

 

Page 35: Better Data Management using TaffyDB

.forEach() in details

collection.forEach(    function (r,index) {         //whatever logic here    },[optional filter]);

Page 36: Better Data Management using TaffyDB

.forEach() in details

collection.forEach(    function (r,index) {         //whatever logic here    },[optional filter]);

// modify r and return it to update the recordcollection.forEach(    function (r,index) {         r.field = "new value";         return r;     });

Page 37: Better Data Management using TaffyDB

TaffyDB is Batteries Included

      

Page 38: Better Data Management using TaffyDB

TaffyDB is Batteries Included

Events:• onUpdate, onInsert, onRemove

      

Page 39: Better Data Management using TaffyDB

TaffyDB is Batteries Included

Events:• onUpdate, onInsert, onRemove

 JSON Support 

     

Page 40: Better Data Management using TaffyDB

TaffyDB is Batteries Included

Events:• onUpdate, onInsert, onRemove

 JSON Support typeOf() methods 

     

Page 41: Better Data Management using TaffyDB

TaffyDB is Batteries Included

Events:• onUpdate, onInsert, onRemove

 JSON Support typeOf() methods Object  Methods• isSameObject, mergeObject, etc

   

     

Page 42: Better Data Management using TaffyDB

TaffyDB is Batteries Included

Events:• onUpdate, onInsert, onRemove

 JSON Support typeOf() methods Object  Methods• isSameObject, mergeObject, etc

 Utility Methods    

     

Page 43: Better Data Management using TaffyDB

Does it scale?

 

Page 44: Better Data Management using TaffyDB
Page 45: Better Data Management using TaffyDB
Page 46: Better Data Management using TaffyDB

 Sites Using TaffyDB

 

Page 47: Better Data Management using TaffyDB

Joe's Goals (joesgoals.com)

 

Page 48: Better Data Management using TaffyDB

QuoteWizard (quotewizard.com)

 

Page 49: Better Data Management using TaffyDB

VitaList (vitalist.com)

 

Page 50: Better Data Management using TaffyDB

MostRecent (mostrecent.net)

 

Page 51: Better Data Management using TaffyDB

http://taffydb.com

Learn - Download - Find Help Contribute Code