标签: datomic

我什么时候应该使用Datomic?

我对数据库服务Datomic感兴趣,但我不确定它是否符合我工作的项目的需求.Datomic什么时候是一个不错的选择,什么时候应该避免?

database database-design clojure datomic

61
推荐指数
3
解决办法
2万
查看次数

Datomic中的数据建模

我一直在研究Datomic,它看起来很有趣.虽然似乎有关于Datomic如何在技术上工作的非常好的信息,但我还没有看到如何考虑数据建模.

Datomic中的数据建模有哪些最佳实践?这个问题有什么好的资源吗?

data-modeling datomic

59
推荐指数
1
解决办法
8790
查看次数

从不删除或更新数据的通用数据库

我非常受Rich Hickey倡导的数据管理方法的启发,并在Datomic中实现,数据从未就地变异,所有版本始终保存和查询,时间是第一个 -阶级观念.

当然,有专门的数据库匹配该描述,如Git,或任何其他源控制系统.问题是,是否有任何(或多或少)通用DBMS-es的关系,图形,层次,文档或任何其他风格可以有效地用于,例如,电子商务Web应用程序.或者Datomic是唯一的选择呢?

database survey database-versioning immutability datomic

49
推荐指数
2
解决办法
1万
查看次数

存储后端如何影响Datomic?

我该如何选择Datomic的后端存储服务?

选择DynamoDB而不是Postgres是优先考虑的问题,还是每个选项都有不同的权衡?如果是这样,他们是什么?

postgresql clojure amazon-dynamodb datomic

34
推荐指数
1
解决办法
2046
查看次数

Datomic与Neo4j相比如何?

我正在考虑将Neo4j集成到我正在构建的Clojure系统中.我被问到的第一个问题是为什么我没有使用Datomic.有没有人对此有一个好的答案?我听说过有关Datomic的视频,但我对图形数据库知之甚少,不知道Neo4j和Datomic之间的区别,它对我有什么不同?

clojure neo4j datomic

29
推荐指数
1
解决办法
5068
查看次数

从Datomic实体获取所有字段

Datomic Queries and Rules文档的"嵌入"部分说:

像SQL这样的查询语言是围绕客户端 - 服务器模型定义的,在单个对话中,您将需要同时执行以下操作:

  • 回答你的基本问题,例如本月买袜子的人.
  • 恢复报告和处理所需的任何其他信息,例如,他们的姓名和电子邮件地址.

后者实际上不是一个查询,它只是对相关信息的机械导航.

虽然我很欣赏这两个不同方面的正交性如何得到尊重,但我认为我经常需要检索整个实体,无论其属性如何.

据我所知,查询通常具有以下形式:

(datomic.api/q '[:find ?name ?age ?email
                 :where
                 [?e :myapp/name ?name]
                 [?e :myapp/age ?age]
                 [?e :myapp/email ?email]]
               (db conn))
Run Code Online (Sandbox Code Playgroud)

如果我想检索具有N个属性的实体,我会让它们在每个查询中列出它们,这对我来说似乎很乏味且容易出错.

如何告诉Datomic检索具有它们所持有的所有字段的实体,而不必明确指定它们?

clojure datomic

24
推荐指数
4
解决办法
5222
查看次数

如何获得持久的本地数据库数据库?

使用Datomic,我对如何使用本地数据库感到困惑

如果我输入:

>>(ns datomic-tut (:use [datomic.api :as d]))
nil

>>(d/create-database "datomic:mem://hello")
true

>> (d/connect "datomic:mem://hello")
#<LocalConnection datomic.peer.LocalConnection@57102fab>

>> Ctrl-D to Disconnect
Run Code Online (Sandbox Code Playgroud)

然后,如果我重新启动repl:

>> (ns project-ns   (:use [datomic.api :as d]))
nil

>> (d/connect "datomic:mem://hello")
ExceptionInfo :peer/db-not-found Could not find hello in catalog  clojure.core/ex-info (core.clj:4227)
Run Code Online (Sandbox Code Playgroud)

我可以创建另一种类型的本地uri来保存我创建的数据库吗?

clojure datomic

19
推荐指数
1
解决办法
4548
查看次数

lein REPL服务器启动超时

在基于解放者的clojure项目中,我们使用datomic作为DB.在将我们的本地dev数据库迁移到S3托管的数据库并在我们的project.clj上添加所需的依赖项后,我们无法启动REPL但是Liberator堆栈运行正常lein run

我的猜测是数据库连接搞砸了,所以问题是,我怎么能以某种方式"调试"或弄清楚这种lein repl超时的原因是什么?

我的project.clj

(defproject myproject "0.1.0-SNAPSHOT"
  :main myproject.core
  :jvm-opts ["-Xmx1G"]
  :datomic {:schemas ["resources" ["myproject-schema.edn" ]]}
  :plugins [[lein-ring "0.8.10"]]
  ; cp bin/transactor config/samples/free-transactor-template.properties resources/transactor.properties
  :profiles {:dev
             {:datomic {
                        ; :config resources/transactor.properties
                        ; :db-uri "datomic:free://127.0.0.1:4334/myproject"}
                        :db-uri "datomic:ddb://us-east-1/datomica/myproject"}

 :dependencies [[ring-mock "0.1.5"]
                             [midje "1.5.1"]
                             ]
              }
             }
  :dependencies [[org.clojure/clojure "1.5.1"]
                 [com.datomic/datomic-pro "0.9.4556"]
                 ; [com.datomic/datomic-free "0.9.4470"]
                 [com.cemerick/friend "0.2.0"]
                 [liberator "0.10.0"]
                 [compojure "1.1.5"]
                 [http-kit "2.1.13"]
                 [cheshire "5.1.1"]
                 [ring/ring-jetty-adapter "1.1.0"]
                 [ring/ring-devel "1.2.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [url62 "1.0.0-SNAPSHOT"]
                 [clj-http "0.7.8"]
                 [org.clojars.nathell/clojure-contrib "1.2.0"]
                 [com.taoensso/timbre "3.0.0-RC4"] …
Run Code Online (Sandbox Code Playgroud)

clojure leiningen read-eval-print-loop datomic

18
推荐指数
1
解决办法
6316
查看次数

在Clojure中@(at符号)是什么意思?

我找到了这行Clojure代码:@(d/transact conn schema-tx).它是一个创建数据库模式的Datomic语句.由于难以搜索"@"等字符,我在Google上找不到任何相关内容.

'at'符号在第一个括号之前是什么意思?

clojure datomic

14
推荐指数
2
解决办法
3154
查看次数

如何在datomic中撤消或撤消事务?

我意外地向datomic提交了一个事务,我想"撤消"整个事务.我确切知道它是什么交易,我可以看到它的数据,但我不知道如何从那里得到回滚交易.

clojure datomic

14
推荐指数
1
解决办法
1457
查看次数