design decisions

  • Use SQL when you need
    • strong data integrity (accurate, complete, reliable, acid)
    • complex querying
    • well-defined, stable data structure
    • relational data that naturally fits into predefined columns and rows, and relationships between data elements are crucial
    • acid
  • use noSQL when you. need
    • flexibility, high performance, horizontal scalability
    • un- or semi- structured data,, e.g. JSON, user-generated content, logs
    • high scalability and large volumes of data
      • good for scaling across many servers - cost effective for big data, high-traffic web, and real-time analytics
    • rapid development and evolving schemas - flexible and allows new features and data types to be added quickly without schema migrations
    • high throughput and low latency - good for caching, real-time recommendation engines