问题标签 [datomic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 第二组关注原子错误
这是 Datomic 邮件列表中的重复帖子。我想知道我是否可以要求第二双眼睛。
我尝试做A)运行没有错误。但是我后来在查询时得到了一个空结果。所以我尝试了硬编码,如B)。但是,这个错误,说日期uuid
对属性无效:tags/name
......但是在那笔交易中,我没有尝试设置:tags/name
属性。我正在为:posts/created-date
和设置日期:posts/modified-date
。我在这里完全不知所措。
如果我检查数据库,如在C)中,我可以看到我的模式确实存在。我的架构在底部。任何见解都值得赞赏。
谢谢
一个)
二)
C)
架构
database - 如何传入 Datomic 函数(用于 Clojure API)
使用 Clojure 的 Datomic APi,我有一个架构,我想在其中传递一个事务函数以执行。但是,尝试调用传入的事务函数不起作用。repl 将其识别为符号。它进行了评估,但没有提交任何数据,也没有返回任何未来,这意味着没有返回的事务 ID。
但是,直接调用(datomic.api/transact conn [adatom])
,按预期工作。我怎样才能使上述情况起作用?
谢谢
clojure - 将“变量”的动态数量传递给 Datomic API 函数
这是我在 Datomic google group 上提出的一个问题的转贴(见这里 - 最后 3 个帖子最好)。
这个问题围绕着我动态生成 Datomic 查询这一事实。所以参数(名称和值)的数量在传递给函数之前是未知的。我可以很好地生成查询。核心问题是,使用 Clojure Datomic API,我无法使用动态数量的参数调用datomic.api/q函数。所以下面的~@unquote-splice表达式失败了。我尝试了其他几种方法,包括partial和apply,但无济于事。
我想知道这是否是 Datomic Clojure API 中的错误?或者,如果有更简单的方法来传递动态数量的变量。硬编码传入的变量数量,违背了动态生成查询的目的。请参阅此处的最后3 个帖子,以获取更多详细信息。
谢谢
datomic - 选择某个属性值最高的实体
假设我的后端有一百万篇文章实体,其inst属性称为date,或者有一百万个玩家实体,其int属性称为points。挑选10篇最新文章或得分最高的球员有什么好方法?
我是否需要将全部数百万美元提取给对等方,然后从他们那里分类并丢弃?
time - 将比上一个事务更早的数据导入到 datomic
我是否正确理解这一点?
http://docs.datomic.com/transactions.html
您可以显式设置 :db/txInstant,覆盖交易者的时钟时间。当你这样做时,你必须选择一个不比任何现有事务更早的 :db/txInstant 值,并且不比事务处理者的时钟时间新。此功能支持初始导入现有数据
这是否意味着我不能以查询 as-of 的方式将事实添加到比上一个事务更旧的 datomic 中?
这似乎是一个巨大的限制。与其他系统交互时该怎么办?例如,我可能会从昨天获得有关订单的数据,但店员今天才有时间将其输入系统。如果今天有人输入任何事实,我将无法添加旧数据?
添加显式时间属性并在所有查询中使用它是唯一的选择吗?
clojure - Retrieve Most Recent Entity from Datomic
I'm interested in entities and their timestamps. Essentially, I want a time-sorted list of entities.
To that end, I've composed the following functions:
Which I feel must be a hack rooted in ignorance.
Would someone more well-versed in idiomatic Datomic usage chime in and upgrade my paradigms?
maven - Leiningen 父级 > 子级 > 第 3 方库依赖错误
我正在使用 leiningen 同时开发 2 个项目(请参阅此处的Checkout Dependencies )。这是有效的,我已经达到了我想要部署这两个库的地步。假设它们是lib-parent,它使用lib-child。
现在,我已将lib-child部署到 clojars ( lein deploy clojars
)。但是,如果我现在将lib-child作为项目依赖项包含在lib-parent中,我将无法加载lib-child,因为它的依赖项之一(Datomic 和它使用com.google.common.cache.Cache)不会加载. 在 repl 上运行(require 'lib-child.plugin)
会给我一个ClassNotFoundException : com.google.common.cache.Cache。
这是i)一般的 leiningen 依赖问题还是ii) Datomic 没有获得所有依赖的问题?我正在使用[com.datomic/datomic-free "0.8.4143" :exclusions [org.slf4j/slf4j-nop org.slf4j/log4j-over-slf4j]]
.
谢谢
clojure - 我如何帮助 Clojure 理解 0 是最小的自然数?
在 Clojure 中定义自然数的惰性序列很容易:(def N (iterate inc 0))
. 不出所料,如果我们要求 Clojure 使用 找到 N 的最小值(apply min N)
,它就会陷入无限回归。
(= 0 (min N))
有没有办法在N 的数据结构中“构建”这一事实?隐含地,我们知道这一点,因为增量函数inc
是严格递增的。该min
函数不知道如何利用这些知识,而是试图以暴力方式找到答案。
我不知道如何以编程方式对此进行编码。我想要一种方法来构造具有附加结构(如约束和关系)的惰性序列)。我还想要一种利用这些约束来解决优化问题的方法(比如找到序列的最小值或下确界)。
有没有办法在原生 Clojure 中做到这一点?Datomic怎么样?
datomic - Datomic 如何支持校正?
在 Rich Hickey 的演讲“价值的价值”中,他认为要获得真实的信息,我们不应该用新的事实代替旧的事实,而要让两者都带有时间戳。
例如,如果用户更改了他们的电子邮件地址,我们不应该用新地址覆盖旧地址,而是要记住“地址在 [timestamp] 时是 user5@example.com,然后是 user5new@example。 com截至[时间戳]”。
这作为数据完整性原则是有道理的,我相信这是构建 Datomic 的原则。但是,如果这是真的,Datomic 是如何处理错误的呢?例如,如果用户输错了他们的电子邮件地址,我们不想报告它曾经是“luser5@example.com”;我们想忘记那个不正确的信息。
这是怎么做到的?
backup - Datomic 备份失败,我不知道为什么
我真正想做的是将一堆数据组数据从我的实验室主机转移到我的新暂存主机。
实验室是我们办公室壁橱里的一台电脑。Staging 是我们在郊区托管站点的新硬件。
我认为备份是处理这个问题的最佳方式,但我对其他想法持开放态度。
我在实验室的交易主机上执行此操作(凭证已清理)
- /tmp/backup 已创建。
然后这个过程爆炸了:
java.util.concurrent.ExecutionException: org.postgresql.util.PSQLException: FATAL: 用户“datomic”的密码验证失败...原因:org.postgresql.util.PSQLException: FATAL: 用户“datomic”的密码验证失败...
该端口在事务主机和数据库服务器之间打开(已编辑)。使用 psql 我可以使用这些凭据从数据库主机和本地工作站登录。
日志文件