Datomic - 获取与任意查询相关的所有数据

时间:2017-07-13 04:00:02

标签: datomic datascript

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

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

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

感谢。

1 个答案:

答案 0 :(得分:3)

我不这么认为 - 查询不能直接处理数据。如果查询数据库,它们从数据开始,但转换为集合,所有后续操作都在集合上完成。这使得查询可以像在Datomic索引上运行一样在任意集合上运行。

我相信https://github.com/mpdairy/posh尝试进行查询分析,以确定触及哪些数据。也许试一试?