Sunday, June 10, 2018

Noms: database that works like Git (and how Git works)

At its essence, Git is a relatively simple files-based content management tool.
The tool has many not so intuitive commands, but internals are logical and simple.

Now that GitHub is becoming (very expensive) part of Microsoft,
Git's importance is guarantied. After all, like Linux, it is everywhere.
Even Windows source code is in Git (and Linux commands are included in Windows, too).
By the way, Google is not using Git internally, but is using GitHub heavily.

Internals of Git are technically interesting,
and concepts are potentially reusable for many other areas
where content and data version, branching, merging could be applied.

For example:
  • Web sites content could be represented by SHA1 (or SHA256) hashes,
    and on distribute only changes on request for efficiency.  
  • Databases typically do not have native support for versioning,
    and even when they do this is typically simple timestamp based records.
  • Such data & content storage would benefit from "white-only" nature,
    since every update is effectively a new write,
    and since only changes are saved this is still very efficient,
    and would be very easy to replicate and run in parallel. 

A very good class:
How Git Works | Pluralsight by Paolo Perrotta

A public/free version 
A reference book:
Git - Git References

Slides:
New Views on your History with git replace


By now, almost every idea is already implemented in some way...
In GoLang, as it is modern now :)

attic-labs/noms: The versioned, forkable, syncable database
"Noms is a decentralized database philosophically descendant from the Git version control system."





No comments: