Advertisement
Advertisement

More Related Content

More from Rob Tweed(20)

Advertisement

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
Advertisement