datomic相关内容
我应该如何选择 Datomic 的后端存储服务? 选择 DynamoDB 而不是 Postgres 是偏好问题,还是每个选项都有不同的权衡?如果有,它们是什么? 解决方案 存储服务要求 Datomic 的存储服务一般应满足 3 个要求: 实现键值存储语义:使用索引键的值进行高效的读/写访问 支持一致读取.例如阅读你自己的作品.理想情况下,无争用/无锁读取. 支持条件看
..
假设我将 :user/name 和 :user/gender 安装为数据模式. (pprint (d/q '[:find ?ident :where[?e :db/ident ?ident][_ :db.install/attribute ?e]] (d/db conn))) 查找所有 db.install/attributes #{[:db/code] [:user/gender] [:
..
假设我有实体 entry 和 ref-to-many 属性 :entry/groups.我应该如何构建查询以查找其 :entry/groups 属性包含所有我输入的外部 ID 的实体? 下一个伪代码将更好地说明我的问题: [2 3] ;将此作为输入外来 ID;;并在数据库中有这些条目实体[{:entry/id "A" :entry/groups [2 3 4]}{:entry/id "B"
..
我正在寻找有关在Datomic中对某些关系建模的方法的反馈。 问题 假设我要为一个人在其中拥有喜欢的电影列表的域设计Datomic模式。例如, John 最喜欢的电影是 Gladiator , Star Wars 和 Fight Club 。 在Datomic中对此建模最明显的方案是基数很多属性,例如: #{[“ John”:person / favorite-movies
..
我意识到我们不需要datomic中的普通数据透视表,因为我们可以选择关系的一侧,并在其上放置:db.cardinality / many 属性那里(请务必仅在一个方向上对 )。 我从sql转换时遇到的下一件事是数据透视表,该数据透视表还存储关系的属性,例如: series_subscriptions user_id int series_id int expires_at
..
背景 在分布式系统中,消息可能以乱序的方式到达。例如,如果在时间T1发送消息A,在时间T2发送消息B,则有可能在A之前接收到B。例如,如果A是消息,例如“ CustomerRegistered”,而B是“ CustomerUnregistered”,则这很重要。 在其他数据库中,如果收到数据库中不存在的客户的CustomerUnregistered,我通常会写一个墓碑。然后,当接收到C
..
我正在构建一个原子模式,并在 clj 文件的底部具有以下内容,该文件定义并处理模式和初始数据。每次调用下面被调用的函数 d / transact 。 (defn recreate-database [] “在bin / repl中运行delete-database后要重新创建db” (pt1-transact-schema) (pt1-transact-数据) (pt2-transact
..
在Datomic数据库中,我有一个与此相似的架构: ; ---租户 {:db / id#db / id [:db.part / db] :db / ident:tenant / guid :db / unique:db.unique /身份 :db / valueType:db.type / string :db / cardinality:db.cardinality / one
..
在Clojure中遇到此错误时会发生什么情况? java.lang.RuntimeException:标记db没有读取器功能/ id 解决方案 标记文字 此错误消息与Clojure 1.7中引入的功能有关, 带标签的文字。标记文字是扩展 的一种简单方法,它可以在Clojure代码或 EDN中将哪些数据类型表示为文字 数据。 Clojure附带了带有
..
说我安装了:user / name 和:user / gender 作为基本模式。 (pprint(d / q'[:find?ident:where [?e:db / ident?ident] [_:db.install / attribute?e]](d / db conn))) 找到所有的db.install /属性 #{[:db / code] [:us
..
假设我有实体 entry ,且具有ref-to-many属性:entry / groups 。我应该如何构建查询以查找其:entry / groups 属性包含我所有输入的外国ID的实体? 下一个伪代码将更好地说明我的问题: [2 3];将其作为输入的外国ID ;;并将这些条目实体放入db [{:entry / id“ A”:entry / groups [2 3 4]}
..
在关系数据库中,我可以有一个表Person和一个表Hobby.每个人都可以拥有零个,一个或多个爱好,我还想记录每个人对这些爱好的优先级. 我可以用两个外键PersonFK和HobbyFK以及一个普通列Priority创建一个关系表. 在原子论中,为了建模简单的n:m关系(无优先级),我可能会创建类型为Reference且基数为Many 的属性用于Person实体. 但是我将如何限
..
我想在Heroku上使用Datomic Pro(现在的Starter Edition)。但我不想将我的下载密钥提交到Git。相反,正确的做法似乎是将其存储在环境变量中。这意味着我的 project.clj 现在包含: :dependencies [[ org.clojure / clojure“1.5.1”] [com.datomic / datomic-pro“0.9.4707”]]
..
我试图找到所有用户创建的属性与下面的代码,它返回许多其他默认属性,如 db / unique 和 fressian /标签。 我想得到一个没有他们的集合,所以我想知道是否有一个更好的方式来获得它比过滤出属性的前缀。 p> 感谢 (q {:find'[?ident] :where'[[:db.part / db:db.install / attribute?p] [?p:db
..
背景 我使用Datomic存储由其他系统生成的事件的投影(在这种情况下,投影可以被视为实体在Datomic)。这些事件具有与它们相关联的时间戳,用于告知事件何时(例如)创建。这显然不同于在投影中存储新属性(基于事件)时Datomic将分配给事务的事务时间。我的应用程序的用户对事务时间不感兴趣,而是事件时间。我首先使用Datomic的原因是为了能够获得一个实体(或查询数据库),因为它在特定的时
..
我在几个项目中使用Datomic,现在是时候把所有的公共代码移动到一个小的实用程序库。 一个挑战是处理大多数操作所依赖的共享数据库 uri ,但必须设置该项目使用库。我想知道是否有一个完善的方法来做到这一点。以下是我想到的一些替代方案: 删除 uri 通过 alter-var->变量修改 root $ / $> 在动态库中保存它 * uri * 并覆盖希望的小适配器层中的值
..
在基于解放者的clojure项目中,我们使用数据库作为DB。将我们的本地dev数据库迁移到S3托管的一个,并添加所需的依赖项在我们的project.clj我们不能启动REPL,但Liberator堆栈运行良好通过 lein run 我的猜测是数据库连接是搞乱了,所以,问题是,我怎么能“调试”或弄清楚这是什么的原因 lein repl 超时? 我的project.clj (defp
..
当我在lighttable中评估此代码时: (ns app.core (:require [datomic。 api:refer [q]:as d] :reload-all)) (defn add-person [conn id] [{:db / id#db / id [:db.part / user -1000001] :person / id id}]))
..
在我在数据集中运行事务以插入值后,我如何使用事务的返回值来获取创建的任何实体的ID? 这里是插入后的返回值的示例: #
..
也许我仍然在思考sql,但我无法编写一个简单的博客的数据库模式。 我不太理解:db / cardinality 属性及其含义。 系统支持多个用户 每个用户可能有许多用户 每篇文章可能有许多评论 每个评论都有一个用户 解决方案 查看下图并在 https://gist.github.com/a2ndrade/5651419 。它可以帮助您了解如何在Datomic中建模数据
..