在 Datomic 中使用事件时间而不是事务时间?

2024-02-27

背景

我使用 Datomic 来存储其他系统生成的事件的投影(在这种情况下,投影可以被视为 Datomic 中的实体)。这些事件有一个与之关联的时间戳,用于说明事件的创建时间(例如)。这显然与 Datomic 在投影中存储新属性(基于事件)时分配给事务的事务时间不同。我的应用程序的用户对交易时间不感兴趣,而是对事件时间感兴趣。我首先使用 Datomic 的原因是为了能够获取特定时间的实体(或查询数据库)。不过这次应该not是 Datomic 交易时间,而是事件时间。例如我希望能够基于此获得一个实体活动时间:

(datomic/entity (datomic/as-of db event-time) id)

可能的解决方案

我正在考虑的一个想法是设置:db/txInstant对于每笔交易到活动时间,但我一直advised https://stackoverflow.com/a/38938037/398441不要将其作为一般原则。另一个潜在的问题是你不能分配一个:db/txInstant比模式更旧(will我的应用程序就是这种情况)。解决这个问题的一个办法是尽早设定一个:db/txInstant到创建模式的事务。

Question

在 Datomic 中,人们通常如何处理事件时间而不是事务时间? “可能的解决方案”如何成立?


一般来说,Datomic 的交易时间(t) 旨在记录系统何时发现某个事实,而不是该事实的域时间。

如果您需要处理域时间(即“现实世界”中发生的事情的时间,或示例中的事件时间),我强烈建议使用属性显式对域时间进行建模(您可以使用类型的属性:db.type/instant)。这将允许您不受任何限制地设置日期,并分别查询域时间和系统时间,以解决诸如“X 何时发生以及我的数据库何时发现 X 发生?”之类的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Datomic 中使用事件时间而不是事务时间? 的相关文章

  • 为什么leiningen启动时那么慢?

    我在用着lein repl在控制台中执行 clojure repl 当我运行它时 需要超过15秒 当我跑步时java cp clojure 1 6 0 jar clojure main 只需几秒钟 Why is lein repl太慢了 有
  • 哪些语言可以很好地进行日期、时间和日历操作? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这可能是一个过分的要求 但是有没有一种语言能够真正出色地表示时间和日期操作呢 我会立即承认这是真的很难编写一个真正伟大的时间库 也就是
  • 使用 ProGuard 混淆 clojure uberjar

    我想知道是否有人有使用 proguard 混淆他们的 leiningen 编译的 uberjar 的经验 我已经尽力在谷歌上寻找解决方案 但找不到真正的答案 我想知道这是否可能 我一直在尝试混淆默认的 lein 项目 这是 core clj
  • 这两个 clojure 函数之间有什么区别和问题?

    对于课程项目的一部分 我正在实现一个函数来从文件中读取一些数据并根据该文件创建图形结构 一整天我问了几个问题 结果就是这样 下面是一个可以正常工作的函数 它首先以惰性序列的形式读入文件 然后循环解析每一行并将其打印出来 defn print
  • 如何应用Clojure? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在学习 Clojure 我真的很喜欢它的一些功能 是时候考虑一 些真正的 宠物项目 了 我意识到我不知道如何真正做到这一点use克
  • 如何防止mysql隐式提交

    mysql文档 http dev mysql com doc refman 5 5 en implicit commit html指出某些语句将在事务期间导致隐式提交 例如 CREATE TABLE foo bar INT START TR
  • 验证随时间变化的连续条件

    我想开发一个Python程序 从某个时刻开始 等待60秒再执行操作 该程序必须具有的另一个功能是 如果我更新初始时间 它必须开始检查条件 我想过用线程来做 但我不知道如何停止线程并以新的开始时间重新启动它 import thread imp
  • 出错时退出并回滚脚本中的所有内容

    我有一个 TSQL 脚本 它可以进行大量数据库结构调整 但在出现故障时让它继续执行并不真正安全 把事情说清楚 使用 MS SQL 2005 它不是一个存储过程 只是一个脚本文件 sql 我所拥有的按以下顺序排列 BEGIN TRANSACT
  • 如何获取Oracle中命名事务的名称?

    我想在触发器中使用事务的名称 以便将其写入列中 我尝试了这个 在 SQL Developer 中 set transaction name hello select DBMS TRANSACTION LOCAL TRANSACTION ID
  • 从事务范围调用 WCF 服务方法

    我有这样的代码 using TransactionScope scope TransactionScopeFactory CreateTransactionScope some methodes calls for which scope
  • Scala - Java = ? (或者 Clojure - Java = ?)

    开发人员可以在不懂 Java 的情况下使用 Scala 吗 开发人员可以在不懂 Java 的情况下使用 Clojure 吗 注意 例如 我是一名 C 开发人员 我在不了解任何 VB 的情况下使用 NET 当然 WF 4 0 使用 VB 进行
  • 避免回绕的 timeGetTime 的最佳替代品是什么?

    time获取时间 http msdn microsoft com en us library dd757629 VS 85 aspx查询系统时间似乎相当不错 然而 它的返回值仅为 32 位 因此大约每 49 天环绕一次 在调用代码中检测翻转
  • 从 varchar(100) 类型获取时间(HH:MM AM/PM)格式

    如何将字符串 RD OT 07 30 转换为时间 我只知道如何将 07 30 AM 转换为时间 下面的代码给了我一个空白数据 id strtoupper POST id query mysql query SELECT STR TO DAT
  • 处理 C++ 中执行时间的大量分析

    我目前正在进行一个科学计算项目 涉及海量数据和复杂算法 因此需要进行大量代码分析 我目前依靠的是
  • 下拉 24 小时选项值和 12 小时显示

    我需要创建一个时间数组 以便在 HTML 下拉列表中使用 数组键应采用 24 小时格式 值应采用 12 小时制 包含 am 和 pm 在数据库中我想存储 24 小时格式 有没有一种快速的方法来创建数组而不是每小时键入 example 00
  • Android L,使用 joda.time 库的异常

    该应用程序适用于所有设备 包括 nexus 5 和 nexus 7 在 Android L 预览版上运行相同的应用程序时 应用程序崩溃了 我一直在调试 并且调用 DateTime 构造函数发现了异常 public static String
  • 在 Clojure 和其他 Lisp 方言中,在函数名称末尾使用星号的约定是什么?

    请注意 我不是在谈论符号名称中的耳罩 这个问题在Clojure 常量的约定 样式和用法 https stackoverflow com questions 3579063 conventions style and usage for cl
  • 在 python 中使用高精度时间戳

    嘿 我正在使用 python 处理日期时间 我想知道解析这个时间戳的最佳方法是什么 时间戳是ISO标准 这里是一个例子 2010 06 19T08 17 14 078685237Z 现在到目前为止我已经使用过 time datetime d
  • 实体框架核心事务中的多个 SaveChanges 有什么意义?

    我在 net core 应用程序中使用 EF 我想知道调用之间有什么区别SaveChanges在事务期间多次调用 并且在提交之前仅调用一次 为了更好地说明我的问题 我将提供一些伪代码 public async Task
  • 无法删除 IntelliJ/Cursive 中的括号

    我正在使用 IntelliJ Cursive 编写 Clojure 我发现 删除括号的唯一方法就是将其中的内容完全删除 然后才能将括号删除 例如 假设我有以下代码 list 我只想删除左括号 一旦我在左括号上按退格键 IDE 就会忽略此行为

随机推荐

  • flutter 中出现错误:widget_test.dart 无法检测到 MyApp()

    作为一个完全的初学者 我正在尝试各种 flutter 功能 但由于 widget test dart 文件中的错误 我陷入了运行 main dart 的困境 如果错误是由于其他原因造成的 请指出 main dart import packa
  • Fontawesome 5 与 VuetifyJs 1.0.0

    我想将 Fontawesome 5 Icons 与 VuetifyJs 一起使用 那可能吗 我应该使用哪个 npm 包来实现 fontawesome 因为没有人为我工作 作为一个没有经验的 VuetifyJs 开发人员 使用它确实让我感到困
  • 合并来自 Raphael svg 的图像

    尝试创造步骤 1 让用户通过 Ajax Raphael 和 Raphael freetransform 上传图像 步骤 2 单击 按钮显示合并上传图像中的一张图像 问题 我发现了关于转换 Raphael svg 的类似帖子1 https s
  • 出现导入错误:安装 auto-sklearn 时没有名为“sklearn”的模块

    为什么我得到ImportError No module named sklearn 安装时auto sklearn通过点 virtualenv p python3 automl cd automl source bin activate p
  • 如何从 C 读取 python pickle 数据库/文件?

    我正在努力与几个音乐播放器集成 目前我最喜欢的是 exexile 在新版本中 他们将数据库格式从 SQLite3 迁移到内部 Pickle 格式 我想知道是否有一种方法可以访问 pickle 格式文件 而无需手动对格式进行逆向工程 我知道有
  • 如何在 Blazor 中实现拖放?

    我知道 Blazor 是一项新技术 当前版本为 v0 5 1 不过 我目前正在为一个新的 Web 应用程序实现 PoC 我们希望在应用程序中具有拖放功能 我尝试以 Blazor 方式实现它 但它不起作用 我的放置目标 div class c
  • 将 YAML 反序列化为自定义类型

    我目前正在尝试将 YAML 文档反序列化为标准 NET 对象 例如string对于标量值和Dictionary
  • 在 CURL 中使用 cookie jar 时如何注入 cookie?

    我正在使用 php curl 并使用 cookie jar 进行多步抓取 我需要从服务器动态生成的cookie 但在某一步骤中 一些 cookie 是使用 JavaScript 生成的 由于curl不运行javascript 因此我需要在此
  • 分段寄存器的使用

    我试图了解内存管理如何在低水平上进行 并有几个问题 1 Kip R Irvine 写的一本关于汇编语言的书说 在实模式下 程序启动时前三个段寄存器会加载代码 数据和堆栈段的基地址 这对我来说有点模棱两可 这些值是手动指定的还是汇编器生成指令
  • 永远不会执行的 cron 作业

    有没有办法创建一个 cron 表达式来根本不运行作业 我想使用这个表达 0 0 0 1 1 3099 这实际上可以完成这项工作 因为它将在 3099 年运行 但是有没有更干净的方法来完成它 如果您即使在遥远的将来仍在寻找强大的东西 请尝试h
  • 如何修改 Elastic Beanstalk AWS 上的 NGINX 路由?

    所以我有一个very与将 Elixir 应用程序部署到 Elastic Beanstalk 相关的长篇文章 此处 HTTP 500 将 Elixir Phoenix 部署到 AWS Elastic Beanstalk https stack
  • 如何在 Google Cloud Console 的同意屏幕上更改电子邮件帐户?

    我被困住了 我创建这个应用程序已经有一段时间了 那时我只是使用我的帐户 现在 我想向用户提供与系统支持电子邮件相对应的不同电子邮件 有办法改变吗 更新 请参阅我的评论 这全都是关于现在登录用户 没有别的 为了更改与您的项目关联的电子邮件 您
  • 如何在.NET 4.5 Core中计算HMAC-SHA1身份验证代码

    我目前面临一个大问题 环境 NET 4 5 Core 我们需要使用 HMAC SHA1 算法通过密钥来保护消息 问题是命名空间的 HMACSHA1 类System Security Cryptography并且命名空间本身并不存在于 NET
  • 当涉及高度动画的用户界面时,openGL ES 是否比 Core Animation 和 UIKit 具有更好的性能?

    目前 我有一个用户界面 它大量使用了核心动画 我想知道是否值得再花两个月的时间来学习openGL ES 这真的能提高 2D 表面的绘图性能吗 我没有 3D 对象 而是高度动画的 2D 对象 有时会出现 3D 扭曲 大量旋转和缩放 特别是 我
  • C# Azure AD Graph 获取超过 20 人的组的所有成员

    我正在尝试从 Azure AD 获取特定组中的所有用户 目前有480名用户 当我获取它们时 我只得到 20 我认为这是默认设置 var users await gsc Groups GROUP ID Request Expand membe
  • 我是否仍然需要将 data-ng 与 AngularJS 一起使用,或者我可以删除 data- 吗?

    在我的应用程序中 data ng 随处可见 有人可以告诉我为什么需要数据吗 我读过一些有关 HTML5 验证的内容 但是如果我不关心它是否经过完全验证 并且如果我使用 IE8 及更高版本的浏览器 那么我是否仍然需要使用 data data
  • 无法从 fetch PUT 访问 Express 服务器的正文数据

    我对 Web 开发相当陌生 我正在尝试将一些 JSON 数据发送到运行 Express 的 Node js 服务器 但我收到此错误 加载失败http 本地主机 8888 http localhost 8888 方法 PUT 不被允许 预检响
  • 可以使用初始或终端 malloc 缓冲区吗?

    假设我做了如下事情 size t length 1000 char p malloc length 然后我想循环遍历元素 所以最基本的是 for size t i 0 i lt length i p i or p length 1 i 但也
  • 我可以在 JpaRepository 的 saveAll 中混合更新和插入吗

    我使用 Spring Boot Spring Data JPA 和 Hibernate 作为持久性提供程序 我已经延长了我的Repository与接口JPARepository 我有一个表的实体 Bean 列表 其中一些已经存在 一些则不存
  • 在 Datomic 中使用事件时间而不是事务时间?

    背景 我使用 Datomic 来存储其他系统生成的事件的投影 在这种情况下 投影可以被视为 Datomic 中的实体 这些事件有一个与之关联的时间戳 用于说明事件的创建时间 例如 这显然与 Datomic 在投影中存储新属性 基于事件 时分