Live data from Hacker News

CouchDB 3.4.1 Released

blog.couchdb.org

41–47 of 47 posts

Re: CouchDB 3.4.1 Released

#41
post #7

Earlier quoted context omitted.

We tried to use it alongside pouchdb to provide offline first experience. We ran into a lot of issues, mainly with pouchdb bugs. Then after reading this list [1] of issues in the couchdb architecture we decided to ditch it and stop trying to make pouchdb work. [1] https://news.ycombinator.com/item?id=17115649

Out of curiosity, if you would like to start a new, offline-first project that needs syncing, which database would be the best candidate today?

I'm biased since I work on it, but https://ditto.live/ provides an SDK that allows P2P and cloud sync. You interact with it like a database: write your queries against your data, and it will move between devices automatically

Re: CouchDB 3.4.1 Released

#42

Earlier quoted context omitted.

Out of curiosity, if you would like to start a new, offline-first project that needs syncing, which database would be the best candidate today?

One interesting idea I’ve seen is none[1]. That’s definitely more on the exploration side than the shipping one, though. [1] https://tonsky.me/blog/crdt-filesync/

I can think of two complex pieces of software which intentionally shunned databases thinking they can just do its thing in "flat files" - git and DokuWiki.

What ended happening is that both developed their own custom shi*ty database engines because it turns out that things like indexes are just generally pretty useful, but doing them right is pretty damn difficult. I'm pretty sure that if Linus/git chose e.g. SQLite instead of "flat files", we'd have way fewer data corruption problems, and a more capable/extensible git.

Re: CouchDB 3.4.1 Released

#43
post #38
post #6

Earlier quoted context omitted.

Unless you are IBM.

Not sure whether this is a Lotus Notes reference also, but it should be! (that's where the idea for CouchDB came from)

I was mostly thinking of the AS/400, where the database was built into the operating system platform.

Re: CouchDB 3.4.1 Released

#44
post #43
post #38

Earlier quoted context omitted.

Not sure whether this is a Lotus Notes reference also, but it should be! (that's where the idea for CouchDB came from)

I was mostly thinking of the AS/400, where the database was built into the operating system platform.

As it should be :)

Re: CouchDB 3.4.1 Released

#45
post #31
post #28

Earlier quoted context omitted.

> ...replication protocol that allows you to synchronise casually connected instances... That single featurte right there was why i first had started playing with couchDB several years ago. It really had been quite awesome! I think other features that help it really help with offline-first approaches also are really cool! But, ultimately, after playing with it (and really liking it), i just didn't have a need for too…

No offence taken, SQLite is great technology :) — My company makes a (commercial) CouchDB add-on based on SQLite to add SQL queries to CouchDB (link provided for informational purposes): https://neighbourhood.ie/products-and-services/structured-qu...

How interesting! Thanks for sharing! :-)

Re: CouchDB 3.4.1 Released

#46

Earlier quoted context omitted.

One interesting idea I’ve seen is none[1]. That’s definitely more on the exploration side than the shipping one, though. [1] https://tonsky.me/blog/crdt-filesync/

I can think of two complex pieces of software which intentionally shunned databases thinking they can just do its thing in "flat files" - git and DokuWiki. What ended happening is that both developed their own custom shi*ty database engines because it turns out that things like indexes are just generally pretty useful, but doing them right is pretty damn difficult. I'm pretty sure that if Linus/git chose e.g. SQLite…

I don’t know if Git’s storage is deserving of this level of scorn—I can’t lay claim to any in-depth knowledge, but if it were indeed a big problem I’d expect it to come up frequently in comparisons with Fossil, which stores things using SQLite. (As a counterpoint, I use git-annex quite a bit, and it almost certainly couldn’t integrate as neatly into Fossil’s storage approach as it does into Git’s.) So I’d appreciate any details here.

All that is beside the point, though: the article above is not about using or not using flat files as a storage primitive, it’s about using files of whatever nature as a replication and version reconciliation mechanism, in view of the fact that concurrent editing is inevitably application-specific, so we might as well lean into it instead of leaving it to a database. In that sentence, “a database” is not just any database, it’s one of a very short list of multimaster databases with relatively loose schemas, which includes CouchDB and—among legitimately FOSS projects—I’d struggle to name more.

This is not a decision about data storage at all, in other words. It is a decision about protocols. Experience shows that the alternative does not end up being an off-the-shelf database (even CouchDB, which does seem like a major road not taken looking back at Canonical’s efforts a decade ago), the alternative is usually a central synchronization server speaking a custom protocol. (CalDAV, CardDAV, Bitwarden, etc.)

And if you want to do your CRDT or OT or whatnot over per-client SQLite databases instead of per-client text files, all the more power to you.

Finally, I tried to phrase my comment above in a way that makes it clear that it’s a suggestion of a direction to have fun in, not of a principle to architect your production app around. So the sneering in your comment is... honestly disheartening to read. Like, do people even hack anymore? I know they do, but every time I read something like this I become a little bit less sure of it.

Re: CouchDB 3.4.1 Released

#47
post #2

Curious to hear who is using it still. I experimented with it 2010/2011 IIRC but never build a real project with it.

I'm using it as a database for my application, SolarThing: http://github.com/wildmountainfarms/solarthing

I was naive when I chose it (I was just starting to program then), but it has served me well. It's replication feature is simple to setup and is robust. It uses a REST API for any calls to the database, and it is a well designed API. I don't use all its features, but I really like it for the ones I use.

Post reply on HN