diff options
Diffstat (limited to '')
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 "" |