1. 데이터베이스 전체를 query하기 보다는 특정 task를 하려고 할 때

    1. 이 사람이 가장 최근에 본 영화는 무엇인가? 같은 것
    2. NoSQL은 read 가 빠르기 때문인듯
    3. 영화 추천을 또 하려나봄
  2. HBase

    1. HDFS위에 올라가서 구동됨
  3. NoSQL - Random access to planet-size data

    1. horizontally scalable
    2. 데이터 양이 점점 많아지는 경우
    3. 사용자가 많을 때도 포함
  4. Scale up MySQL

    1. denormalization
      1. 테이블을 열심히 쪼개는 것
      2. 그리고 나서 join해서 해결함
    2. caching layers
      1. cache를 해둠
      2. distributed in-memory cache
      3. database접근 수를 줄임
      4. 하지만 database ↔ cache sync안맞으면 난리남
    3. master/slave setups
      1. multiple databases
      2. one writes everything
      3. everyone else read
    4. sharding
      1. 파티션 하는것
    5. materialized views
      1. 데이터를 view단위로 쪼갠다는?
    6. removing stored procedures
      1. db가 computing은 안하도록
  5. SQL이 꼭 필요한지를 고려할 필요가 있음

    1. 런타임에 query가 복잡하지 않고 API하나만 필요하다면?

    2. key - value datastore를 써도 괜찮지않은가

      Screen Shot 2022-07-03 at 2.49.27 PM.png

      • client가 request를 어디로 보내야 할 지 안다고 할 때
        • sharding이 되어있다면, 특정 고객은 해당 shard로 리퀘스트를 보내야함
  6. 어떤 툴을 쓰는게 좋은가

    1. 분석 → Hive, Pig, Spark, Tableau
    2. 일반적으로 MySQL도 그렇게 느리진 않음
      1. 근데 만약 엄청 큰 규모라면 non-relational 데이터베이스를 사용하는 것이 더 빠르고 scalable함

        Screen Shot 2022-07-03 at 2.52.26 PM.png

        • Spark 가 data processing 한 후 MongoDB로 저장