将 Datomic 实体身份公开给服务或 REST API

Exposing Datomic entity identities to a service or REST API

我对如何将 Datomic 实体的身份暴露给服务或 API 感到困惑。

假设我有一个 REST API 端点

/api/post/<id>

其中 <id> 标识某个博客 post(博客 post 实体)。

使用关系数据库后端,我可能 <id> 是某种串行整数类型,存储在名为 post 的 table 中的名为 id 的列中。

由于 Datomic 没有相同意义上的 tables(实体),而且它的实体 ID 在数据库范围内是唯一的,我想知道 Datomic 通常是如何做到的?

除非端点是临时的,否则您真的不应该公开实体编号(请参阅 here 了解详细原因),因此使用身份属性的值是解决此问题的好方法。该属性确实可以是 UUID 类型,但字符串或数字也可以。

使用 Datomic,您还有机会使用 "self-contained" 标识符,例如 Datomic lookup refs[:post/id "fdslkjfdskjfsl"] 而不仅仅是 "fdslkjfdskjfsl")。这有助于使您的路线不像关于帖子那样具体。由于 Datomic 的模式灵活性(与说 SQL 表或 MongoDB 集合相比),这个好处特别容易实现。您可以通过对 URL.

中的查找引用进行 edn 编码来实现这一点