内存数据存储中是不是有 Clojure?

Posted

技术标签:

【中文标题】内存数据存储中是不是有 Clojure?【英文标题】:Is there a Clojure in memory data store?内存数据存储中是否有 Clojure? 【发布时间】:2015-02-27 18:10:33 【问题描述】:

我主要在 Node 中编程,并且喜欢文档存储,但我想先对客户端和服务器之间的数据调用进行原型设计。我过去曾使用lowdb 和da-base 来设置快速Json 数据存储。 Clojure 有类似的东西吗?

【问题讨论】:

h2database.com/html/main.html 可嵌入 另见***.com/questions/6922340/… github.com/mmcgrana/fleetdb 您需要数据持久化还是只需要在内存中运行并在运行时模拟数据库? @edbond 不知道fleetdb,我得去看看。 【参考方案1】:

鉴于您只是原型,如果您不需要持久性,一个简单的原子就可以了。如果您想要使用简单文件的持久性,请查看https://github.com/alandipert/enduro

每个表可以有一个原子,也可以有一个带有 table->docs 映射的原子,无论你发现什么更简单。任何查询都只是一个过滤器。

例如,添加一个文档:

(def my-db (atom ))
(defn add [table doc] (swap! my-db update-in [table] conj doc))
(defn search-by-name [table name] 
    (filter #(= name (:name %)) (get @my-db table)))

【讨论】:

【参考方案2】:

Datascript 似乎是满足您需求的完美(尽管名称不佳)。基本上,它是一个基于 Datomic 设计的轻量级内存存储。使用 map-in-an-atom 方法,您很快就会发现自己正在为选择、id 管理等编写古怪的代码。Datascript 负责处理这些事情并允许您轻松编写复杂的查询,但仍然几乎像地图一样轻量级在一个原子中。

【讨论】:

以上是关于内存数据存储中是不是有 Clojure?的主要内容,如果未能解决你的问题,请参考以下文章

Go Web:数据存储——内存存储

在Linux中都有哪些工具可以查看存储在内存的“进程中的数据结构”?

c++中数组和对象的数据是存储在栈内存还是堆内存?

c++中数组和对象的数据是存储在栈内存还是堆内存?

clojure 中是不是有支持重复元素和 O(1) 删除的内置数据结构?

在 Clojure 项目中存储项目版本号的常见约定是啥?