问题标签 [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.
json - 在 Datomic 中序列化递归引用
我的 Datomic 数据库中有一个用户实体类型,它可以遵循其他用户类型。当一个用户关注另一个已经关注他们的用户时,我的问题就出现了:
当我尝试序列化(使用 Cheshire)时,由于(我猜):user/follows-users
属性上的无限递归,我得到了 StackOverflowError。
我将如何序列化(对于 API 的 json)两个以这种方式相互引用的 Datomic 实体?
这是一个基本架构:
一旦在 repl 上设置了数据库等:
clojure - 使用具有 datomic free 的数据库函数时出现 FileNotFoundException
使用需要命名空间的数据库函数时出现 FileNotFoundException。我只在使用持久性免费数据库时收到错误,但在使用内存数据库时没有。
当您评估评论中的第一行和第二行时,这很好,但是当您评估第三行时,您会遇到异常。
我是否需要在 datomic 中配置某些东西以便它可以“看到”我的项目?
clojure - 做交换的惯用方式!或使用 Datomic 更新
如果我使用 Clojure 原子来计算某些东西(例如投票),我可以这样做:
在这里,update-in
巧妙地转换给定键的值,而不必先查找它。
我怎样才能在 Datomic 中完成同样的任务?我可以做这样的事情......
但这似乎有点麻烦,必须运行查询,返回值,然后与新值进行交易。有没有更惯用的方法(如 aswap!
或update-in
)?
datomic - Datomic 中的查询路径(按照树中从根到叶子的属性)
我有一个带有 :node-left 和 :node-right 的树结构,它们连接相同类型的实体,直到这些属性不存在。
我有兴趣查询从根到叶子的路径,因此结果将是一个类型为 ([root, node1, leaf11] [root, node2, leaf21]) 的向量。
datomic - 数据库“价值”的本地副本和安全问题
据我了解,一个原子数据库被下载/复制到对等点上,所有查询都在对等点上完成。这如何安全?如果用户只被授权查看某些数据但实际上在他的机器上拥有所有数据,那么阻止他访问他不应该访问的数据的安全逻辑在哪里?
谢谢
datomic - 在 datomic 中使用触摸功能时出错
我在几个网站上阅读了有关 [touch] 以及应该如何使用它的信息,但它在我的测试中不起作用。我的 project.clj 使用以下内容:
我的代码使用了一些简单的属性:
和
在 REPL 会话中,我尝试过:
当我制作(in-ns'pet.core)时,我的简单测试也失败了。
我的测试出了什么问题?提前感谢一些提示!
clojure - 原子查询:查找所有具有某个值的实体
使用此查询:
我可以找到所有具有名为的属性:db/valueType
和值为:db.type/string
. 在我的情况下,数据库中有一些数据,它返回十个 ID。
:db.type/string
无论属性名称如何,我将如何搜索值为 的所有实体?例如这个查询:
返回一个空集。据我所知,Datomic 的 Datalog_
应该用作通配符,匹配任何内容,因此第二个查询至少应该返回与第一个相同数量的结果,甚至可能更多。
谢谢...
indexing - Datomic 用户在没有复合索引的情况下如何应对?
在 Datomic 中,您如何有效地执行诸如“查找所有居住在华盛顿的 50 岁以上的人”(城市和年龄可能会有所不同)之类的查询?在关系数据库和大多数 NoSQL 数据库中,您为此目的使用复合索引;据我所知,Datomic 不支持这样的东西。
我构建了几个中型 Web 应用程序,如果不是用于复合索引,没有一个可以足够快地执行。Datomic 用户如何处理这个问题?还是他们只是在玩小到不会受此影响的数据集?我错过了什么吗?
clojure - 原子查询和惰性
我惊讶地发现,当实体是时,datomic 中的查询结果并不懒惰。
我缺少这个选择是否有明显的理由?有人可能想要(映射 some-fn(获取 100 个包含数百万个查询结果的查询))似乎是合理的,但这会强制评估整个实体 ID 集,不是吗?
有没有办法直接从查询中获取惰性序列(实体 ID),或者它们是否总是必须首先加载到内存中,而惰性只能通过实体获得?
clojure - Clojure 中的 @(at 符号)是什么意思?
我找到了这行 Clojure 代码:@(d/transact conn schema-tx)
. 这是一个创建数据库模式的 Datomic 语句。由于难以搜索“@”等字符,我在 Google 上找不到任何相关内容。
第一个括号之前的“at”符号是什么意思?