I am a big fan of MongoDB, I have done couple of projects for my clients. Now, I need to design, (then may be implement) a closed-community social network…
I cannot get get my mind around with data structure using MongoDB… Posts, likes, friends, permissions, privacy … so many relations… Do you think, is MongoDB good for creating a social network?
Any Ideas? Any feedback is highly appreciated
Thank you in advance.
Hello @coderkid, I have some general comments about building a new application and using a database.
One of the first steps in figuring the database you want to use in an application, is to figure the data and the application. The data with its attributes, the size, etc., and the relationships between various entities - the one-one, one-to-many and many-to-many. Then the application functionality - the queries (crud operations), and the associated user interface. These are some things one can do as a process or informally. These are often called as data modeling, application design, etc.
The next part would be the tools, the database (e.g., MongoDB), the application platform, programming languages, etc.
These are things one has to work with to build an application. Most of these aspects one cannot avoid, they show up in one form or other at different stages of application building.
I hope you get a good start with all these processes and tools. MongoDB should be one of the top choices, as it provides flexibility in data design, deployments and allows quick development and prototyping.
How you define “good” ? Do you mean the performance/applicability of joins across collections or application logic complexity?
All those general purpose databases can be used to store the things you mentioned, but some are good at this and some are good at others. To name one, sql databases provide powerful joins and integrity checks (e.g. constraints) but normally nosql databases don’t, but on the other handle, it is said nosql databases without strong ACID in mind, can scale a bit better horizontally.
It’s more important to understand what you want to do and what the underlying storage server can provide.