5 ms·
I've always loved databases, but after having discovered write-only timestamped databases like Datomic, I can't imagine going backwards. It's a real shame that
by Slackwise 12y ago
I've always loved databases, but after having discovered write-only timestamped databases like Datomic, I can't imagine going backwards. It's a real shame that Datomic isn't fully open source.
(Aren't BigTable and Spanner also write-only and timestamped?)
- collyw 12y agoOk, assuming write-only means what I think it does, what is the point in a write only database? /dev/null/ is write only.
- windowsworkstoo 12y agoProbably just means "immutable"
- wtetzner 12y agoI think he means append-only. You can add data, and you can query data, but you can't mutate.
- michaelochurch 12y agoAppend-only means that every fact is timestamped and nothing is ever thrown away. (Actually, Datomic provides excision, because some regulatory use cases require it, but it's a "black magic" feature.) The idea is that you should never use UPDATE or DELETE, unless it's a hard requirement or a well-studied optimization. The fact that it's 58 degrees today doesn't invalidate the fact that it was 45 degrees yesterday. New facts may replace old ones relative to time-sensitive queries ("what is the most recent temperature?") but you never get rid of the old ones. This means that queries often have an additional parameter, which is the time. So a type signature for a query type (in a Haskell-like language) would be: type Query a = ([Fact], Time) -> a where the typical use case would use all stored facts and the current time. (Obviously, the DB itself isn't going to do a full-table scan for typical queries. There are optimizations involved. But, conceptually, a query is a function over all facts.)
- dllthomas 12y agoI've actually recently been thinking of extending this logic to my Anki geography deck. Populations change, but population at some specific point in time shouldn't.
- threeseed 12y ago> Datomic isn't fully open source Couldn't agree more. I've worked at two Clojure enterprises recently and both really wanted to use Datomic. But in this day and age nobody wants to commit their data to another proprietary database.
- pjmlp 12y agoMaybe it is more about paying and less about being open source?
- nickik 12y agoI agree. For me Datomic is the new standard, and I use something else if there is a good reason too. As with everything there are many good reason to do so. It used to be PostgreSQL now its Datomic.