查看过去数据的能力似乎很有用,但我不清楚如何实际使用它。受益于此功能的领域有哪些?也许有一些众所周知的“时间性”用例?
2 回答
哲学
列出所有域非常困难,而且并非完全有必要列出。如果您提供了您考虑使用 Datomic 的域,那么您的问题的答案将更有价值。
我不认为时间只是历史或一个特征,而是一个自然维度,我们每天在所有领域“使用”,无论它是否是软件。
话虽如此,我可以想到两个我考虑和使用 Datomic 的领域:
贸易
你可以看到华尔街工作和思考的简化方式
您在这里注意到的一件事:一切都与时间和“时机”有关。
当需要任何类型的财务分析时,无论是对未来的预测还是适应当前的市场走势,基于时间的思维(阅读“查询、设计、UI 等”)不仅至关重要,而且很自然。
每个人都使用位、0 和 1,你归档这种想法的方式可能有很多,但是如果这些位已经以你告诉他们的方式组织起来“给我看 X 时间到 Y 时间的报价,并通过交易来分割它们在这个时间间隔发生,并且还向我展示了之前交易过的公司......”这些位只是理解你并提供数据是一个巨大的胜利。(与拥有自己的实现相比)。另一个有趣的预测用途是 Datomic 的“ with ”
身份
人的身份在任何地方都不同:驾照、护照、社会安全号码、健身卡、信用卡、家庭住址等。这些的独特组合可以识别一个人,有时是一个家庭,有时是一个企业,有时是随机的一群人等
但有趣的是,这些 ID 会随着时间不断变化……不断变化。不仅通过“现在”的任何ID 始终识别一个人/组是有用的,而且还只是需要能够返回,有时向前:“这个人/企业的信用评分是多少?如果他/它有这张信用卡(帐号)?”
哲学
虽然上面只是两个不相关且狭窄的领域,但它们是真实的。是的,您可以为所有数据库记录/文档/KV/列族/“什么不是”添加时间戳,但它会给您的是:“时间戳”,没有实际的系统时间感知。Datomic 确实给了你这种感觉。它的作用远不止于此,但这是另一个问题。
我认为大多数对现实世界问题进行建模的系统都可以从 Datomic 提供的时间模型中受益,这仅仅是因为该模型更接近于现实世界中实际发生的事情。请参阅 Rich Hickey 的演示文稿:Deconstructing-Database。
更具体地说,任何需要版本控制或数据审计功能的应用程序都可以从 Datomic 的不变性中受益匪浅,因为这些功能本质上是内置的。有时这些功能是不错的功能,有时它们是强烈的要求(例如,对于银行应用程序)。