샤드 (데이터베이스 아키텍처)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
샤딩은 데이터베이스 테이블의 행을 여러 서버에 분산하여 저장하는 데이터베이스 아키텍처 기술이다. 이는 대규모 데이터베이스의 성능 향상과 확장성을 위해 사용되며, 수평 분할과 유사하지만 여러 스키마 인스턴스에 걸쳐 데이터를 분할하는 차이점이 있다. 샤딩은 분산 컴퓨팅 환경에서 부하 분산을 용이하게 하며, 블록체인 기술에서도 활용된다. 구현 시에는 데이터 특성과 서비스 요구 사항을 고려하여 적절한 샤딩 키를 선택해야 하며, 자동 샤딩을 지원하는 다양한 데이터베이스 시스템이 존재한다. 샤딩은 데이터베이스 설계를 복잡하게 만들고, SQL 복잡성, 추가 소프트웨어, 단일 실패 지점 등의 단점을 가질 수 있다. "샤드"라는 용어는 데이터 복제를 위한 시스템에서 유래되었거나, 온라인 게임 울티마 온라인에서 가상 환경을 분리하는 데 사용된 개념에서 유래되었을 수 있다.
더 읽어볼만한 페이지
샤드 (데이터베이스 아키텍처) | |
---|---|
개요 | |
유형 | 데이터베이스 아키텍처 |
목적 | 데이터베이스 또는 검색 엔진의 수평 파티셔닝 |
설명 | 대규모 데이터 세트를 더 작고 관리하기 쉬운 부분으로 분할하여 성능 및 가용성 향상 |
기본 원리 | |
수평 분할 | 데이터를 행 단위로 분할하여 여러 노드에 분산 |
파티션 키 | 각 데이터 행이 어느 파티션에 속하는지 결정하는 데 사용되는 속성 또는 속성 집합 |
샤드 | 데이터베이스의 수평 파티션 |
장점 | |
성능 향상 | 쿼리를 병렬로 실행하여 응답 시간 단축 |
가용성 향상 | 일부 샤드에 장애가 발생하더라도 데이터베이스 전체가 중단되지 않음 |
확장성 향상 | 데이터베이스에 더 많은 샤드를 추가하여 용량 확장 |
단점 | |
복잡성 증가 | 데이터베이스 아키텍처가 더 복잡해지고 관리 overhead 증가 |
데이터 일관성 문제 | 여러 샤드에 걸쳐 데이터 일관성을 유지하기 어려움 |
쿼리 라우팅 | 쿼리를 올바른 샤드로 라우팅하는 메커니즘 필요 |
구현 방법 | |
범위 기반 샤딩 | 파티션 키 값의 범위를 기준으로 데이터를 분할 (예: ID 범위) |
해시 기반 샤딩 | 파티션 키 값의 해시 값을 기준으로 데이터를 분할 (데이터를 균등하게 분산) |
디렉토리 기반 샤딩 | 파티션 키와 해당 샤드 간의 매핑을 유지하는 디렉토리 또는 조회 테이블 사용 |
관련 기술 | |
데이터 파티셔닝 | 데이터를 더 작고 관리하기 쉬운 부분으로 분할하는 일반적인 기술 |
분산 데이터베이스 | 여러 컴퓨터에 분산된 데이터베이스 시스템 |
NoSQL 데이터베이스 | 샤딩을 기본적으로 지원하는 경우가 많음 |
활용 사례 | |
대규모 온라인 쇼핑몰 | 상품 카탈로그, 사용자 정보, 주문 내역 등을 샤딩하여 성능 향상 |
소셜 미디어 플랫폼 | 사용자 게시물, 친구 관계, 메시지 등을 샤딩하여 확장성 확보 |
온라인 게임 | 게임 캐릭터 정보, 게임 월드 데이터 등을 샤딩하여 안정적인 서비스 제공 |
2. 데이터베이스 아키텍처
샤딩은 데이터베이스 테이블의 행을 기준으로 데이터를 분할하는 설계 원칙이다. 정규화 및 수직 분할이 열을 기준으로 분할하는 것과 달리, 수평 분할은 테이블을 행 단위로 나누어 각 샤드에 분산시킨다. 각 샤드는 별도의 데이터베이스 서버나 물리적 위치에 존재할 수 있다.[2]
이러한 방식은 다음과 같은 장점을 가진다.
- 각 테이블의 행 수가 줄어들어 인덱스 크기가 감소하고 검색 성능이 향상된다.
- 여러 샤드를 여러 머신에 배치하여 데이터베이스를 분산시킬 수 있어 성능이 크게 향상된다.
- 데이터의 실제 세분화(예: 유럽 고객 vs. 미국 고객)를 기반으로 샤드를 구성하면 관련 샤드만 쿼리할 수 있다.[2]
샤딩은 복잡한 기술이지만, 일관성 해싱과 같은 기술을 통해 자동화하려는 시도가 이루어지고 있다.[3] 분산 컴퓨팅 환경에서 부하 분산에 유용하며, 2010년대에는 블록체인의 성능 및 확장성 문제를 해결하기 위한 방법으로도 주목받고 있다.[4][5]
2. 1. 수평 분할과의 비교
수평 분할은 하나 이상의 테이블을 행별로 나누는 방식이다. 이는 일반적으로 단일 스키마 인스턴스와 데이터베이스 서버 내에서 이루어진다. 예를 들어, '`CustomersEast`' 및 '`CustomersWest`' 테이블처럼 우편 번호를 통해 어떤 테이블에서 데이터를 찾을 수 있는지 명확하게 알 수 있다면, 인덱스 크기를 줄여 검색 효율을 높일 수 있다.샤딩은 여기서 더 나아가, 테이블을 같은 방식으로 분할하지만 여러 스키마 인스턴스에 걸쳐 수행할 수 있다. 이는 대규모 테이블의 검색 부하를 여러 서버로 분산시켜 성능을 향상시킨다는 장점이 있다.
샤딩은 공유 없음 아키텍처와 관련이 있다. 샤딩이 이루어지면 각 샤드는 완전히 별개의 논리 스키마 인스턴스, 물리적 데이터베이스 서버, 데이터 센터, 대륙에 존재할 수 있기 때문이다. 따라서 다른 샤드의 분할되지 않은 테이블에 접근할 필요가 없다.
이러한 특징은 여러 서버 간의 복제를 용이하게 하며, 데이터 센터 간 통신이 병목 현상이 될 수 있는 전 세계적인 애플리케이션 배포에도 유용하다. 샤딩된 시스템 아키텍처에서는 스키마 인스턴스 간 알림 및 복제 메커니즘을 통해 분할되지 않은 테이블을 동기화 상태로 유지해야 한다.
3. 구현
샤딩은 실제로 구현하기 복잡한 기술이다. 오랫동안 수동 코딩으로 구현되었지만, 유연성이 부족한 경우가 많았다. 이에 따라 자동 샤딩을 지원하려는 요구가 증가했다.[33] 일관성 해싱은 여러 서버에 부하를 분산시키는 샤딩 기술 중 하나이다.[3]
분산 컴퓨팅 환경에서 샤딩은 성능 및 안정성 향상을 위해 사용될 수 있다. 2010년대에는 블록체인 기술에서 성능 및 확장성 문제를 해결하기 위한 방법으로 샤딩이 부상했다.[34][35]
수평 분할은 데이터베이스 테이블의 행을 별도로 유지하는 데이터베이스 설계 원칙이다. 각 파티션은 샤드의 일부를 형성하며, 별도의 데이터베이스 서버 또는 물리적 위치에 위치할 수 있다. 테이블이 여러 서버로 분할되어 분산되므로 각 데이터베이스의 각 테이블에 있는 총 행 수가 줄어들어 인덱스 크기가 줄어들고 일반적으로 검색 성능이 향상된다.[31]
3. 1. 저명한 구현체
다양한 데이터베이스 관리 시스템(DBMS) 및 관련 기술들이 샤딩을 지원한다. 다음은 샤딩을 지원하는 주요 DBMS 및 기술 목록이다.시스템/기술명 | 설명 |
---|---|
아파치 HBase | 자동 샤딩 제공.[64] |
Azure SQL Database Elastic Database tools | 애플리케이션 데이터 계층 확장 및 축소.[65] |
카우치베이스 서버 | 자동 투명 샤딩, 고성능 제공. |
CUBRID | 버전 9.0부터 샤딩 지원. |
일래스틱서치 | 엔터프라이즈 검색 서버.[66] |
eXtreme Scale | 프로세스 간 인메모리 키/값 데이터 저장소.[67] |
하이버네이트 샤드 | 2007년 이후 개발 거의 없음.[68][69] |
IBM 인포믹스 | 버전 12.1 xC1부터 샤딩, MongoDB 드라이버와 호환.[70][71] |
Kdb+ | 버전 2.0부터 샤딩 지원. |
MonetDB | 2015년 7월 릴리스부터 읽기 전용 샤딩.[72] |
몽고DB | 버전 1.6부터 샤딩 지원. |
MySQL 클러스터 | 자동 투명 샤딩.[73] |
MySQL 패브릭 | MySQL 유틸리티의 일부.[74] |
오라클 데이터베이스 샤딩 | 12c 릴리스 2부터 지원.[75] |
오라클 NoSQL 데이터베이스 | 자동 샤딩, 클러스터 탄력적 확장. |
OrientDB | 버전 1.7부터 샤딩 지원. |
Solr | 엔터프라이즈 검색 서버.[76] |
[https://cloud.google.com/spanner Google Cloud Spanner] | 구글의 글로벌 분산 데이터베이스.[77] |
SQLAlchemy ORM | 파이썬용 데이터 매퍼.[78] |
테라데이터 | 대규모 병렬 데이터베이스 관리 시스템, "데이터 웨어하우스"로 판매. |
알티베이스 | 클라이언트 애플리케이션에 투명한 샤딩 아키텍처 제공. |
ClickHouse | 빠른 오픈 소스 OLAP DBMS. |
Db2 | 데이터 파티셔닝 기능(MPP) 제공. |
알리바바 클라우드 DRDS | 데이터베이스/테이블 샤딩, 광군절 지원.[8][9] |
MariaDB Spider | 테이블 연합, 샤딩, XA 트랜잭션, ODBC 지원 스토리지 엔진. |
ScyllaDB | 서버 각 코어에서 샤딩. |
SQL Server | 2005년부터 타사 도구로 샤딩 지원.[24] |
Vault (암호화폐) | 네트워크 확장성 향상. |
Vitess | MySQL 샤딩, Cloud Native Computing Foundation 프로젝트.[26] |
ShardingSphere | 데이터 샤딩, 분산 트랜잭션, 분산 DB 관리, 아파치 소프트웨어 재단 프로젝트.[27] |
4. 단점
샤딩은 데이터베이스 테이블을 여러 서버에 분산하여 저장하는 기술이지만, 다음과 같은 몇 가지 단점을 가지고 있다.
- SQL 복잡성 증가: 개발자는 샤딩 로직을 처리하기 위해 더 복잡한 SQL 쿼리를 작성해야 하므로, 버그 발생 가능성이 높아진다.
- 추가 소프트웨어 필요: 샤딩을 관리하기 위해 파티셔닝, 균형 조정, 조정 및 무결성 보장 등의 기능을 수행하는 추가 소프트웨어가 필요하며, 이 소프트웨어 자체에 장애가 발생할 가능성도 있다.
- 단일 실패 지점: 네트워크, 하드웨어 또는 시스템 문제로 인해 하나의 샤드에 장애가 발생하면 전체 테이블을 사용할 수 없게 될 수 있다.
- 페일오버 복잡성: 장애 조치 서버는 데이터베이스 샤드의 복사본을 가지고 있어야 하므로 관리가 복잡해진다.
- 백업 복잡성: 개별 샤드의 데이터베이스 백업은 다른 샤드의 백업과 동기화되어야 한다.
- 운영 복잡성: 인덱스 추가/제거, 열 추가/삭제, 스키마 변경과 같은 작업이 훨씬 더 어려워진다.
이러한 이유로 샤딩은 다른 최적화 방법(예: 인덱싱, 쿼리 튜닝)을 모두 적용한 후에도 성능 문제가 해결되지 않을 때 고려해야 하는 최후의 수단이다. 샤딩 도입 전에는 반드시 샤딩의 장점과 단점을 충분히 검토하고, 서비스 특성에 맞는 샤딩 전략을 수립해야 한다.
5. 어원
데이터베이스 맥락에서 "샤드"라는 용어는 두 가지 출처에서 유래했을 가능성이 있는 것으로 알려져 있다. 하나는 데이터 ''복제''를 위해 중복 하드웨어를 활용한 Computer Corporation of America의 "A System for Highly Available Replicated Data"이며,[28] 다른 하나는 8개의 기네스 세계 기록을 세우고 ''Time''에서 역대 최고의 비디오 게임 100선 중 하나로 선정된 1997년 MMORPG 비디오 게임 ''울티마 온라인''이다.[29][30]
울티마 온라인의 제작자인 리처드 개리엇은 당시 혁신적인 기술이었던 인터넷 접근성을 활용하여 플레이어들이 상호작용할 수 있는 가상 생태계를 만들려고 시도하는 과정에서 이 용어가 만들어졌다고 회상한다.[30] 플레이어들이 스폰 시스템이 작동하는 속도보다 빠르게 야생 동물을 모두 죽이는 문제가 발생하자, 개리엇의 팀은 이 문제를 해결하기 위해 플레이어들을 별도의 세션으로 분리하고, ''Ultima I: The First Age of Darkness''의 악당 Mondain의 패배가 multiverse "샤드"의 창조로 이어졌다는 설정을 추가하여 가상 환경의 사본을 여러 개 생성하는 것을 정당화했다. 그러나 게임이 인기를 얻으면서 멀티버스 가상 생태계 시스템 역시 빠르게 과부하되었고, 결국 몇 달간의 테스트 후 해당 기능은 제거되었다.[30]
참조
[1]
서적
NoSQL Distilled
Pearson Education
[2]
웹사이트
Shard - A Database Design
http://technoroy.blo[...]
2008-07-28
[3]
웹사이트
Sharding for Startups
http://www.startuple[...]
[4]
서적
Proceedings of the 1st ACM Conference on Advances in Financial Technologies
2019-10-21
[5]
간행물
Proceedings of the 1st ACM Conference on Advances in Financial Technologies
2020-07-18
[6]
웹사이트
Apache HBase – Apache HBase™ Home
http://hbase.apache.[...]
[7]
웹사이트
Introducing Elastic Scale preview for Azure SQL Database
https://azure.micros[...]
2014-10-02
[8]
웹사이트
Alibaba Cloud Help Center - Cloud Definition and Explanation of Cloud Based Services - Alibaba Cloud
https://www.alibabac[...]
[9]
웹사이트
Focuses on Large-Scale Online Databases - Alibaba Cloud
https://www.alibabac[...]
[10]
웹사이트
"Index Shard Allocation | Elasticsearch Guide [7.13] | Elastic"
https://www.elastic.[...]
[11]
웹사이트
IBM Docs
http://publib.boulde[...]
[12]
웹사이트
Hibernate Shards
http://shards.hibern[...]
2007-02-08
[13]
웹사이트
Hibernate Shards
http://www.hibernate[...]
2011-03-30
[14]
웹사이트
New Grid queries for Informix
http://ibmdatamag.co[...]
[15]
웹사이트
NoSQL support in Informix (JSON storage, Mongo DB API)
https://fr.slideshar[...]
2013-09-24
[16]
웹사이트
Spider
https://mariadb.com/[...]
2022-12-20
[17]
웹사이트
MonetDB July2015 Released
https://www.monetdb.[...]
2015-08-31
[18]
웹사이트
MySQL Cluster Features & Benefits
http://www.mysql.com[...]
2012-11-23
[19]
웹사이트
MySQL Fabric sharding quick start guide
http://dev.mysql.com[...]
[20]
웹사이트
Oracle Sharding
https://www.oracle.c[...]
2018-05-24
[21]
웹사이트
DistributedSearch - SOLR - Apache Software Foundation
https://cwiki.apache[...]
[22]
웹사이트
Spanner: Google's Globally-Distributed Database
http://research.goog[...]
2014-02-24
[23]
웹사이트
sqlalchemy/sqlalchemy
https://github.com/s[...]
2021-07-09
[24]
웹사이트
Partitioning and Sharding Options for SQL Server and SQL Azure
https://www.infoq.co[...]
[25]
웹사이트
A faster, more efficient cryptocurrency
https://news.mit.edu[...]
2019-01-24
[26]
웹사이트
Vitess
https://vitess.io/
[27]
웹사이트
ShardingSphere
https://shardingsphe[...]
[28]
간행물
Overview of SHARD: A System for Highly Available Replicated Data
Computer Corporation of America
1988-05
[29]
웹사이트
Database "sharding" came from UO?
http://www.raphkoste[...]
2015-01-17
[30]
웹사이트
Ultima Online: The Virtual Ecology | War Stories
https://www.youtube.[...]
2017-12-21
[31]
서적
NoSQL Distilled
[32]
웹사이트
Shard - A Database Design
http://technoroy.blo[...]
2008-07-28
[33]
웹사이트
Sharding for Startups
http://www.startuple[...]
[34]
논문
SoK: Sharding on Blockchain
https://dl.acm.org/d[...]
2019-10-21
[35]
논문
Coded Merkle Tree: Solving Data Availability Attacks in Blockchains
https://dl.acm.org/d[...]
2020-07-18
[36]
웹사이트
Apache HBase – Apache HBase™ Home
http://hbase.apache.[...]
[37]
웹사이트
Introducing Elastic Scale preview for Azure SQL Database
https://azure.micros[...]
[38]
웹사이트
Alibaba Cloud Help Center - Cloud Definition and Explanation of Cloud Based Services - Alibaba Cloud
https://www.alibabac[...]
[39]
웹사이트
Focuses on Large-Scale Online Databases - Alibaba Cloud
https://www.alibabac[...]
[40]
웹사이트
Index Shard Allocation | Elasticsearch Guide [7.13] | Elastic
https://www.elastic.[...]
[41]
웹사이트
IBM Docs
http://publib.boulde[...]
[42]
웹사이트
Hibernate Shards
http://shards.hibern[...]
2007-02-08
[43]
웹사이트
Hibernate Shards
http://www.hibernate[...]
[44]
웹사이트
New Grid queries for Informix
http://ibmdatamag.co[...]
[45]
웹사이트
NoSQL support in Informix (JSON storage, Mongo DB API)
https://fr.slideshar[...]
2013-09-24
[46]
웹사이트
Spider
https://mariadb.com/[...]
2022-12-20
[47]
웹사이트
MonetDB July2015 Released
https://www.monetdb.[...]
2015-08-31
[48]
웹사이트
MySQL Cluster Features & Benefits
http://www.mysql.com[...]
2012-11-23
[49]
웹사이트
MySQL Fabric sharding quick start guide
http://dev.mysql.com[...]
[50]
웹사이트
Oracle Sharding
https://www.oracle.c[...]
2021-07-10
[51]
웹사이트
DistributedSearch - SOLR - Apache Software Foundation
https://cwiki.apache[...]
[52]
웹사이트
Spanner: Google's Globally-Distributed Database
http://research.goog[...]
2014-02-24
[53]
웹사이트
sqlalchemy/sqlalchemy
https://github.com/s[...]
2021-07-09
[54]
웹사이트
Partitioning and Sharding Options for SQL Server and SQL Azure
https://www.infoq.co[...]
[55]
웹사이트
A faster, more efficient cryptocurrency
https://news.mit.edu[...]
2019-01-30
[56]
웹사이트
Vitess
https://vitess.io/
[57]
웹사이트
ShardingSphere
https://shardingsphe[...]
[58]
간행물
Overview of SHARD: A System for Highly Available Replicated Data
1988-05
[59]
웹사이트
Database "sharding" came from UO?
http://www.raphkoste[...]
2015-01-17
[60]
웹사이트
Ultima Online: The Virtual Ecology | War Stories
https://www.youtube.[...]
[61]
웹사이트
データベース用語の「シャーディング」はMMORPGの「ウルティマオンライン」が由来かもしれない
https://gigazine.net[...]
2023-06-14
[62]
문서
Typically 'supporting' data such as dimension tables
[63]
서적
NoSQL Distilled
[64]
웹인용
Apache HBase Sharding
http://hbase.apache.[...]
[65]
웹인용
Introducing Elastic Scale preview for Azure SQL Database
http://azure.microso[...]
2018-02-18
[66]
웹인용
Index Shard Allocation
http://www.elastic.c[...]
[67]
문서
http://publib.boulder.ibm.com/infocenter/wxsinfo/v7r1/index.jsp?topic=%2Fcom.ibm.websphere.extremescale.over.doc%2
[68]
웹인용
Hibernate Shards
http://shards.hibern[...]
2007-02-08
[69]
웹인용
Hibernate Shards
http://www.hibernate[...]
2008-09-25
[70]
웹인용
New Grid queries for Informix
http://ibmdatamag.co[...]
2018-02-18
[71]
웹인용
NoSQL support in Informix
http://fr.slideshare[...]
[72]
웹인용
MonetDB July2015 Released
https://www.monetdb.[...]
2015-08-31
[73]
웹인용
MySQL Cluster Features & Benefits
http://www.mysql.com[...]
2012-11-23
[74]
웹인용
MySQL Fabric sharding quick start guide
http://dev.mysql.com[...]
2018-02-18
[75]
웹사이트
http://www.oracle.co[...]
[76]
웹인용
Distributed Search
http://wiki.apache.o[...]
[77]
웹인용
Spanner: Google’s Globally-Distributed Database
http://research.goog[...]
Google
2014-02-24
[78]
웹인용
Basic example of using the SQLAlchemy Sharding API.
http://www.sqlalchem[...]
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com