DEV Community

Discussion on: I am a Database Architect, Ask Me Anything!

Collapse
 
vinceramces profile image
Vince Ramces Oliveros
  1. When you transition from SQL to NoSQL, do you need to be quirky enough to execute the desire query and unfollow the conventional RDBMS way? I know a lot of NoSQL(looking at MongoDB) still lacks some querying powers to get the data you want.

  2. In your profile description, you seem to know MongoDB. When dealing with your knowledge in RDBMS, how did you manage to normalize your database using NoSQL?

Collapse
 
amansubhan profile image
Aman Subhan

I will try to answer both of your questions in a single comment as the solution will come from the same origin.

When we need to migrate a database from SQL to NoSQL, we start with the transactional systems first. We need to decide where the transactions will be stored, either on the relational database or we are totally dumping SQL database and moving everything to NoSQL.
Once we agree on any one of the aforementioned approaches, we design the NoSQL database solution around it to ingest the data from different sources in the most denormalized form, meaning we need to resolve all the relationships and references to get all the data in one go. Reporting system can be later built upon this NoSQL database deployment.

There is not much support for constraints in NoSQL, however Mongo and other few databases provide the relationship features but I would say they are still primitive as compared to full RDBMS like Oracle, PostgreSQL, MySQL or SQL Server, etc. NoSQL databases provide many APIs and there are language wrappers to ease up development and can sometimes result in very powerful tooling to develop applications quickly.

NoSQL (MongoDB in particular) is extremely fast for reading when we design it correctly, else they can be messy if we not set them up and monitor them correctly.

Just a personal opinion: NoSQL databases are not suitable for smaller projects, they require strong administrative skills to manage multiple instances. Cloud is a good option when choosing to deploy a fully managed database.