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