SlideShare une entreprise Scribd logo
1  sur  35
Copyright © 2016 M/Gateway Developments Ltd
EWD 3 Training Course
Part 18
Modelling NoSQL Databases
using Global Storage
Rob Tweed
Director, M/Gateway Developments Ltd
Twitter: @rtweed
Copyright © 2016 M/Gateway Developments Ltd
NoSQL Databases
• 4 Main Models
– Key/Value Store
– Columnar
– Graph
– Document
Copyright © 2016 M/Gateway Developments Ltd
NoSQL Databases
• The following are just examples on how
you might model these with Global
Storage
– No one way to do it
– May be better ways to do it!
– Aim is to demonstrate just how flexible and
capable a Global Storage database really is
Copyright © 2016 M/Gateway Developments Ltd
telephone
"617-555-1414" "Tweed, Rob"
"211-555-9012" "James, George"
Key/Value Store
Copyright © 2016 M/Gateway Developments Ltd
"617-555-1414"
"name" "Tweed, Rob"
"address" "112 Beacon Street, Boston"
"211-555-9012"
"name" "James, George"
"address" "5308, 12th Avenue, Brooklyn"
telephone
More Complex Key/Value Store
Copyright © 2016 M/Gateway Developments Ltd
Indexing
Global Storage databases do not index automatically
You create your own indices using Global Storage
Copyright © 2016 M/Gateway Developments Ltd
"617-555-1414"
"name" "Tweed, Rob"
"address" "112 Beacon Street, Boston"
"211-555-9012" "name" "James, George"
"address" "5308, 12th Avenue, Brooklyn"
telephone
"James, George"
nameIndex
Indexing
Copyright © 2016 M/Gateway Developments Ltd
"617-555-1414"
"name" "Tweed, Rob"
"address" "112 Beacon Street, Boston"
"211-555-9012" "name" "James, George"
"address" "5308, 12th Avenue, Brooklyn"
telephone
"James, George"
nameIndex
"""211-555-9012"
Indexing
Copyright © 2016 M/Gateway Developments Ltd
"617-555-1414"
"name" "Tweed, Rob"
"address" "112 Beacon Street, Boston"
"211-555-9012" "name" "James, George"
"address" "5308, 12th Avenue, Brooklyn"
telephone
"James, George"
nameIndex
"""211-555-9012"
Indexing
"Tweed, Rob" """617-555-1414"
Copyright © 2016 M/Gateway Developments Ltd
"617-555-1414"
"name" "Tweed, Rob"
"address" "112 Beacon Street, Boston"
"211-555-9012" "name" "James, George"
"address" "5308, 12th Avenue, Brooklyn"
telephone
"James, George"
nameIndex
"""211-555-9012"
Indexing
"""211-863-3932"
"""224-543-5431"
"Tweed, Rob" """617-555-1414"
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 5
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Chris
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 6
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
Linked List
Chris
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 6
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
6
"value" "Chris"
Linked List
Chris
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 6
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
6
"nextNode" 5
"value" "Chris"
Linked List
Chris
Rob
George
John
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 5
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 6
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
6
"nextNode" 5
"value" "Chris"
Linked List
Chris
Rob
George
John
"previousNode" 6
Copyright © 2016 M/Gateway Developments Ltd
"firstNode" 6
"lastNode" 2
"node"
4
list "myList"
"nodeCounter" 6
"nextNode" 2
"previousNode" 5
"value" "George"
5
"nextNode" 4
"value" "Rob"
2
"value" "John"
"previousNode" 4
6
"nextNode" 5
"value" "Chris"
Linked List
Chris
Rob
George
John
"previousNode" 6
Copyright © 2016 M/Gateway Developments Ltd
1
1 "First Cell"
3 "Third Cell"
^table "myTable"
Table Name Row No Column No Cell Value
5 "Fifth Cell"
2
2 "Second Cell"
3 "Third Cell"
3
4 "Fourth Cell"
5 "Fifth Cell"
Tabular / Columnar
Copyright © 2016 M/Gateway Developments Ltd
1
7
2
name = "Rob"
name = "George"
name = "John"disclosure = public
age = 3 days
disclosure = public
age = 2 years
Graph
Copyright © 2016 M/Gateway Developments Ltd
1
7
2
name = "Rob"
name = "George"
name = "John"disclosure = public
age = 3 days
disclosure = public
age = 2 years
Graph
1
person
2
7
"name" "Rob"
"knows"
2
7
""
"disclosure" "public"
"timestamp" "2008-08-16T12:23:01Z"
""
"name" "John"
"name" "George"
"knows" 2
""
"disclosure" "public"
"timestamp" "2009-12-16T10:06:44Z"
Copyright © 2016 M/Gateway Developments Ltd
1
7
2
name = "Rob"
name = "George"
name = "John"disclosure = public
age = 3 days
disclosure = public
age = 2 years
Graph
1
person
2
7
"name" "Rob"
"knows"
2
7
""
"disclosure" "public"
"timestamp" "2008-08-16T12:23:01Z"
""
"name" "John"
"name" "George"
"knows" 2
""
"disclosure" "public"
"timestamp" "2009-12-16T10:06:44Z"
Copyright © 2016 M/Gateway Developments Ltd
1
7
2
name = "Rob"
name = "George"
name = "John"disclosure = public
age = 3 days
disclosure = public
age = 2 years
Graph
1
person
2
7
"name" "Rob"
"knows"
2
7
""
"disclosure" "public"
"timestamp" "2008-08-16T12:23:01Z"
""
"name" "John"
"name" "George"
"knows" 2
""
"disclosure" "public"
"timestamp" "2009-12-16T10:06:44Z"
Copyright © 2016 M/Gateway Developments Ltd
1
7
2
name = "Rob"
name = "George"
name = "John"disclosure = public
age = 3 days
disclosure = public
age = 2 years
Graph
1
person
2
7
"name" "Rob"
"knows"
2
7
""
"disclosure" "public"
"timestamp" "2008-08-16T12:23:01Z"
""
"name" "John"
"name" "George"
"knows" 2
""
"disclosure" "public"
"timestamp" "2009-12-16T10:06:44Z"
Copyright © 2016 M/Gateway Developments Ltd
1
7
2
name = "Rob"
name = "George"
name = "John"disclosure = public
age = 3 days
disclosure = public
age = 2 years
Graph
1
person
2
7
"name" "Rob"
"knows"
2
7
""
"disclosure" "public"
"timestamp" "2008-08-16T12:23:01Z"
""
"name" "John"
"name" "George"
"knows" 2
""
"disclosure" "public"
"timestamp" "2009-12-16T10:06:44Z"
Copyright © 2016 M/Gateway Developments Ltd
1
7
2
name = "Rob"
name = "George"
name = "John"disclosure = public
age = 3 days
disclosure = public
age = 2 years
Graph
1
person
2
7
"name" "Rob"
"knows"
2
7
""
"disclosure" "public"
"timestamp" "2008-08-16T12:23:01Z"
""
"name" "John"
"name" "George"
"knows" 2
""
"disclosure" "public"
"timestamp" "2009-12-16T10:06:44Z"
Copyright © 2016 M/Gateway Developments Ltd
Document Database
myGlobal
"a" 123
"b"
"c2" "foo2"
"d"
"c1" "foo"
"e2"
"e1"
"f2" "bar2"
"f1" "bar1"
"f2" "bar2"
"f1" "bar1"
"f3" "bar3"
myGlobal = {
a: 123,
b: {
c1: 'foo',
c2: 'foo2'
}
d: {
e1: {
f1: 'bar1',
f2: 'bar2'
},
e2: {
f1: 'bar1',
f2: 'bar2',
f3: 'bar3'
}
}
}
Copyright © 2016 M/Gateway Developments Ltd
Other models possible
• Relational
– In fact Caché supports Relational storage, through modelling on
Global Storage
• Object
– Also supported by Caché
• Native XML Database
– eXtc (now deprecated)
• http://www.mgateway.com/eXtcOverview4_0.pdf
• SimpleDB emulation
– https://github.com/robtweed/node-mdb

Contenu connexe

En vedette

EWD 3 Training Course Part 17: Introduction to Global Storage Databases
EWD 3 Training Course Part 17: Introduction to Global Storage DatabasesEWD 3 Training Course Part 17: Introduction to Global Storage Databases
EWD 3 Training Course Part 17: Introduction to Global Storage DatabasesRob Tweed
 
EWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWD
EWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWDEWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWD
EWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWDRob Tweed
 
EWD 3 Training Course Part 21: Persistent JavaScript Objects
EWD 3 Training Course Part 21: Persistent JavaScript ObjectsEWD 3 Training Course Part 21: Persistent JavaScript Objects
EWD 3 Training Course Part 21: Persistent JavaScript ObjectsRob Tweed
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectRob Tweed
 
EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...
EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...
EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...Rob Tweed
 
EWD 3 Training Course Part 7: Applying the QEWD Messaging Pattern
EWD 3 Training Course Part 7: Applying the QEWD Messaging PatternEWD 3 Training Course Part 7: Applying the QEWD Messaging Pattern
EWD 3 Training Course Part 7: Applying the QEWD Messaging PatternRob Tweed
 
EWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is StartedEWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is StartedRob Tweed
 
EWD 3 Training Course Part 25: Document Database Capabilities
EWD 3 Training Course Part 25: Document Database CapabilitiesEWD 3 Training Course Part 25: Document Database Capabilities
EWD 3 Training Course Part 25: Document Database CapabilitiesRob Tweed
 
EWD 3 Training Course Part 16: QEWD Services
EWD 3 Training Course Part 16: QEWD ServicesEWD 3 Training Course Part 16: QEWD Services
EWD 3 Training Course Part 16: QEWD ServicesRob Tweed
 
EWD 3 Training Course Part 24: Traversing a Document's Leaf Nodes
EWD 3 Training Course Part 24: Traversing a Document's Leaf NodesEWD 3 Training Course Part 24: Traversing a Document's Leaf Nodes
EWD 3 Training Course Part 24: Traversing a Document's Leaf NodesRob Tweed
 
EWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven IndexingEWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven IndexingRob Tweed
 
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...Rob Tweed
 
EWD 3 Training Course Part 27: The QEWD Session
EWD 3 Training Course Part 27: The QEWD SessionEWD 3 Training Course Part 27: The QEWD Session
EWD 3 Training Course Part 27: The QEWD SessionRob Tweed
 
EWD 3 Training Course Part 19: The cache.node APIs
EWD 3 Training Course Part 19: The cache.node APIsEWD 3 Training Course Part 19: The cache.node APIs
EWD 3 Training Course Part 19: The cache.node APIsRob Tweed
 
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode ObjectsEWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode ObjectsRob Tweed
 
EWD 3 Training Course Part 8: Anatomy of the QEWD Messaging Cycle
EWD 3 Training Course Part 8: Anatomy of the QEWD Messaging CycleEWD 3 Training Course Part 8: Anatomy of the QEWD Messaging Cycle
EWD 3 Training Course Part 8: Anatomy of the QEWD Messaging CycleRob Tweed
 
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWDEWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWDRob Tweed
 
EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...
EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...
EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...Rob Tweed
 
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5Rob Tweed
 
EWD 3 Training Course Part 33: Configuring QEWD to use CORS
EWD 3 Training Course Part 33: Configuring QEWD to use CORSEWD 3 Training Course Part 33: Configuring QEWD to use CORS
EWD 3 Training Course Part 33: Configuring QEWD to use CORSRob Tweed
 

En vedette (20)

EWD 3 Training Course Part 17: Introduction to Global Storage Databases
EWD 3 Training Course Part 17: Introduction to Global Storage DatabasesEWD 3 Training Course Part 17: Introduction to Global Storage Databases
EWD 3 Training Course Part 17: Introduction to Global Storage Databases
 
EWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWD
EWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWDEWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWD
EWD 3 Training Course Part 28: Integrating Legacy Mumps Code with QEWD
 
EWD 3 Training Course Part 21: Persistent JavaScript Objects
EWD 3 Training Course Part 21: Persistent JavaScript ObjectsEWD 3 Training Course Part 21: Persistent JavaScript Objects
EWD 3 Training Course Part 21: Persistent JavaScript Objects
 
EWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode ObjectEWD 3 Training Course Part 20: The DocumentNode Object
EWD 3 Training Course Part 20: The DocumentNode Object
 
EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...
EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...
EWD 3 Training Course Part 36: Accessing REST and Web Services from a QEWD ap...
 
EWD 3 Training Course Part 7: Applying the QEWD Messaging Pattern
EWD 3 Training Course Part 7: Applying the QEWD Messaging PatternEWD 3 Training Course Part 7: Applying the QEWD Messaging Pattern
EWD 3 Training Course Part 7: Applying the QEWD Messaging Pattern
 
EWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is StartedEWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
EWD 3 Training Course Part 6: What Happens when a QEWD Application is Started
 
EWD 3 Training Course Part 25: Document Database Capabilities
EWD 3 Training Course Part 25: Document Database CapabilitiesEWD 3 Training Course Part 25: Document Database Capabilities
EWD 3 Training Course Part 25: Document Database Capabilities
 
EWD 3 Training Course Part 16: QEWD Services
EWD 3 Training Course Part 16: QEWD ServicesEWD 3 Training Course Part 16: QEWD Services
EWD 3 Training Course Part 16: QEWD Services
 
EWD 3 Training Course Part 24: Traversing a Document's Leaf Nodes
EWD 3 Training Course Part 24: Traversing a Document's Leaf NodesEWD 3 Training Course Part 24: Traversing a Document's Leaf Nodes
EWD 3 Training Course Part 24: Traversing a Document's Leaf Nodes
 
EWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven IndexingEWD 3 Training Course Part 26: Event-driven Indexing
EWD 3 Training Course Part 26: Event-driven Indexing
 
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
EWD 3 Training Course Part 13: Putting Everything so far into Practice using ...
 
EWD 3 Training Course Part 27: The QEWD Session
EWD 3 Training Course Part 27: The QEWD SessionEWD 3 Training Course Part 27: The QEWD Session
EWD 3 Training Course Part 27: The QEWD Session
 
EWD 3 Training Course Part 19: The cache.node APIs
EWD 3 Training Course Part 19: The cache.node APIsEWD 3 Training Course Part 19: The cache.node APIs
EWD 3 Training Course Part 19: The cache.node APIs
 
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode ObjectsEWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
EWD 3 Training Course Part 22: Traversing Documents using DocumentNode Objects
 
EWD 3 Training Course Part 8: Anatomy of the QEWD Messaging Cycle
EWD 3 Training Course Part 8: Anatomy of the QEWD Messaging CycleEWD 3 Training Course Part 8: Anatomy of the QEWD Messaging Cycle
EWD 3 Training Course Part 8: Anatomy of the QEWD Messaging Cycle
 
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWDEWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
EWD 3 Training Course Part 15: Using a Framework other than jQuery with QEWD
 
EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...
EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...
EWD 3 Training Course Part 37: Building a React.js application with ewd-xpres...
 
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
EWD 3 Training Course Part 41: Building a React.js application with QEWD, Part 5
 
EWD 3 Training Course Part 33: Configuring QEWD to use CORS
EWD 3 Training Course Part 33: Configuring QEWD to use CORSEWD 3 Training Course Part 33: Configuring QEWD to use CORS
EWD 3 Training Course Part 33: Configuring QEWD to use CORS
 

Plus de Rob Tweed

Data Persistence as a Language Feature
Data Persistence as a Language FeatureData Persistence as a Language Feature
Data Persistence as a Language FeatureRob Tweed
 
LNUG: Having Your Node.js Cake and Eating It Too
LNUG: Having Your Node.js Cake and Eating It TooLNUG: Having Your Node.js Cake and Eating It Too
LNUG: Having Your Node.js Cake and Eating It TooRob Tweed
 
EWD 3 Training Course Part 45: Using QEWD's Advanced MicroService Functionality
EWD 3 Training Course Part 45: Using QEWD's Advanced MicroService FunctionalityEWD 3 Training Course Part 45: Using QEWD's Advanced MicroService Functionality
EWD 3 Training Course Part 45: Using QEWD's Advanced MicroService FunctionalityRob Tweed
 
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.jsEWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.jsRob Tweed
 
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST Services
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST ServicesEWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST Services
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST ServicesRob Tweed
 
QEWD.js, JSON Web Tokens & MicroServices
QEWD.js, JSON Web Tokens & MicroServicesQEWD.js, JSON Web Tokens & MicroServices
QEWD.js, JSON Web Tokens & MicroServicesRob Tweed
 
QEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It TooQEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It TooRob Tweed
 
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Servicesewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST ServicesRob Tweed
 
qewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle Tierqewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle TierRob Tweed
 
EWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker ApplianceEWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker ApplianceRob Tweed
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4Rob Tweed
 
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3Rob Tweed
 
EWD 3 Training Course Part 5b: First Steps in Building a QEWD Application
EWD 3 Training Course Part 5b: First Steps in Building a QEWD ApplicationEWD 3 Training Course Part 5b: First Steps in Building a QEWD Application
EWD 3 Training Course Part 5b: First Steps in Building a QEWD ApplicationRob Tweed
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2Rob Tweed
 
EWD 3 Training Course Part 35: QEWD Session Locking
EWD 3 Training Course Part 35: QEWD Session LockingEWD 3 Training Course Part 35: QEWD Session Locking
EWD 3 Training Course Part 35: QEWD Session LockingRob Tweed
 
EWD 3 Training Course Part 34: QEWD Resilient Mode
EWD 3 Training Course Part 34: QEWD Resilient ModeEWD 3 Training Course Part 34: QEWD Resilient Mode
EWD 3 Training Course Part 34: QEWD Resilient ModeRob Tweed
 
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPSEWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPSRob Tweed
 
EWD 3 Training Course Part 31: Using QEWD for Web and REST Services
EWD 3 Training Course Part 31: Using QEWD for Web and REST ServicesEWD 3 Training Course Part 31: Using QEWD for Web and REST Services
EWD 3 Training Course Part 31: Using QEWD for Web and REST ServicesRob Tweed
 
EWD 3 Training Course Part 30: Modularising QEWD Applications
EWD 3 Training Course Part 30: Modularising QEWD ApplicationsEWD 3 Training Course Part 30: Modularising QEWD Applications
EWD 3 Training Course Part 30: Modularising QEWD ApplicationsRob Tweed
 

Plus de Rob Tweed (20)

QEWD Update
QEWD UpdateQEWD Update
QEWD Update
 
Data Persistence as a Language Feature
Data Persistence as a Language FeatureData Persistence as a Language Feature
Data Persistence as a Language Feature
 
LNUG: Having Your Node.js Cake and Eating It Too
LNUG: Having Your Node.js Cake and Eating It TooLNUG: Having Your Node.js Cake and Eating It Too
LNUG: Having Your Node.js Cake and Eating It Too
 
EWD 3 Training Course Part 45: Using QEWD's Advanced MicroService Functionality
EWD 3 Training Course Part 45: Using QEWD's Advanced MicroService FunctionalityEWD 3 Training Course Part 45: Using QEWD's Advanced MicroService Functionality
EWD 3 Training Course Part 45: Using QEWD's Advanced MicroService Functionality
 
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.jsEWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
 
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST Services
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST ServicesEWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST Services
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST Services
 
QEWD.js, JSON Web Tokens & MicroServices
QEWD.js, JSON Web Tokens & MicroServicesQEWD.js, JSON Web Tokens & MicroServices
QEWD.js, JSON Web Tokens & MicroServices
 
QEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It TooQEWD.js: Have your Node.js Cake and Eat It Too
QEWD.js: Have your Node.js Cake and Eat It Too
 
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Servicesewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
 
qewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle Tierqewd-ripple: The Ripple OSI Middle Tier
qewd-ripple: The Ripple OSI Middle Tier
 
EWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker ApplianceEWD 3 Training Course Part 42: The QEWD Docker Appliance
EWD 3 Training Course Part 42: The QEWD Docker Appliance
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
 
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
 
EWD 3 Training Course Part 5b: First Steps in Building a QEWD Application
EWD 3 Training Course Part 5b: First Steps in Building a QEWD ApplicationEWD 3 Training Course Part 5b: First Steps in Building a QEWD Application
EWD 3 Training Course Part 5b: First Steps in Building a QEWD Application
 
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2
 
EWD 3 Training Course Part 35: QEWD Session Locking
EWD 3 Training Course Part 35: QEWD Session LockingEWD 3 Training Course Part 35: QEWD Session Locking
EWD 3 Training Course Part 35: QEWD Session Locking
 
EWD 3 Training Course Part 34: QEWD Resilient Mode
EWD 3 Training Course Part 34: QEWD Resilient ModeEWD 3 Training Course Part 34: QEWD Resilient Mode
EWD 3 Training Course Part 34: QEWD Resilient Mode
 
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPSEWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
 
EWD 3 Training Course Part 31: Using QEWD for Web and REST Services
EWD 3 Training Course Part 31: Using QEWD for Web and REST ServicesEWD 3 Training Course Part 31: Using QEWD for Web and REST Services
EWD 3 Training Course Part 31: Using QEWD for Web and REST Services
 
EWD 3 Training Course Part 30: Modularising QEWD Applications
EWD 3 Training Course Part 30: Modularising QEWD ApplicationsEWD 3 Training Course Part 30: Modularising QEWD Applications
EWD 3 Training Course Part 30: Modularising QEWD Applications
 

Dernier

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Matt Ray
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Andreas Granig
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprisepreethippts
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Hr365.us smith
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityNeo4j
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWave PLM
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxTier1 app
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样umasea
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...stazi3110
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEEVICTOR MAESTRE RAMIREZ
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Cizo Technology Services
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 

Dernier (20)

Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
Open Source Summit NA 2024: Open Source Cloud Costs - OpenCost's Impact on En...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024Automate your Kamailio Test Calls - Kamailio World 2024
Automate your Kamailio Test Calls - Kamailio World 2024
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Advantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your BusinessAdvantages of Odoo ERP 17 for Your Business
Advantages of Odoo ERP 17 for Your Business
 
Odoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 EnterpriseOdoo 14 - eLearning Module In Odoo 14 Enterprise
Odoo 14 - eLearning Module In Odoo 14 Enterprise
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)Recruitment Management Software Benefits (Infographic)
Recruitment Management Software Benefits (Infographic)
 
EY_Graph Database Powered Sustainability
EY_Graph Database Powered SustainabilityEY_Graph Database Powered Sustainability
EY_Graph Database Powered Sustainability
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
What is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need ItWhat is Fashion PLM and Why Do You Need It
What is Fashion PLM and Why Do You Need It
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptxKnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
KnowAPIs-UnknownPerf-jaxMainz-2024 (1).pptx
 
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
办理学位证(UQ文凭证书)昆士兰大学毕业证成绩单原版一模一样
 
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
Building a General PDE Solving Framework with Symbolic-Numeric Scientific Mac...
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Cloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEECloud Data Center Network Construction - IEEE
Cloud Data Center Network Construction - IEEE
 
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
Global Identity Enrolment and Verification Pro Solution - Cizo Technology Ser...
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 

EWD 3 Training Course Part 18: Modelling NoSQL Databases using Global Storage

  • 1. Copyright © 2016 M/Gateway Developments Ltd EWD 3 Training Course Part 18 Modelling NoSQL Databases using Global Storage Rob Tweed Director, M/Gateway Developments Ltd Twitter: @rtweed
  • 2. Copyright © 2016 M/Gateway Developments Ltd NoSQL Databases • 4 Main Models – Key/Value Store – Columnar – Graph – Document
  • 3. Copyright © 2016 M/Gateway Developments Ltd NoSQL Databases • The following are just examples on how you might model these with Global Storage – No one way to do it – May be better ways to do it! – Aim is to demonstrate just how flexible and capable a Global Storage database really is
  • 4. Copyright © 2016 M/Gateway Developments Ltd telephone "617-555-1414" "Tweed, Rob" "211-555-9012" "James, George" Key/Value Store
  • 5. Copyright © 2016 M/Gateway Developments Ltd "617-555-1414" "name" "Tweed, Rob" "address" "112 Beacon Street, Boston" "211-555-9012" "name" "James, George" "address" "5308, 12th Avenue, Brooklyn" telephone More Complex Key/Value Store
  • 6. Copyright © 2016 M/Gateway Developments Ltd Indexing Global Storage databases do not index automatically You create your own indices using Global Storage
  • 7. Copyright © 2016 M/Gateway Developments Ltd "617-555-1414" "name" "Tweed, Rob" "address" "112 Beacon Street, Boston" "211-555-9012" "name" "James, George" "address" "5308, 12th Avenue, Brooklyn" telephone "James, George" nameIndex Indexing
  • 8. Copyright © 2016 M/Gateway Developments Ltd "617-555-1414" "name" "Tweed, Rob" "address" "112 Beacon Street, Boston" "211-555-9012" "name" "James, George" "address" "5308, 12th Avenue, Brooklyn" telephone "James, George" nameIndex """211-555-9012" Indexing
  • 9. Copyright © 2016 M/Gateway Developments Ltd "617-555-1414" "name" "Tweed, Rob" "address" "112 Beacon Street, Boston" "211-555-9012" "name" "James, George" "address" "5308, 12th Avenue, Brooklyn" telephone "James, George" nameIndex """211-555-9012" Indexing "Tweed, Rob" """617-555-1414"
  • 10. Copyright © 2016 M/Gateway Developments Ltd "617-555-1414" "name" "Tweed, Rob" "address" "112 Beacon Street, Boston" "211-555-9012" "name" "James, George" "address" "5308, 12th Avenue, Brooklyn" telephone "James, George" nameIndex """211-555-9012" Indexing """211-863-3932" """224-543-5431" "Tweed, Rob" """617-555-1414"
  • 11. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 12. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 13. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 14. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 15. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 16. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 17. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 18. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 19. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Rob George John
  • 20. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 5 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Chris Rob George John
  • 21. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 6 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 Linked List Chris Rob George John
  • 22. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 6 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 6 "value" "Chris" Linked List Chris Rob George John
  • 23. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 6 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 6 "nextNode" 5 "value" "Chris" Linked List Chris Rob George John
  • 24. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 5 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 6 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 6 "nextNode" 5 "value" "Chris" Linked List Chris Rob George John "previousNode" 6
  • 25. Copyright © 2016 M/Gateway Developments Ltd "firstNode" 6 "lastNode" 2 "node" 4 list "myList" "nodeCounter" 6 "nextNode" 2 "previousNode" 5 "value" "George" 5 "nextNode" 4 "value" "Rob" 2 "value" "John" "previousNode" 4 6 "nextNode" 5 "value" "Chris" Linked List Chris Rob George John "previousNode" 6
  • 26. Copyright © 2016 M/Gateway Developments Ltd 1 1 "First Cell" 3 "Third Cell" ^table "myTable" Table Name Row No Column No Cell Value 5 "Fifth Cell" 2 2 "Second Cell" 3 "Third Cell" 3 4 "Fourth Cell" 5 "Fifth Cell" Tabular / Columnar
  • 27. Copyright © 2016 M/Gateway Developments Ltd 1 7 2 name = "Rob" name = "George" name = "John"disclosure = public age = 3 days disclosure = public age = 2 years Graph
  • 28. Copyright © 2016 M/Gateway Developments Ltd 1 7 2 name = "Rob" name = "George" name = "John"disclosure = public age = 3 days disclosure = public age = 2 years Graph 1 person 2 7 "name" "Rob" "knows" 2 7 "" "disclosure" "public" "timestamp" "2008-08-16T12:23:01Z" "" "name" "John" "name" "George" "knows" 2 "" "disclosure" "public" "timestamp" "2009-12-16T10:06:44Z"
  • 29. Copyright © 2016 M/Gateway Developments Ltd 1 7 2 name = "Rob" name = "George" name = "John"disclosure = public age = 3 days disclosure = public age = 2 years Graph 1 person 2 7 "name" "Rob" "knows" 2 7 "" "disclosure" "public" "timestamp" "2008-08-16T12:23:01Z" "" "name" "John" "name" "George" "knows" 2 "" "disclosure" "public" "timestamp" "2009-12-16T10:06:44Z"
  • 30. Copyright © 2016 M/Gateway Developments Ltd 1 7 2 name = "Rob" name = "George" name = "John"disclosure = public age = 3 days disclosure = public age = 2 years Graph 1 person 2 7 "name" "Rob" "knows" 2 7 "" "disclosure" "public" "timestamp" "2008-08-16T12:23:01Z" "" "name" "John" "name" "George" "knows" 2 "" "disclosure" "public" "timestamp" "2009-12-16T10:06:44Z"
  • 31. Copyright © 2016 M/Gateway Developments Ltd 1 7 2 name = "Rob" name = "George" name = "John"disclosure = public age = 3 days disclosure = public age = 2 years Graph 1 person 2 7 "name" "Rob" "knows" 2 7 "" "disclosure" "public" "timestamp" "2008-08-16T12:23:01Z" "" "name" "John" "name" "George" "knows" 2 "" "disclosure" "public" "timestamp" "2009-12-16T10:06:44Z"
  • 32. Copyright © 2016 M/Gateway Developments Ltd 1 7 2 name = "Rob" name = "George" name = "John"disclosure = public age = 3 days disclosure = public age = 2 years Graph 1 person 2 7 "name" "Rob" "knows" 2 7 "" "disclosure" "public" "timestamp" "2008-08-16T12:23:01Z" "" "name" "John" "name" "George" "knows" 2 "" "disclosure" "public" "timestamp" "2009-12-16T10:06:44Z"
  • 33. Copyright © 2016 M/Gateway Developments Ltd 1 7 2 name = "Rob" name = "George" name = "John"disclosure = public age = 3 days disclosure = public age = 2 years Graph 1 person 2 7 "name" "Rob" "knows" 2 7 "" "disclosure" "public" "timestamp" "2008-08-16T12:23:01Z" "" "name" "John" "name" "George" "knows" 2 "" "disclosure" "public" "timestamp" "2009-12-16T10:06:44Z"
  • 34. Copyright © 2016 M/Gateway Developments Ltd Document Database myGlobal "a" 123 "b" "c2" "foo2" "d" "c1" "foo" "e2" "e1" "f2" "bar2" "f1" "bar1" "f2" "bar2" "f1" "bar1" "f3" "bar3" myGlobal = { a: 123, b: { c1: 'foo', c2: 'foo2' } d: { e1: { f1: 'bar1', f2: 'bar2' }, e2: { f1: 'bar1', f2: 'bar2', f3: 'bar3' } } }
  • 35. Copyright © 2016 M/Gateway Developments Ltd Other models possible • Relational – In fact Caché supports Relational storage, through modelling on Global Storage • Object – Also supported by Caché • Native XML Database – eXtc (now deprecated) • http://www.mgateway.com/eXtcOverview4_0.pdf • SimpleDB emulation – https://github.com/robtweed/node-mdb