SlideShare a Scribd company logo
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

More Related Content

PDF
Introduction to Json ld
PDF
When Cambridge Analytica Met Facebook: A Story of Dark UX and Shitty Business...
PPT
Pipl
PPT
Com 495 Discussion Leader
PDF
Shally source con2012
DOC
Done reread detecting phrase-level duplication on the world wide we
PPTX
Designing for Seniors
KEY
The Next Decade in Web Design
Introduction to Json ld
When Cambridge Analytica Met Facebook: A Story of Dark UX and Shitty Business...
Pipl
Com 495 Discussion Leader
Shally source con2012
Done reread detecting phrase-level duplication on the world wide we
Designing for Seniors
The Next Decade in Web Design

Viewers also liked (20)

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

Similar to EWD 3 Training Course Part 18: Modelling NoSQL Databases using Global Storage (20)

PDF
20141216 graph database prototyping ams meetup
PPTX
Introduction to Graph Databases
PDF
NoSQL overview #phptostart turin 11.07.2011
PDF
EWD 3 Training Course Part 23: Traversing a Range using DocumentNode Objects
PDF
Introduction to Neo4j - a hands-on crash course
PDF
QCon 2014 - How Shutl delivers even faster with Neo4j
PDF
Neo4j Introduction Workshop for Partners
PDF
Data Modeling with Neo4j
PPTX
Graph Database Query Languages
PPTX
Follow the money with graphs
PDF
managing big data
PPTX
Graphs in the Real World
KEY
Spring Data Neo4j Intro SpringOne 2011
PDF
DevFest Istanbul - a free guided tour of Neo4J
PDF
Soft Shake Event / A soft introduction to Neo4J
PDF
NoSQL Overview
PDF
How Shutl Delivers Even Faster Using Neo4J
PDF
Illustrating Graphs Visually through Neo4j Bloom
PDF
Neo4j: Graph-like power
PPT
Application Modeling with Graph Databases
20141216 graph database prototyping ams meetup
Introduction to Graph Databases
NoSQL overview #phptostart turin 11.07.2011
EWD 3 Training Course Part 23: Traversing a Range using DocumentNode Objects
Introduction to Neo4j - a hands-on crash course
QCon 2014 - How Shutl delivers even faster with Neo4j
Neo4j Introduction Workshop for Partners
Data Modeling with Neo4j
Graph Database Query Languages
Follow the money with graphs
managing big data
Graphs in the Real World
Spring Data Neo4j Intro SpringOne 2011
DevFest Istanbul - a free guided tour of Neo4J
Soft Shake Event / A soft introduction to Neo4J
NoSQL Overview
How Shutl Delivers Even Faster Using Neo4J
Illustrating Graphs Visually through Neo4j Bloom
Neo4j: Graph-like power
Application Modeling with Graph Databases
Ad

More from Rob Tweed (20)

PDF
QEWD Update
PPT
Data Persistence as a Language Feature
PPT
LNUG: Having Your Node.js Cake and Eating It Too
PPT
EWD 3 Training Course Part 45: Using QEWD's Advanced MicroService Functionality
PPT
EWD 3 Training Course Part 44: Creating MicroServices with QEWD.js
PPT
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST Services
PPT
QEWD.js, JSON Web Tokens & MicroServices
PPT
QEWD.js: Have your Node.js Cake and Eat It Too
PPT
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
PDF
qewd-ripple: The Ripple OSI Middle Tier
PPT
EWD 3 Training Course Part 42: The QEWD Docker Appliance
PDF
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 4
PDF
EWD 3 Training Course Part 39: Building a React.js application with QEWD, Part 3
PDF
EWD 3 Training Course Part 5b: First Steps in Building a QEWD Application
PDF
EWD 3 Training Course Part 38: Building a React.js application with QEWD, Part 2
PDF
EWD 3 Training Course Part 35: QEWD Session Locking
PDF
EWD 3 Training Course Part 34: QEWD Resilient Mode
PDF
EWD 3 Training Course Part 32: Configuring QEWD to use SSL/HTTPS
PPT
EWD 3 Training Course Part 31: Using QEWD for Web and REST Services
PDF
EWD 3 Training Course Part 30: Modularising QEWD Applications
QEWD Update
Data Persistence as a Language Feature
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 44: Creating MicroServices with QEWD.js
EWD 3 Training Course Part 43: Using JSON Web Tokens with QEWD REST Services
QEWD.js, JSON Web Tokens & MicroServices
QEWD.js: Have your Node.js Cake and Eat It Too
ewd-qoper8-vistarpc: Exposing VistA's RPCs as REST Services
qewd-ripple: The Ripple OSI Middle Tier
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 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 38: Building a React.js application with QEWD, Part 2
EWD 3 Training Course Part 35: QEWD Session Locking
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 31: Using QEWD for Web and REST Services
EWD 3 Training Course Part 30: Modularising QEWD Applications

Recently uploaded (20)

PDF
System and Network Administraation Chapter 3
PPTX
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
PPTX
assetexplorer- product-overview - presentation
PDF
medical staffing services at VALiNTRY
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
PDF
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
PDF
Design an Analysis of Algorithms I-SECS-1021-03
PDF
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
PDF
Adobe Illustrator 28.6 Crack My Vision of Vector Design
PPTX
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
PPTX
history of c programming in notes for students .pptx
PDF
Softaken Excel to vCard Converter Software.pdf
PPTX
L1 - Introduction to python Backend.pptx
PPTX
Reimagine Home Health with the Power of Agentic AI​
PDF
wealthsignaloriginal-com-DS-text-... (1).pdf
PDF
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
PDF
Internet Downloader Manager (IDM) Crack 6.42 Build 41
PDF
Which alternative to Crystal Reports is best for small or large businesses.pdf
PDF
Digital Strategies for Manufacturing Companies
PDF
PTS Company Brochure 2025 (1).pdf.......
System and Network Administraation Chapter 3
Lecture 3: Operating Systems Introduction to Computer Hardware Systems
assetexplorer- product-overview - presentation
medical staffing services at VALiNTRY
Internet Downloader Manager (IDM) Crack 6.42 Build 42 Updates Latest 2025
Addressing The Cult of Project Management Tools-Why Disconnected Work is Hold...
Design an Analysis of Algorithms I-SECS-1021-03
Adobe Premiere Pro 2025 (v24.5.0.057) Crack free
Adobe Illustrator 28.6 Crack My Vision of Vector Design
Oracle E-Business Suite: A Comprehensive Guide for Modern Enterprises
history of c programming in notes for students .pptx
Softaken Excel to vCard Converter Software.pdf
L1 - Introduction to python Backend.pptx
Reimagine Home Health with the Power of Agentic AI​
wealthsignaloriginal-com-DS-text-... (1).pdf
EN-Survey-Report-SAP-LeanIX-EA-Insights-2025.pdf
Internet Downloader Manager (IDM) Crack 6.42 Build 41
Which alternative to Crystal Reports is best for small or large businesses.pdf
Digital Strategies for Manufacturing Companies
PTS Company Brochure 2025 (1).pdf.......

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