Live data from Hacker News

Show HN: Noms – A new decentralized database based on ideas from Git

medium.com

71–80 of 180 posts

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#71
post #65

Earlier quoted context omitted.

Perhaps they were writing so much in Go that they set the '/' key to shortcut to '::'. ...but yeah, I am also curious.

What does :: mean in go?

Maybe parent meant :=

Not sure what :: would be.

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#72
post #31

How do you handle hash collision?

We assume that within a given version of the database format, there will never be a collision. The chances of a sha2 collision are beyond astronomical, and if you can create one, there are better things to do with your time that bother us.

That said, hashes only get weaker over time. The chances of an md5 collision used to be astronomical, now they are not.

So it was important to us to have an escape hatch - a way to increase the strength of the hash we use over time.

That's why we built a format version into Noms from the beginning. Our design is predicated on the fact that within a given version of the format, there is a 1:1 correspondence between hashes and values. Every value has exactly one hash, and every hash encodes exactly one value.

In future versions of the format, we might change the hash function. In this situation, we'd need to import data from the old format to the new format, just like how you have to sometimes migrate traditional databases across versions.

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#73

At first glance, this reminds me a little bit of datomic - all data history is preserved/deduplicated, fork/decentralization features. Can you comment on how it compares?

Adding to the "is similar to" list here (rather than spreading them around the HN comment thread).

How does it compare to:

- https://github.com/amark/gun - https://github.com/substack/wikidb

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#74
post #70
post #61

Earlier quoted context omitted.

See https://github.com/attic-labs/noms/blob/master/doc/spelling.... - In this case, we need to be able to address either a database and a dataset. The presence of a :: makes it unambiguous.

But isn't ` / ` more or less similar to ` :: `? The only difference is the choice of a delimiter to disambiguate between a database and a dataset. For me, the first scheme is much more familiar.

Say we did just do /. What does the path "http://demo.noms.io/cli-tour/sf-fire-inspections/raw" refer to? Is the database "http://demo.noms.io" and the dataset "cli-tour/sf-fire-inspections/raw"? Is the database "http://demo.noms.io/cli-tour/sf-fire-inspections" and the dataset "raw"?

In our sample data (see https://github.com/attic-labs/noms/blob/master/doc/cli-tour.... for example) we actually have this exact path, and the database is "http://demo.noms.io/cli-tour" and the dataset is "sf-fire-inspections/raw". We need the "::".

Allowing "/" in a dataset name is very convenient (it's common in git branches). Allowing "/" in database names is essential for URLs.

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#75
post #66

Earlier quoted context omitted.

Right. A shocking amount of public data is distributed this way. Also, we routinely talk to developers who complain about the difficulty of consuming data snapshots from partners, parsing it, trying to understand how it has changed since last time, etc. With high value datasets, people frequently build an API to combat these problems. But it's hard to design a good API, and even if you succeed, it has to be secured,…

So if nom takes off would you see 'download a nom dataset by clicking here' or would it be 'use this hostname to sync the nom to your own computer' Or would it be a dsn sort of and you just instantiate a client and your on your way? Or, some combo?

In some glorious future world you might see things like:

``` Download" rel="nofollow">http://www.who.int/tb/country/data/download/en/::case-data/b... the Data ```

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#76
post #2

Hi all. I'm one of the creators of Noms. Happy to answer any questions!

Why would you exclusively support schema inference, rather than also allowing users to manually specify their schemas?

Schema inference is very difficult to do correctly and safely, especially with small initial samples of instances (source: work on https://github.com/snowplow/schema-guru).

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#77
GC I can see a shape of solution for since you can use something like a per-object DVVset to determine the minimum set of unresolved histories required to avoid losing data during conflicts while not unnecessarily ballooning the size of the dataset.

However, the inner-object conflict-resolution problem seems a lot harder to solve given that there's no obvious join-semilattice for arbitrary fields/data. Can you discuss what conflict-resolution strategies you're working on for auto-resolution and/or what metadata you intend to provide to the end-user in the event that you're going to punt resolution to them to handle?

Given this is supposed to be for collaborative workloads, the conflict-resolution issue seems to be a cornerstone. Git handles this by inserting sibling sections into the documents and forcing the end-user to manually deal with fixing problems, which is often fraught with pain and peril, and doesn't seem like a strategy that would work for something that's a database (as opposed to something that's a workflow).

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#78
post #66

Earlier quoted context omitted.

Right. A shocking amount of public data is distributed this way. Also, we routinely talk to developers who complain about the difficulty of consuming data snapshots from partners, parsing it, trying to understand how it has changed since last time, etc. With high value datasets, people frequently build an API to combat these problems. But it's hard to design a good API, and even if you succeed, it has to be secured,…

So if nom takes off would you see 'download a nom dataset by clicking here' or would it be 'use this hostname to sync the nom to your own computer' Or would it be a dsn sort of and you just instantiate a client and your on your way? Or, some combo?

It'd be entirely up to the distributor of the data, so perhaps the answer to your question is "all of the above".

For example, (1) our command line tools use URL-like paths which implies "use this hostname" (to copy-paste into terminal), (2) we have some in-browser visualisations like http://splore.noms.io/?db=http://demo.noms.io/cli-tour which implies more of a "click here" type UI.

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#79

Pretty impressive work but seems like reinventing wheels. Why wasn't it built upon existing tech? I think the docs should enumerate the most important differences and use cases for which it should be a better fit.

To play devil's advocate, Git "reinvented the wheel," but it was a much nicer wheel. Not saying this is to databases what Git was to versioning, but there's a reason to strive for that.

Git's author felt the alternative (gratis) systems were lacking. Noms's author, on the contrary, praises Git but doesn't build on it. He chooses to implement the same technology himself, and from the docs it's not clear to me why that is.

Re: Show HN: Noms – A new decentralized database based on ideas from Git

#80
post #74
post #70

Earlier quoted context omitted.

But isn't ` / ` more or less similar to ` :: `? The only difference is the choice of a delimiter to disambiguate between a database and a dataset. For me, the first scheme is much more familiar.

Say we did just do / . What does the path " http://demo.noms.io/cli-tour/sf-fire-inspections/raw" refer to? Is the database " http://demo.noms.io" and the dataset "cli-tour/sf-fire-inspections/raw"? Is the database " http://demo.noms.io/cli-tour/sf-fire-inspections" and the dataset "raw"? In our sample data (see https://github.com/attic-labs/noms/blob/master/doc/cli-tour.... for example) we actually have this exact p…

[deleted]
Post reply on HN