4 ms·
I think that it depends on the data model / use cases. When I joined the project, I didn't understand it enough to feel how relational the model really was. It
by dSebastien 6y ago
I think that it depends on the data model / use cases. When I joined the project, I didn't understand it enough to feel how relational the model really was. It only became apparent to me later on. And by then, it was much harder to replace it.
CouchDB is really nice and has cool features, but for people used to SQL, its a very different beast. Querying is surprising in many ways (less so if you're used to MongoDB I guess).
As you can guess, joins across documents and the like are not really great... and often necessary for relational data.
The correct approach, assuming that we'd want to continue with it would be to denormalize the data much further (which we did not do so far), and perform data reconciliation...
The offline-first case did sound convincing enough to me in the beginning, because we were targeting high level executives, which probably travel a lot more often than others, and still want to be able to work.
But the world ain't static.. It's a different story in post-covid world :p
- tictac-toe 6y agoAll data is relational. If you think some data model is not relational then you haven't thought about the problem space enough :p The only valid reasons to choose non-relational databases are scalability and performance.
- raphaelj 6y ago>> The only valid reasons to choose non-relational databases are scalability and performance. Agree 200%. And people seem to get a wrong idea of where this argument starts making sense. With the right indexes, I can easily handle 200req/s on my last SaaS running on a $50/m PostgeSQL. It's also significantly easier to move from a standardized relational model to a document DB than the opposite.
- imtringued 6y agoCouchDB is often just used for simple cloud sync in combination with PouchDB. It's like having a Google Drive integrated into your application. If you do any complicated online querying it's simply not meant for that.