数据数据库的第一次查询

First query of a datomic database

我可以访问 repl,并且我有一个可以连接的 uri。我如何连接、查看存在哪些实体和属性、查看它们的值然后向下钻取等等?我只是在使用无需注册的免费版本。

到目前为止,这是我尝试过的:

C:\programs\datomic-free-0.9.5327>.\bin\repl
Clojure 1.6.0
user=> (use '[datomic.api :only [q db] :as d])
nil
user=> (def conn (d/connect "datomic:dev://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/unsupported-protocol Unsupported protocol :dev  datomic.error/arg (error.clj:57)
user=> 

user=> (def conn (d/connect "datomic://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic://localhost:4334/somedb  datomic.error/arg (error.clj:57)

user=> (def conn (d/connect "datomic:mem//somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic:mem//somedb  datomic.error/arg (error.clj:57)

使用 MySql 或 Oracle 数据库,操作员能够(给定正确的密码)列出所有数据库,连接到其中一个,查看其表,然后通过查询其中一个开始滚动他们。

根据上下文,即使这个数据库 ('somedb') 是 'in memory',我仍然希望它存在,因为有一个事务处理程序 运行。然而,交易者有点可疑,因为它看起来像这样:

C:\programs\datomic-free-0.9.5327>.\bin\transactor .\config\samples\free-transactor-template.properties
Starting datomic:free://localhost:4334/<DB-NAME>, storing data in: data ...
System started datomic:free://localhost:4334/<DB-NAME>, storing data in: data

我对查询应该正常运行并且 运行 并且其中有值的数据库感到困惑。

我可以澄清这些错误:

user=> (use '[datomic.api :only [q db] :as d])
nil
user=> (def conn (d/connect "datomic:dev://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/unsupported-protocol Unsupported protocol :dev  datomic.error/arg (error.clj:57)

此处的 URI 格式正确,但错误表明您正在尝试访问专业专用存储 (dev),而不是免费允许的存储(免费和内存)。请注意,您可以使用免费级入门许可证访问专业存储格式(即您不需要付费许可证即可开始使用)。

user=> (def conn (d/connect "datomic://localhost:4334/somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic://localhost:4334/somedb  datomic.error/arg (error.clj:57)

这里您根本没有指定存储协议,即 dev 在第一个调用中。这是必需的。

user=> (def conn (d/connect "datomic:mem//somedb"))
IllegalArgumentExceptionInfo :db.error/invalid-db-uri Invalid database URI datomic:mem//somedb  datomic.error/arg (error.clj:57)

mem 后缺少 :。对于上述错误,connect 的 API 文档涵盖了正确的 URI 构造。

您可以使用 get-database-names 列出数据库,已记录 here

要起床和 运行 查询,您可能会使用 console 更好的初次体验,这是一个网络 app/GUI,它处理数据库的自动列表,连接到一个,查询等