aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides130
-rw-r--r--locale/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po133
-rw-r--r--locale/fr/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po133
-rw-r--r--locale/pt/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po133
4 files changed, 488 insertions, 41 deletions
diff --git a/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides b/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides
index a18700d..8f207c9 100644
--- a/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides
+++ b/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides
@@ -13,16 +13,23 @@ published: false
---
+# Premise
+
+Datomic's bottleneck is **write** throughput, not read
+
+---
+
When creating a new service...
---
```clojure
-(defn prototype->database
- [prototype]
- (if (= :global prototype)
- :datomic
- #{:dynamodb :redis :nothing}))
+(defn database-for-service
+ [service]
+ (let [prototype (prototype-for-service service)]
+ (if (= :global prototype)
+ :datomic
+ #{:dynamodb :redis :nothing})))
```
---
@@ -31,11 +38,117 @@ When creating a new service...
---
-notifications vs toasty
+The deciding factor shouldn't be the prototype, but the **cardinality**
+
+---
+
+```diff
+ (defn database-for-service
+ [service]
+- (let [prototype (prototype-for-service service)]
+- (if (= :global prototype)
+- :datomic
+- #{:dynamodb :redis :nothing})))
++ (let [cardinality (cardinality-for-service service)]
++ (if (= :too-high cardinality)
++ #{:dynamodb :redis :nothing
++ :datomic))))
+```
+
+---
+
+```clojue
+(defn database-for-service
+ [service]
+ (let [cardinality (cardinality-for-service service)]
+ (if (= :too-high cardinality)
+ #{:dynamodb :redis :nothing
+ :datomic))))
+```
+
+---
+
+But how to determine when the cardinality is
+
+**`:too-high`**?
+
+---
+
+Let's think about the cardinality of existing services we know
+
+---
+
+What is the cardinality of...
+
+---
+
+# savings-accounts
+
+---
+
+# inductor
+
+---
+
+# crebito
+
+---
+
+# diablo
+
+---
+
+# lost-boy?
+
+---
+
+# hook?
+
+---
+
+# ledger
+
+---
+
+# blackleach
+
+---
+
+# notification
+
+---
+
+# toasty
+
+---
+
+# auth
+
+---
+
+# waypoint
+
+---
+
+# jurassic-park
+
+---
+
+Compare the database choice of services with similar cardinalities:
+
+## notifications vs toasty
+
+---
+
+Compare different cardinalities for services on global prototype:
+
+## jurassic-park vs auth
+
+---
-jurassic-park vs auth
+Compare different cardinality for different services inside the same domain:
-blackleach -> diablo -> ledger
+## savings-accounts -> blackleach -> diablo -> ledger
---
@@ -45,3 +158,4 @@ References:
1. these slides: [{{ site.tld }}/slides.html]({% link slides.md %})
2. [prose version of this presentation]({% link _articles/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.md %})
+3. "[Understanding Database Sharding](https://www.digitalocean.com/community/tutorials/understanding-database-sharding)"
diff --git a/locale/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po b/locale/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
index 9d17530..78298f6 100644
--- a/locale/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
+++ b/locale/eo/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
@@ -20,14 +20,6 @@ msgstr ""
msgid "When creating a new service..."
msgstr ""
-msgid ""
-"(defn prototype->database\n"
-" [prototype]\n"
-" (if (= :global prototype)\n"
-" :datomic\n"
-" #{:dynamodb :redis :nothing}))\n"
-msgstr ""
-
msgid "...which is, in my opinion, a poor heuristic."
msgstr ""
@@ -37,9 +29,6 @@ msgstr ""
msgid "jurassic-park vs auth"
msgstr ""
-msgid "blackleach -> diablo -> ledger"
-msgstr ""
-
msgid "Thank you!"
msgstr ""
@@ -53,3 +42,125 @@ msgid ""
"[prose version of this presentation]({% link _articles/2020-10-22-datomic-"
"on-global-good-reasons-for-and-against-it.md %})"
msgstr ""
+
+msgid "Premise"
+msgstr ""
+
+msgid "Datomic's bottleneck is **write** throughput, not read"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [prototype (prototype-for-service service)]\n"
+" (if (= :global prototype)\n"
+" :datomic\n"
+" #{:dynamodb :redis :nothing})))\n"
+msgstr ""
+
+msgid ""
+"The deciding factor shouldn't be the prototype, but the **cardinality**"
+msgstr ""
+
+msgid ""
+" (defn database-for-service\n"
+" [service]\n"
+"- (let [prototype (prototype-for-service service)]\n"
+"- (if (= :global prototype)\n"
+"- :datomic\n"
+"- #{:dynamodb :redis :nothing})))\n"
+"+ (let [cardinality (cardinality-for-service service)]\n"
+"+ (if (= :too-high cardinality)\n"
+"+ #{:dynamodb :redis :nothing\n"
+"+ :datomic))))\n"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [cardinality (cardinality-for-service service)]\n"
+" (if (= :too-high cardinality)\n"
+" #{:dynamodb :redis :nothing\n"
+" :datomic))))\n"
+msgstr ""
+
+msgid "But how to determine when the cardinality is"
+msgstr ""
+
+msgid "**`:too-high`**?"
+msgstr ""
+
+msgid "Let's think about the cardinality of existing services we know"
+msgstr ""
+
+msgid "What is the cardinality of..."
+msgstr ""
+
+msgid "savings-accounts"
+msgstr ""
+
+msgid "inductor"
+msgstr ""
+
+msgid "crebito"
+msgstr ""
+
+msgid "diablo"
+msgstr ""
+
+msgid "lost-boy?"
+msgstr ""
+
+msgid "hook?"
+msgstr ""
+
+msgid "ledger"
+msgstr ""
+
+msgid "blackleach"
+msgstr ""
+
+msgid "notification"
+msgstr ""
+
+msgid "toasty"
+msgstr ""
+
+msgid "auth"
+msgstr ""
+
+msgid "waypoint"
+msgstr ""
+
+msgid "jurassic-park"
+msgstr ""
+
+msgid "Compare the database choice of services with similar cardinalities:"
+msgstr ""
+
+msgid "Compare different cardinalities for services on global prototype:"
+msgstr ""
+
+msgid ""
+"Compare different cardinality for different services inside the same domain:"
+msgstr ""
+
+msgid "savings-accounts -> blackleach -> diablo -> ledger"
+msgstr ""
+
+msgid ""
+"\"[Understanding Database "
+"Sharding](https://www.digitalocean.com/community/tutorials/understanding-"
+"database-sharding)\""
+msgstr ""
+
+#~ msgid ""
+#~ "(defn prototype->database\n"
+#~ " [prototype]\n"
+#~ " (if (= :global prototype)\n"
+#~ " :datomic\n"
+#~ " #{:dynamodb :redis :nothing}))\n"
+#~ msgstr ""
+
+#~ msgid "blackleach -> diablo -> ledger"
+#~ msgstr ""
diff --git a/locale/fr/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po b/locale/fr/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
index 9d17530..78298f6 100644
--- a/locale/fr/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
+++ b/locale/fr/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
@@ -20,14 +20,6 @@ msgstr ""
msgid "When creating a new service..."
msgstr ""
-msgid ""
-"(defn prototype->database\n"
-" [prototype]\n"
-" (if (= :global prototype)\n"
-" :datomic\n"
-" #{:dynamodb :redis :nothing}))\n"
-msgstr ""
-
msgid "...which is, in my opinion, a poor heuristic."
msgstr ""
@@ -37,9 +29,6 @@ msgstr ""
msgid "jurassic-park vs auth"
msgstr ""
-msgid "blackleach -> diablo -> ledger"
-msgstr ""
-
msgid "Thank you!"
msgstr ""
@@ -53,3 +42,125 @@ msgid ""
"[prose version of this presentation]({% link _articles/2020-10-22-datomic-"
"on-global-good-reasons-for-and-against-it.md %})"
msgstr ""
+
+msgid "Premise"
+msgstr ""
+
+msgid "Datomic's bottleneck is **write** throughput, not read"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [prototype (prototype-for-service service)]\n"
+" (if (= :global prototype)\n"
+" :datomic\n"
+" #{:dynamodb :redis :nothing})))\n"
+msgstr ""
+
+msgid ""
+"The deciding factor shouldn't be the prototype, but the **cardinality**"
+msgstr ""
+
+msgid ""
+" (defn database-for-service\n"
+" [service]\n"
+"- (let [prototype (prototype-for-service service)]\n"
+"- (if (= :global prototype)\n"
+"- :datomic\n"
+"- #{:dynamodb :redis :nothing})))\n"
+"+ (let [cardinality (cardinality-for-service service)]\n"
+"+ (if (= :too-high cardinality)\n"
+"+ #{:dynamodb :redis :nothing\n"
+"+ :datomic))))\n"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [cardinality (cardinality-for-service service)]\n"
+" (if (= :too-high cardinality)\n"
+" #{:dynamodb :redis :nothing\n"
+" :datomic))))\n"
+msgstr ""
+
+msgid "But how to determine when the cardinality is"
+msgstr ""
+
+msgid "**`:too-high`**?"
+msgstr ""
+
+msgid "Let's think about the cardinality of existing services we know"
+msgstr ""
+
+msgid "What is the cardinality of..."
+msgstr ""
+
+msgid "savings-accounts"
+msgstr ""
+
+msgid "inductor"
+msgstr ""
+
+msgid "crebito"
+msgstr ""
+
+msgid "diablo"
+msgstr ""
+
+msgid "lost-boy?"
+msgstr ""
+
+msgid "hook?"
+msgstr ""
+
+msgid "ledger"
+msgstr ""
+
+msgid "blackleach"
+msgstr ""
+
+msgid "notification"
+msgstr ""
+
+msgid "toasty"
+msgstr ""
+
+msgid "auth"
+msgstr ""
+
+msgid "waypoint"
+msgstr ""
+
+msgid "jurassic-park"
+msgstr ""
+
+msgid "Compare the database choice of services with similar cardinalities:"
+msgstr ""
+
+msgid "Compare different cardinalities for services on global prototype:"
+msgstr ""
+
+msgid ""
+"Compare different cardinality for different services inside the same domain:"
+msgstr ""
+
+msgid "savings-accounts -> blackleach -> diablo -> ledger"
+msgstr ""
+
+msgid ""
+"\"[Understanding Database "
+"Sharding](https://www.digitalocean.com/community/tutorials/understanding-"
+"database-sharding)\""
+msgstr ""
+
+#~ msgid ""
+#~ "(defn prototype->database\n"
+#~ " [prototype]\n"
+#~ " (if (= :global prototype)\n"
+#~ " :datomic\n"
+#~ " #{:dynamodb :redis :nothing}))\n"
+#~ msgstr ""
+
+#~ msgid "blackleach -> diablo -> ledger"
+#~ msgstr ""
diff --git a/locale/pt/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po b/locale/pt/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
index 9d17530..78298f6 100644
--- a/locale/pt/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
+++ b/locale/pt/LC_MESSAGES/_slides/2020-10-22-datomic-on-global-good-reasons-for-and-against-it.slides.po
@@ -20,14 +20,6 @@ msgstr ""
msgid "When creating a new service..."
msgstr ""
-msgid ""
-"(defn prototype->database\n"
-" [prototype]\n"
-" (if (= :global prototype)\n"
-" :datomic\n"
-" #{:dynamodb :redis :nothing}))\n"
-msgstr ""
-
msgid "...which is, in my opinion, a poor heuristic."
msgstr ""
@@ -37,9 +29,6 @@ msgstr ""
msgid "jurassic-park vs auth"
msgstr ""
-msgid "blackleach -> diablo -> ledger"
-msgstr ""
-
msgid "Thank you!"
msgstr ""
@@ -53,3 +42,125 @@ msgid ""
"[prose version of this presentation]({% link _articles/2020-10-22-datomic-"
"on-global-good-reasons-for-and-against-it.md %})"
msgstr ""
+
+msgid "Premise"
+msgstr ""
+
+msgid "Datomic's bottleneck is **write** throughput, not read"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [prototype (prototype-for-service service)]\n"
+" (if (= :global prototype)\n"
+" :datomic\n"
+" #{:dynamodb :redis :nothing})))\n"
+msgstr ""
+
+msgid ""
+"The deciding factor shouldn't be the prototype, but the **cardinality**"
+msgstr ""
+
+msgid ""
+" (defn database-for-service\n"
+" [service]\n"
+"- (let [prototype (prototype-for-service service)]\n"
+"- (if (= :global prototype)\n"
+"- :datomic\n"
+"- #{:dynamodb :redis :nothing})))\n"
+"+ (let [cardinality (cardinality-for-service service)]\n"
+"+ (if (= :too-high cardinality)\n"
+"+ #{:dynamodb :redis :nothing\n"
+"+ :datomic))))\n"
+msgstr ""
+
+msgid ""
+"(defn database-for-service\n"
+" [service]\n"
+" (let [cardinality (cardinality-for-service service)]\n"
+" (if (= :too-high cardinality)\n"
+" #{:dynamodb :redis :nothing\n"
+" :datomic))))\n"
+msgstr ""
+
+msgid "But how to determine when the cardinality is"
+msgstr ""
+
+msgid "**`:too-high`**?"
+msgstr ""
+
+msgid "Let's think about the cardinality of existing services we know"
+msgstr ""
+
+msgid "What is the cardinality of..."
+msgstr ""
+
+msgid "savings-accounts"
+msgstr ""
+
+msgid "inductor"
+msgstr ""
+
+msgid "crebito"
+msgstr ""
+
+msgid "diablo"
+msgstr ""
+
+msgid "lost-boy?"
+msgstr ""
+
+msgid "hook?"
+msgstr ""
+
+msgid "ledger"
+msgstr ""
+
+msgid "blackleach"
+msgstr ""
+
+msgid "notification"
+msgstr ""
+
+msgid "toasty"
+msgstr ""
+
+msgid "auth"
+msgstr ""
+
+msgid "waypoint"
+msgstr ""
+
+msgid "jurassic-park"
+msgstr ""
+
+msgid "Compare the database choice of services with similar cardinalities:"
+msgstr ""
+
+msgid "Compare different cardinalities for services on global prototype:"
+msgstr ""
+
+msgid ""
+"Compare different cardinality for different services inside the same domain:"
+msgstr ""
+
+msgid "savings-accounts -> blackleach -> diablo -> ledger"
+msgstr ""
+
+msgid ""
+"\"[Understanding Database "
+"Sharding](https://www.digitalocean.com/community/tutorials/understanding-"
+"database-sharding)\""
+msgstr ""
+
+#~ msgid ""
+#~ "(defn prototype->database\n"
+#~ " [prototype]\n"
+#~ " (if (= :global prototype)\n"
+#~ " :datomic\n"
+#~ " #{:dynamodb :redis :nothing}))\n"
+#~ msgstr ""
+
+#~ msgid "blackleach -> diablo -> ledger"
+#~ msgstr ""