# "DIY NoSQL" in Clojure

DevFeed: ["DIY NoSQL" in Clojure](<https://devfeed.tech/articles/diy-nosql-in-clojure-32116.md>)

Original publisher: [Read original article](<https://adambard.com/blog/diy-nosql-in-clojure/>)

Published: 2014-06-02T00:00:00Z

Content type: tutorial

Language: en

Sources: [Adam Bard](<https://devfeed.tech/sources/adam-bard.md>)

Topics: [Clojure](<https://devfeed.tech/topics/clojure.md>), [Concurrency](<https://devfeed.tech/topics/concurrency.md>), [NoSQL](<https://devfeed.tech/topics/nosql.md>), [Persistence](<https://devfeed.tech/topics/persistence.md>), [Database](<https://devfeed.tech/topics/database.md>), [Heroku](<https://devfeed.tech/topics/heroku.md>)

Tags: [clojure](<https://devfeed.tech/tags/clojure.md>), [concurrency](<https://devfeed.tech/tags/concurrency.md>), [database](<https://devfeed.tech/tags/database.md>), [hosting](<https://devfeed.tech/tags/hosting.md>), [nosql](<https://devfeed.tech/tags/nosql.md>), [persistence](<https://devfeed.tech/tags/persistence.md>)

## AI overview

This article demonstrates how to prototype applications in Clojure without an external database by using in-memory atoms and Clojure's STM facilities. It discusses separating persistence from application access and notes when in-memory storage, periodic file persistence, or a more durable datastore may be appropriate.

## Source excerpt

I saw this post, "Do It Yourself NoSql", recently, and it reminded me of something that Clojure does very very well. Clojure's go-to concurrency enabler is its STM system: atoms, agents, and refs. I've written about it before, but this seemed like an opportunity to provide a nice example, and discuss a little more about some of the things I often do to defer the need for a database.