如何在Datomic中使用现有的UUID表示实体?

约翰

背景

我们有多个通过事件进行通信的服务。许多事件使用事件中存在的(全局)唯一代理ID来引用某个实体。例如,“ CustomerRegisteredEvent”(E)可能包含注册客户的ID。当使用其他数据库时,我通常可以持久保留一个“客户”实体,其ID对应于(E)中的ID(和其他值)。

在datomic中,我通常会看到使用tempid来为新实体生成ID,但是我不清楚在预先知道UUID时是否应该使用这种方法吗?

问题

  1. 有没有一种方法可以根据事件中的ID生成Datomic ID?
  2. 如果不是,通常是否只是为“原始”(事件)ID创建一个新属性?就像是:

    {:db/id #db/id[:db.part/db] :db/ident :customer/uuid :db/valueType :db.type/string :db/cardinality :db.cardinality/one :db/doc "The original UUID of the customer" :db.install/_attribute :db.part/db}

艾伦·汤普森(Alan Thompson)

只需忽略Datomic:db/id作为内部细节(就像您将提交的Git哈希忽略为内部细节一样)。使用问题中的解决方案(2),但您可能要使用内置类型:db.type/uuid而不是字符串。

您可能还会对Tupelo-Datomic库感兴趣,该库包含许多与Datomic进行交互的辅助功能和便利功能。

享受!

PS不要忽略d/squuid用于生成半顺序UUID的Datomic函数,这是在Datomic中生成UUID的更有效方法


更新:将数据添加到Datomic有点令人困惑,并且比需要的要复杂得多。这就是为什么您可以使用Tupelo-Datomic简化整个操作的原因:

(td/transact *conn*
  (td/new-entity { :person/name "James Bond" :location "London"     :weapon/type #{ :weapon/gun :weapon/wit   } } )
  (td/new-entity { :person/name "M"          :location "London"     :weapon/type #{ :weapon/gun :weapon/guile } } )
  (td/new-entity { :person/name "Dr No"      :location "Caribbean"  :weapon/type    :weapon/gun                 } ))

Tupelo-Datomic为您做的一件事是默默地为以下目的添加样板: {:db/id (d/tempid -partition) }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Dockerfile中使用现有的Docker Volume

来自分类Dev

如何在Eclipse中使用现有的.target文件?

来自分类常见问题

如何在现货船队中使用现有的按需实例?

来自分类Dev

如何在现有的sqlalchemy模型中使用flask-sqlalchemy?

来自分类Dev

我应该如何在Safari扩展中使用现有的JavaScript库?

来自分类Dev

如何在Chrome Native Client中使用现有的C库?

来自分类Dev

如何在现有的angularjs项目中使用kendo-ui

来自分类Dev

NuSoap-如何在nusoap_client PHP中使用本地现有的WSDL文件

来自分类Dev

如何在subprocess.Popen()中使用现有的Environment变量

来自分类Dev

如何在AWS Elastic Container Service中使用现有的docker-compose.yml文件?

来自分类Dev

如何在现货船队中使用现有的按需实例?

来自分类Dev

如何在jupyterhub页面中使用python-selenium查找现有的HTML元素?

来自分类Dev

如何在Alembic迁移中使用现有的postgres枚举?

来自分类Dev

如何在现有的sqlalchemy模型中使用flask-sqlalchemy?

来自分类Dev

如何在Xcode中使用现有的数据库文件进行读写?

来自分类Dev

我应该如何在Safari扩展中使用现有的JavaScript库?

来自分类Dev

您如何在Chrome Native Client中使用现有的C库?

来自分类Dev

如何在现有的angularjs项目中使用kendo-ui

来自分类Dev

如何在Jmeter中使用现有的Java API测试

来自分类Dev

如何在Elasticsearch中使用现有的关系数据库

来自分类Dev

如何在Symfony2应用程序中使用现有的Web服务?

来自分类Dev

如何在现有的公共目录中使用Laravel路由?

来自分类Dev

如何在现有的laravel项目中使用appserver.io的MessageQueue功能

来自分类Dev

如何在 swift 3 中使用现有的 SQLite?(FMDB)

来自分类Dev

如何在我的 Maven 本地存储库中使用 gradle 发布现有的 aar?

来自分类Dev

如何在Datomic查询中使用/?

来自分类Dev

如何在Matplotlib中使用subplot2grid / gridspec检索现有的子图轴?

来自分类Dev

如何在另一个Firebase项目中使用现有的GCM令牌?

来自分类Dev

如何在D3.js中使用现有的“ <g> =组”创建一个单独的“ <g> =组”

Related 相关文章

  1. 1

    如何在Dockerfile中使用现有的Docker Volume

  2. 2

    如何在Eclipse中使用现有的.target文件?

  3. 3

    如何在现货船队中使用现有的按需实例?

  4. 4

    如何在现有的sqlalchemy模型中使用flask-sqlalchemy?

  5. 5

    我应该如何在Safari扩展中使用现有的JavaScript库?

  6. 6

    如何在Chrome Native Client中使用现有的C库?

  7. 7

    如何在现有的angularjs项目中使用kendo-ui

  8. 8

    NuSoap-如何在nusoap_client PHP中使用本地现有的WSDL文件

  9. 9

    如何在subprocess.Popen()中使用现有的Environment变量

  10. 10

    如何在AWS Elastic Container Service中使用现有的docker-compose.yml文件?

  11. 11

    如何在现货船队中使用现有的按需实例?

  12. 12

    如何在jupyterhub页面中使用python-selenium查找现有的HTML元素?

  13. 13

    如何在Alembic迁移中使用现有的postgres枚举?

  14. 14

    如何在现有的sqlalchemy模型中使用flask-sqlalchemy?

  15. 15

    如何在Xcode中使用现有的数据库文件进行读写?

  16. 16

    我应该如何在Safari扩展中使用现有的JavaScript库?

  17. 17

    您如何在Chrome Native Client中使用现有的C库?

  18. 18

    如何在现有的angularjs项目中使用kendo-ui

  19. 19

    如何在Jmeter中使用现有的Java API测试

  20. 20

    如何在Elasticsearch中使用现有的关系数据库

  21. 21

    如何在Symfony2应用程序中使用现有的Web服务?

  22. 22

    如何在现有的公共目录中使用Laravel路由?

  23. 23

    如何在现有的laravel项目中使用appserver.io的MessageQueue功能

  24. 24

    如何在 swift 3 中使用现有的 SQLite?(FMDB)

  25. 25

    如何在我的 Maven 本地存储库中使用 gradle 发布现有的 aar?

  26. 26

    如何在Datomic查询中使用/?

  27. 27

    如何在Matplotlib中使用subplot2grid / gridspec检索现有的子图轴?

  28. 28

    如何在另一个Firebase项目中使用现有的GCM令牌?

  29. 29

    如何在D3.js中使用现有的“ <g> =组”创建一个单独的“ <g> =组”

热门标签

归档