3

给定数据库 d 上的任意 datomic 查询 q,是否有可能从 q 派生一个查询 x,当对 d 运行时将返回在 d 上产生 q 的结果所需的所有相关数据 r?q 对 d 的结果应该等于 q 对 r 的结果。

我正在尝试将 datomic 与 datascript 客户端同步。我事先知道所有查询,并且我想在 datascript 中创建我的 datomic 数据库的一个子集,限制为与客户端查询相关的数据。为简单起见,假设没有参数化查询,尽管 Id 期望使用占位符,对于任意查询输入参数可能会达到相同的效果,并且允许它们的解决方案将是首选。

我知道我可以通过修改它并针对数据库运行它来获取查询返回的所有实体 id,然后触摸所有这些实体,但我希望有更有效的方法,只返回与 a 相关的实体基准的子集查询,并且可以从查询 q ALONE 派生,而不必先在 d 上运行 q。

谢谢。

4

1 回答 1

3

我不这么认为——查询不能直接作用于 datoms。如果您查询数据库,它们以 datoms 开始,但被转换为集合,并且所有后续操作都在集合上完成。这允许查询在任意集合上运行,就像在 Datomic 索引上运行一样。

我相信https://github.com/mpdairy/posh试图进行查询分析以找出它触及的 datoms。也许给它看看?

于 2017-07-13T10:01:24.497 回答