Save 37% off PRO during our Black Friday Sale! »

Data-Oriented Architecture (LambdaDays 2016)

Data-Oriented Architecture (LambdaDays 2016)

3dffcb3d181fe9842dc4b4d34a8238ca?s=128

Norbert Wójtowicz

February 19, 2016
Tweet

Transcript

  1. ORIENTED ARCHITECTURE DATA

  2. @pithyless

  3. None
  4. None
  5. None
  6. OPINIONS

  7. None
  8. ǡ

  9. ǡ Dž

  10. ǽ ǡ Dž

  11. ȓ ǽ ǡ Dž

  12. ȓ ǽ ǡ Dž

  13. “PRODUCT”

  14. INFORMATION SYSTEMS

  15. None
  16. INFORMATION SYSTEMS

  17. TECHNICAL DEBT

  18. FUNCTIONAL PROGRAMMING

  19. PREACHED TO COLLEAGUES

  20. PREACHED TO AND FAILED. COLLEAGUES

  21. None
  22. None
  23. SOA MVC DRYTDD

  24. SNAKE OIL

  25. ENCAPSULATION

  26. None
  27. MVC

  28. MVC

  29. SOA

  30. SOA MVC MVC MVC MVC

  31. None
  32. None
  33. None
  34. DUPLICATION

  35. SOURCE OF TRUTH

  36. None
  37. None
  38. RELIABILITY

  39. CONFIDENCE

  40. TYPES / SCHEMAS ASSERTIONS PROPERTY TESTING

  41. None
  42. None
  43. JUST TOOLS

  44. NOT RELIGION

  45. None
  46. DATA

  47. DATA QUEUES

  48. DATA QUEUES

  49. DATA QUEUES

  50. PROJECTS FAIL

  51. 1. Not understanding the domain.

  52. 1. Not understanding the domain. 2. Not modeling the domain.

  53. 1. Not understanding the domain. 2. Not modeling the domain.

    3. Breaking #1 or #2, and failing to adapt.
  54. SOUL-SEARCHING

  55. 1. model essence of things

  56. 1. model essence of things 2. don’t violate physics

  57. / .

  58. 1. DATA 2. FLOW 3. ???? 4. PROFIT!!!

  59. 1. DATA

  60. immutable

  61. real world is immutable

  62. real world is immutable

  63. semantic

  64. recursive

  65. #scalar string boolean number

  66. #identity symbol keyword

  67. #collection list map vector set

  68. #custom #uuid “de305d54-…” #inst “2016-02-18…”

  69. 2. FLOW

  70. f(A)=B

  71. A f B

  72. f(A)=B

  73. 3. ???

  74. FACTS ➟LOG QUESTIONS ANSWERS ➟

  75. FACTS

  76. None
  77. You must be shapeless, formless, like water. Water can drip

    and it can crash.
  78. FLAT DATA WATER

  79. [e a v t]

  80. [e a v t true?]

  81. [1 :name “Bob”]

  82. [1 :name “Bob” 100]

  83. [1 :name “Bob” 100 true]

  84. [1 :name “Bob” 100 true] [1 :likes “Cats” 100 true]

    … [1 :likes “Dogs” 111 true]
  85. [1 :name “Bob” 100 true] [1 :likes “Cats” 100 true]

    … [1 :likes “Cats” 111 false] [1 :likes “Dogs” 111 true]
  86. [1 :name “Bob” 100 true] [2 :name “Mary” 100 true]

    … [1 :likes 2 111 true] … [2 :likes 1 222 true]
  87. [1 :likes 2] [1 :likes [:name “Mary”]]

  88. [e a v t]

  89. LOG

  90. APPEND ONLY

  91. TOTAL ORDER

  92. BUSINESS DATA SOURCE CODE

  93. Q & A

  94. Log Q

  95. Log Q DB Q DB Q DB

  96. QUERIES!

  97. DO YOU SQL BRO?

  98. None
  99. AUDITING

  100. LOG #index #index

  101. RELATIONAL (ROW)

  102. [e a v t] #index #index

  103. [:find ?name ?age :in $db ?id :where [?id :actor/name ?name]

    [?id :actor/age ?age]]
  104. [:find ?name ?age :in $db ?id :where [?id :actor/name ?name]

    [?id :actor/age ?age]]
  105. [:find ?name ?age :in $db ?id :where [?id :actor/name ?name]

    [?id :actor/age ?age]]
  106. [:find ?name ?age :in $db ?id :where [?id :actor/name ?name]

    [?id :actor/age ?age]]
  107. [:find ?name ?age :in $db ?id :where [?id :actor/name ?name]

    [?id :actor/age ?age]]
  108. RELATIONAL (COLUMN)

  109. [a e v t] #index #index

  110. [:find (avg ?age) :in $db :where [_ :actor/age ?age]]

  111. GRAPH

  112. [a v e t] #index

  113. [:find ?title :in $db ?first ?second :where [?a1 :actor/name ?first]

    [?a2 :actor/name ?second] [?a1 :actor/movies ?m] [?a2 :actor/movies ?m] [?m :movie/title ?title]]
  114. SEARCH

  115. inverted #index #index

  116. [:find ?m ?title ?score :in $db ?query :where [(fulltext $db

    :movie/title ?query) [[?m ?title _ ?score]]]]
  117. [e a v t]

  118. 4. PROFIT!

  119. REAL WORLD

  120. STREAM TREEMESH

  121. ROI

  122. None
  123. THEORY APPLIED

  124. QUEUES

  125. Learn Datalog Today .org

  126. SIMULATION/ PROPERTY TESTING

  127. LAMBDA ARCHITECTURE

  128. @martinkl

  129. DATOMIC

  130. OM/NEXT

  131. ONEMORE THING

  132. CRDT

  133. EOF

  134. @pithyless