Partitioning
- 데이터베이스를 더 작은 데이터베이스로 나누는 것을 partitioning이라고 함
- collum을 기준으로 테이블을 나누는 vertical partioning, row를 기준으로 파티션을 나누는 horizontal partitioning이 있음
vertical partioning은 select를 할 때 성능향상에 도움이 되며, horizontal partitioning을 사용하면 인덱스에 처리되는 시간을 줄일 수 있음
horizontal partitioning을 사용할 때는 partion key를 잘 설정하고, 데이터가 잘 분배될 수 있도록 해주는 것이 중요함
Sharding
- 테이블을 horizontal partitioning처럼 나누고, 나눠진 파티션을 여러 DB 서버에 나누어 동작하는 방식
- 요청을 하나의 서버로 감당할 수 없을 때 서버의 부하를 분산시키기 위해 사용
- 이 때 partition key는 shard key, 각 파티션은 shard라고 부름
replication
- 여러개의 DB서버에 원본 DB를 복제한 백업 서버를 도입한 방식
- DB 서버의 문제가 발생했을 때도 계속해서 서버 운용을 하기 위해 사용하며, read 쿼리의 경우 백업 서버를 사용해도 되기 때문에 부하 분산에도 도움이 됨
- 원본 데이터가 있는 서버는 master 또는 primary라 부르며, 백업 데이터가 있는 서버는 slave 또는 secondary라 부름
출처:
https://www.youtube.com/watch?v=P7LqaEO-nGU&list=PLcXyemr8ZeoREWGhhZi5FZs6cvymjIBVe&index=29