Hacker News new | past | comments | ask | show | jobs | submit login

It’s difficult to model relationships. You have to design a hashing strategy manually to avoid hotspots. Most web frameworks are based on sql. The api is extremely verbose and there isn’t the same level of maturity for abstractions which simplify it. Indexes are much more complicated https://docs.aws.amazon.com/amazondynamodb/latest/developerg... In general, the tooling is less mature. You can run a fake dynamodb locally, but not the exact same engine.

There are certainly use cases where nosql is very helpful - heavy writes, as a denormalized cache, simpler non relational data models etc http://highscalability.com/blog/2010/12/6/what-the-heck-are-...




I feel like we might be diverging on what "a general purpose web app" represents.

I've never really seen those issues unless there is a more extreme circumstance.

In my read of "web app", in most cases you want to push/data in and out of the database. And modelling 1:1 and 1:n relationships is pretty natural in my experience. Deeply nested relationships are a pain, but they're usually a pain in SQL too. Document-orientation helps here a bit, but with some drawbacks. Where I think it does fall over completely is analytics, and OLAP-like work.

I guess hotspots can be an issue. However, that implies considerable related transaction volume, which I'd argue DynamoDB can excel at.

If you're using a framework like Rails - then sure, DynamoDB is out. But so is Lambda. The pattern of SPA (React/etc), Lambda, and DynamoDB is what's emerging instead of those frameworks. Definitely agree it can't cover many cases, but covers a lot of ground for me


Right, I'm talking about many to many relationships. Those are a pain to deal with in non relational databases. It's possible, just not the simplest tool for the task. This is a great strength of sql, especially when coupled with a good orm used wisely. Also, don't underestimate the power of frameworks like rails, django et al for productivity.

Most apps I write for my own business, or see in production at companies I work for use a mix of sql and nosql depending on what they are doing. Mongo seems quite popular for heavy write loads, while still supporting some indexing and querying. It's great for fan out also.


You can't just use the same data models and normalization strategies of a relational databases in the DynamoDB. Plus there are many differences with other Nosql databases too that you must be aware of. (e.g. scaling behaviour)

I often see teams and devs failing to use DynamoDB effectively only because they don't know/use best practices. It just needs more time.

What I don't like about DynamoDB is the vendor lock-in. Otherwise it's a great product and works really well for many use cases.


I agree DynamoDB is a great product that works well for many use cases. I use it for certain things and it works very well. Relational db's are a better fit for most web apps though.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: