I want to design and implement a mobile application in which:

  • Every user who have already registered is able to add new news (including title: text plus a picture, and content: long text, pictures or even videos).
  • Users can scroll hot news (from the News Page) and make decision to read one. They might press the like button. The news which has more likes displayed sooner.
  • Users are able to add/delete some items (human skills) in their profile page. Skills are categorized hierarchically: each leaf of the skills tree has its specific fields in addition to shared ones.
  • All users' skills can be searched or filtered in a different page of the application.
  • Users can also send messages to each other.

Which type of database is better for this application? rdbms (like MySQL)? or NoSQL (document databases)? or a hybrid structure (for example MySQL for storing items and MongoDB for storing news)? Besides, which method is more common to store pictures and long texts on the back-end side? Please, consider that we have limited money to buy great resources but we still expect high performance.

  • Which kind of database / storage do you have knowledge with? Are you restricted by any company rules? Because technically this is not a real issue. Both will work out just fine. In general I would focus, for that reason, more on capabilities of the team than technical matters. (Storing images in/out database is a totally different question. Would remove that from this question.). – Luc Franken Oct 18 '16 at 12:55

I assume you're talking about storing information server-side and not on the device where the app runs because otherwise it would not be possible to exchange this information between users.

It's hard to judge a data storage solution objectively without diving into your specific situation. So you may get different answers depending on who you ask.

When you're starting out with these kinds of problems I think you should just keep it simple and use a relational database; either MySQL or PostgreSQL.

Even though modern database systems have some support for large binary data you probably want to store pictures and other uploads on the filesystem. Mostly because it's easier to serve those files back through a web server that way.

‘Large’ pieces of texts can probably go into the database just fine depending on what you want to do with them and how large they


You could maybe go for a relational database as it easier to use and you can understand its operation much well so long as it is the typical data processing functions. MySQL is especially quite an advisable starting point.

Also consider the long term implications of the data processed on your app. However since your app is more of 'social', you will want to avoid the hassle of querying data and joining it together - which is the case in relational databases. A NoSQL would work well in this case, but that again is totally up to you. There are learning curves to NoSQL databases as well.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.