Database의 샤딩(Sharding)이란?

샤딩 은 더 큰 데이터베이스 테이블의 행이나 열을 여러 개의 작은 테이블로 분리하여 데이터베이스 관리 시스템을 최적화하는 방법입니다. 새 테이블을 “샤드”(또는 파티션)라고 하며, 각각의 새 테이블은 동일한 스키마를 갖지만 고유한 행(“수평 샤딩”의 경우와 같이)을 갖거나 원래 테이블 스키마의 적절한 하위 집합인 스키마를 갖습니다. (“수직 분할”의 경우와 마찬가지로).

샤딩을 사용하면 “샤드”(또는 파티션)라는 새 테이블이 생성됩니다. 
각각의 새 테이블은 동일한 스키마를 갖지만 고유한 행(“수평 분할”의 경우와 같이)을 가지거나 원래 테이블 스키마의 적절한 하위 집합인 스키마를 갖습니다(“수직 분할”의 경우).

샤딩이 사용되는 이유

샤딩은 확장 가능한 데이터베이스 아키텍처의 일반적인 개념입니다. 더 큰 테이블을 샤딩하면 논리적 샤드라고 하는 새로운 데이터 청크를 여러 노드에 저장하여 수평 확장성과 향상된 성능을 달성할 수 있습니다. 논리적 샤드가 다른 노드에 저장되면 물리적 샤드라고 합니다.

단일 시스템에서 데이터베이스를 실행할 때 결국 모든 쿼리에 적용할 수 있는 컴퓨팅 리소스 양의 한계에 도달하게 되며 분명히 효율적으로 작업할 수 있는 최대 데이터 양에 도달하게 됩니다. 수평 확장을 통해 두 가지 주요 방법으로 성능을 향상시키는 유연한 데이터베이스 설계를 활성화할 수 있습니다.

  • 대규모 병렬 처리를 통해 모든 쿼리에 대해 클러스터 전체의 모든 컴퓨팅 리소스를 활용할 수 있습니다.
  • 개별 샤드가 전체 논리 테이블보다 작기 때문에 각 시스템은 쿼리에 응답할 때 더 적은 수의 행을 스캔해야 합니다.

수평 분할 은 쿼리가 종종 함께 그룹화되는 행의 하위 집합을 반환하는 경향이 있을 때 효과적입니다. 예를 들어, 짧은 날짜 범위를 기반으로 데이터를 필터링하는 쿼리는 날짜 범위가 쿼리를 서버의 하위 집합으로만 제한하기 때문에 수평 분할에 이상적입니다.

수직 분할 은 쿼리가 데이터 열의 하위 집합만 반환하는 경향이 있을 때 효과적입니다. 예를 들어 일부 쿼리는 이름만 요청하고 다른 쿼리는 주소만 요청하는 경우 이름과 주소를 별도의 서버에 분할할 수 있습니다.

또한 샤딩된 데이터베이스는 더 높은 수준의 가용성을 제공할 수 있습니다. 샤딩되지 않은 데이터베이스에서 중단이 발생하면 전체 애플리케이션을 사용할 수 없습니다. 샤딩된 데이터베이스에서는 누락된 데이터 청크에 의존하는 애플리케이션 부분만 사용할 수 없습니다. 실제로 샤딩된 데이터베이스는 종종 추가 노드에 백업 샤드를 복제하여 이러한 중단의 영향을 더욱 완화합니다.

샤딩과 파티셔닝의 차이점은 무엇입니까?

샤딩과 파티셔닝은 모두 큰 데이터 세트를 더 작은 하위 집합으로 나누는 것에 관한 것입니다. 차이점은 샤딩은 데이터가 여러 컴퓨터에 분산되어 있음을 의미하지만 파티셔닝은 그렇지 않다는 것입니다. 파티셔닝은 단일 데이터베이스 인스턴스 내에서 데이터의 하위 집합을 그룹화하는 것입니다. 많은 경우 샤딩(sharding)과 파티셔닝(partitioning)이라는 용어는 동의어로 사용되기도 합니다. 특히 “수평”과 “수직”이라는 용어가 앞에 오면 더욱 그렇습니다. 따라서 “수평 분할”과 “수평 분할”은 같은 의미일 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *