MongoDB (MSRP) - "Social Data"
Has anyone at Adobe read this article[1] about MongoDB? Is this not a problem, given that pretty much all use cases for using MongoDB with AEM revolves around "social data"?
Just a guess after looking at what's generated in MongoDB after leaving a test comment on /content/community-components/en/comments.html, it would appear that this suffers from the some of the same problems mentioned in that article...
- You need to perform a lookup of the "authorizableId_t" or "author_username" (whichever is the most consistent) if you want more information about that user.
- You are storing "author_display_name" on the comments as well, so maybe you don't need to do any extra lookups when displaying comments, but if that display name changes for any reason, that's now wrong for this comment. If the user left thousands of comments, they would all need to be updated?
Also looks like an activity stream document is generated and stored in MongoDB as well when you comment, so that's yet another piece of data that's got all information about that comment duplicated and stored within MongoDB. Though I suppose this one isn't such a big deal, given that it's more of a notification/snapshot of a specific comment at a specific time.
I can only imagine a lot of the "join" work, putting together all of the data is being done by Java? Is this not that much of a concern given everything revolves around a user session/resolver, so that information isn't terribly difficult to lookup?
I'm just concerned before we dive in head first to MSRP, what sort of headaches we'll have down the road.
[1] http://www.sarahmei.com/blog/2013/11/11/why-you-should-never-use-mongodb/