Hacker News new | ask | show | jobs
by karmakaze 1330 days ago
The value of git is distributed operation and tamper-evidence. What would be the value of these attributes for a cloud-based app?

To me it seems more logical to use versioned data in a database that only the cloud app accesses.

1 comments

Db idea of versioning usually is useless for implementing version control as git does. You could store git objects in a relational database and that makes a lot of sense (becasuse transactions and better data integrity guarantees).

Biggest issue with git for me is that its only usable for plain text. There is Dolt and few other projects that try to solve it,

> The value of git is distributed operation and tamper-evidence. What would be the value of these attributes for a cloud-based app?

Cloud based apps are very often distributed internally. For example consider a book store that has data in a database and replicates that in elasticsearch and some data analytics platform. Being able to use data versioning for those replications could be useful.

I can't tell which parts are agreeing or disagreeing with the quoted statements. Is doing versioning explicitly in a database necessarily more complicated than with git histories?

Using a distributed datastore should make operations simpler and more transparent without having to think about the distributed nature, other than latency of operations. So if using a distributed datastore achieves distributed nature, is the tamper-evidence what's needed and missing or something else? For a cloud-based app, redundancy/fault-tolerance is the concern rather than being distributed unless you're running a globally distributed platform that can't be partitioned.

Datomic/Datalog[0] is an example where the log of changes is the primary 'store' and a coherent view at any point in time is constructed from the log.

[0] https://en.wikipedia.org/wiki/Datomic

>Is doing versioning explicitly in a database necessarily more complicated than with git histories?

What "versioning" means depends heavily on the database. "Versioning" for typical relational databases like Postgres does not achieve many of expected git features like branching and ability to materialize data for arbitrary point in time, unless you build something extra on top (or just use db as git storage). There are databases like dolt where "versioning" idea is similar to git.

> is the tamper-evidence what's needed and missing or something else?

I always work in controlled environments, so don't care much about tamper-evidence (unless its used for detecting integrity issues perhaps).

I didn't know datomic, that's looks like solution for half of the problem (distribution and history). I may still be missing something more human-focused like git, where you have branches, collaboration and push or pull when needed.

I was just commenting, not disagreeing.