프로젝트 옐로우핑거 소개 연구실 문의하기
contact@yellow-finger.com
02.2205.4128
How to scale databases
데이터베이스를 확장하는 방법
How to scale databases
Databases usually consist of tables with columns and rows. Yet, traditional monolithic databases can become sluggish and cumbersome
데이터베이스는 일반적으로 열과 행이 있는 테이블로 구성됩니다. 그러나 기존의 모놀리식 데이터베이스는 느리고 번거로울 수 있습니다.
요약 :)
데이터베이스는 일반적으로 열과 행이 있는 테이블로 구성됩니다. 그러나 기존의 모놀리식 데이터베이스는 크기가 커지면서 느리고 번거로울 수 있습니다. 데이터베이스 파티셔닝은 데이터를 랭글링하고 데이터베이스를 원활하게 실행하기 위한 강력한 기술입니다.

데이터베이스 파티셔닝은 큰 테이블이나 데이터베이스를 파티션이라는 더 작고 관리하기 쉬운 청크로 분할하는 프로세스입니다. 이를 통해 데이터의 일부만 쿼리할 수 있으므로 로드 속도가 빨라집니다.
더보기→

출처.
Dr Milan Milanović. (2024.04.26). Medium. How to scale databases. 2024.05.20. https://medium.com/@techworldwithmilan/how-to-scale-databases-16433cdecdbd
데이터베이스는 일반적으로 열과 행이 있는 테이블로 구성됩니다. 그러나 기존의 모놀리식 데이터베이스는 크기가 커지면서 느리고 번거로울 수 있습니다. 데이터베이스 파티셔닝은 데이터를 랭글링하고 데이터베이스를 원활하게 실행하기 위한 강력한 기술입니다. 데이터베이스 파티셔닝은 큰 테이블이나 데이터베이스를 파티션이라는 더 작고 관리하기 쉬운 청크로 분할하는 프로세스입니다. 이를 통해 데이터의 일부만 쿼리할 수 있으므로 로드 속도가 빨라집니다. 일반적으로 파티셔닝에는 두 가지 유형이 있습니다. 수평 분할(샤딩) 테이블을 행별로 분할합니다. 각 파티션에는 동일한 스키마이지만 다른 행이 포함되어 있습니다. 분산 컴퓨팅을 위해 데이터를 고객 또는 사용자별로 나눌 수 있거나 데이터가 너무 커서 하나의 DB에 저장할 수 없는 멀티 테넌트 애플리케이션에 이상적입니다. 샤딩에는 다양한 종류가 있습니다. 키 기반(해시) 샤딩: 샤드는 각 레코드 내의 특정 키 열에 대한 해시 함수를 사용하여 결정됩니다. 이 해시 함수는 사용 가능한 샤드에 레코드를 균일하게 배포합니다. 가장 큰 장점은 데이터와 워크로드가 고르게 분산된다는 점이지만, 여러 샤드에 걸쳐 재샤딩을 수행하는 쿼리가 복잡해질 수 있습니다. 범위 기반 샤딩은 특정 키의 범위를 기반으로 데이터를 샤드로 나눕니다. 예를 들어 1부터 1000까지의 고객 ID가 하나의 샤드에 저장되고 1001부터 2000까지의 고객 ID가 다른 샤드에 저장될 수 있습니다. 이 접근 방식은 범위 작업과 관련된 쿼리를 단순화하지만 데이터가 범위 전체에 균일하게 분산되지 않으면 고르지 않은 데이터 분포와 핫스팟이 발생할 수 있습니다. 디렉터리 기반 샤딩: 이 방법은 조회 테이블을 사용하여 키를 해당 샤드에 매핑합니다. 뛰어난 유연성을 제공하므로 샤드를 쉽게 추가하거나 제거하고 간단하게 다시 샤딩할 수 있습니다. 그러나 조회 서비스에 잠재적인 단일 실패 지점이 발생하고 적절하게 관리되지 않으면 성능 병목 현상이 발생할 수 있습니다. 지리적 샤딩: 지리적 위치를 기반으로 데이터를 배포합니다. 대기 시간을 줄이고 현지 데이터 규정 준수를 향상시키기 위해 데이터를 사용자에게 물리적으로 더 가깝게 유지하는 것을 목표로 합니다. 이 전략은 서로 다른 지역의 사용자에게 서비스를 제공하는 글로벌 애플리케이션에 도움이 됩니다. 지역 간 데이터 분산의 균형을 맞추고 효율적인 액세스를 보장하려면 세심한 관리가 필요합니다. 고객 기반 샤딩: 각 고객이 잠재적으로 매우 다른 데이터 크기와 사용 패턴을 가지고 있는 다중 테넌트 아키텍처에서는 고객 기반 샤딩을 사용할 수 있습니다. 여기에는 고객 또는 고객 그룹별로 샤드를 할당하고 성능 및 격리를 최적화하는 작업이 포함됩니다. 대규모 고객에게 서비스를 제공하기 위한 높은 수준의 맞춤화 기능을 제공하지만 샤드 전체에서 리소스를 효율적으로 활용하는 데 어려움을 겪을 수 있습니다. 샤딩 시 모든 DB 서버는 구조적으로 동일해야 하며, 데이터 기록은 샤딩된 DB에 나누어져 있어야 한다. 수직 분할 테이블을 열 또는 테이블별로 나누고 자주 액세스하는 열과 덜 사용되는 열을 분리하여 액세스 시간과 캐시 효율성을 최적화합니다. 따라서 각 테이블을 별도의 데이터베이스에 배치할 수 있습니다. 그러나 데이터베이스 샤딩은 어렵습니다. 데이터 이동, 쿼리 매핑 등 많은 사항을 조정해야 하기 때문에 시간이 많이 걸립니다. 그리고 비용도 듭니다. DB에 문제가 발생할 때 좋은 사례는 무엇입니까? 수직 확장 — 먼저 DB 서버(CPU, 메모리 등)에 더 많은 성능을 추가합니다. 복제 — DB의 읽기 전용 복제본을 생성합니다. 이렇게 하면 읽기 성능을 향상시키는 데 도움이 되지만 캐싱도 있어야 합니다. 이 모든 것이 도움이 되지 않으면 파티셔닝을 수행하십시오 . ???? 특정 쿼리에 대한 확장성과 성능이 중요한 대규모 테이블에는 수평 분할을 사용합니다. ???? 열이 많은 테이블이 있지만 모든 테이블이 자주 함께 액세스되지는 않는 경우 수직 분할을 사용합니다.