NoSQL; In welke scenario’s kun je het gebruiken?

NoSQL; is het een nieuwe hype bij programmeurs?
Google, Twitter en Facebook. Ze maken er allemaal gebruik van.
Maar is het voor elke programmatuur geschikt? Wanneer heeft het voordelen?

Het antwoord hierop is helaas niet zo zwart-wit.
Hier zijn wat algemene punten:

  • NoSQL is typically good for unstructured/”schemaless” data – usually, you don’t need to explicitly define your schema up front and can just include new fields without any ceremony
  • NoSQL typically favours a denormalised schema due to no support for JOINs per the RDBMS world. So you would usually have a flattened, denormalized representation of your data.
  • Using NoSQL doesn’t mean you could lose data. Different dbs have different strategies. e.g. MongoDB – you can essentially choose what level to trade off performance vs potential for data loss – best performance = greater scope for data loss.
  • It’s often very easy to scale out NoSQL solutions. Adding more nodes to replicate data to is one way to a) offer more scalability and b) offer more protection against data loss if one node goes down. But again, depends on the NoSQL db/configuration. NoSQL does not necessarily mean “data loss” like you infer.
  • IMHO, complex/dynamic queries/reporting are best served from an RDBMS. Often the query fuctionality for a NoSQL db is limited.
  • It doesn’t have to be a 1 or the other choice. My experience has been using RDBMS in conjunction with NoSQL for certain use cases.
  • NoSQL db’s often lack the ability to perform atomic operations across multiple “tables”.

You really need to look at and understand what the various types of NoSQL stores are, and how they go about providing scalability/data security etc. It’s difficult to give an across-the-board answer as they really are all different and tackle things differently.

For MongoDb as an example, check out their Use Cases to see what they suggest as being “well suited” and “less well suited” uses of MongoDb.

Laat een reactie achter

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *