샤드(데이터베이스 아키텍처)

Shard (database architecture)

데이터베이스 샤드는 데이터베이스 또는 검색 엔진에 있는 데이터의 수평 파티션입니다.각 샤드는 부하를 분산하기 위해 별도의 데이터베이스 서버 인스턴스에 보관됩니다.

데이터베이스 내의 일부 데이터는 모든 [a]샤드에 존재하지만 일부는 단일 샤드에만 표시됩니다.각 샤드(또는 서버)는 이 데이터 [1]서브셋의 단일 소스로 기능합니다.

데이터베이스 아키텍처

수평 파티셔닝은 데이터베이스 테이블의 행을 로 분할하지 않고 별도로 유지하는 데이터베이스 설계 원칙입니다(는 정규화와 수직 파티셔닝이 서로 다른 익스텐트에 대해 수행하는 작업입니다).각 파티션은 샤드의 일부를 형성하며, 샤드는 다른 데이터베이스 서버 또는 물리적 위치에 위치할 수 있습니다.

수평 파티션 방식에는 많은 이점이 있습니다.테이블은 여러 서버로 분할되어 배포되므로 각 데이터베이스의 각 테이블 행의 총 수가 줄어듭니다.그러면 인덱스 크기가 줄어들고 일반적으로 검색 성능이 향상됩니다.데이터베이스 샤드는 별도의 하드웨어에 배치할 수 있으며 여러 시스템에 여러 샤드를 배치할 수 있습니다.이것에 의해, 다수의 머신에 데이타베이스를 분산할 수 있게 되어, 퍼포먼스가 큰폭으로 향상됩니다.또한 데이터베이스 샤드가 데이터의 실제 세분화(예: 유럽 고객 대 미국 고객)에 기초하는 경우, 적절한 샤드 멤버십을 쉽고 자동으로 추론하고 관련 샤드만 [2]조회할 수 있다.

단점은 다음과 같습니다.

메인 섹션:단점

  • 서버 간의[citation needed] 상호 접속에 대한 의존도가 높다
  • 쿼리 시 지연 시간 증가(특히 여러 샤드를 [citation needed]검색해야 하는 경우)
  • 데이터 또는 인덱스는 종종 한 방향으로만 분할되므로 일부 검색은 최적화되고 다른 검색은 느리거나 불가능합니다.[clarification needed]
  • 서버 세트의 보다 복잡한 장애 모드로 인한 일관성과 내구성 문제.이러한 문제로 인해 시스템이 여러 샤드의 일관성이나 [citation needed]내구성을 보증하지 않는 경우가 많습니다.

실제로 샤딩은 복잡합니다.오랫동안 수동 코딩(특히 위의 예와 같이 행이 명확하게 그룹화되어 있는 경우)을 통해 수행되었지만, 이는 종종 유연하지 않습니다.코드 지원 추가와 별도로 샤딩 대상자를 식별하는 측면에서 샤딩을 자동으로 지원하고자 하는 욕구가 있습니다.일관성 있는 해시는 샤딩에 사용되는 기술로 대규모 로드를 여러 소규모 서비스 및 서버에 [3]분산시킵니다.

분산 컴퓨팅을 사용하여 여러 서버 간에 부하를 분리하는 경우(퍼포먼스 또는 신뢰성 중 하나)에는 샤드 접근법도 유용할 수 있습니다.

수평 파티션과 비교

수평 파티셔닝은 일반적으로 스키마와 데이터베이스 서버의 단일 인스턴스 내에서 하나 이상의 테이블을 행별로 분할합니다.예를 들어 '의 고전적인 예'와 같이 지수를 먼저 검색할 필요 없이, 특정 행이 어떤 파티션에서 발견되는지를 식별할 수 있는 명백하고 강력하며 암묵적인 방법이 있다면, 지수 크기를 줄임으로써 이점을 제공할 수 있다.CustomersEast' 및 'CustomersWest' 테이블. 우편번호가 이미 검색 위치를 나타내고 있습니다.

샤딩은 이 외에도 문제가 있는 테이블을 동일한 방법으로 분할하지만 스키마의 여러 인스턴스에 걸쳐 분할합니다.큰 파티션 테이블에 대한 검색 로드는 동일한 논리 서버상의 여러 인덱스뿐만 아니라 여러 서버(논리 서버 또는 물리 서버)로 분할할 수 있습니다.

분리된 여러 인스턴스로 분할하려면 단순한 수평 파티셔닝 이상의 것이 필요합니다.데이터베이스를 쿼리하는 데 여러 인스턴스를 쿼리해야 하는 경우 단순한 차원 테이블을 가져오는 것만으로 원하는 효율성 향상을 잃게 됩니다.따라서 분할뿐만 아니라 분할 가능한 큰 테이블도 서버 간에 분할할 수 있으며 작은 테이블은 [clarification needed]완전한 단위로 복제됩니다.

이 때문에 샤딩은 아무것도 공유하지 않는 아키텍처와 관련이 있습니다.샤딩이 완료되면 각 샤드는 완전히 다른 논리 스키마 인스턴스/물리 데이터베이스 서버/데이터센터/대륙에서 사용할 수 있습니다.다른 분할되지 않은 테이블에 대한 공유 액세스(샤드 간)를 다른 샤드 내에 유지할 필요는 없습니다.

이것에 의해, 복수의 서버간에 간단하게 레플리케이션을 실시할 수 있습니다(단순한 수평 파티셔닝은 할 수 없습니다).또, 데이터 센터간의 통신 링크가 보틀 넥이 되는, 애플리케이션의 글로벌한 배포에도 도움이 됩니다.

또한 분할되지 않은 테이블이 응용 프로그램이 요구하는 만큼 긴밀하게 동기화되도록 스키마 인스턴스 간에 알림 및 복제 메커니즘이 필요합니다.이는 샤드 시스템 아키텍처에서 복잡한 선택입니다.접근법은 이러한 효과적인 읽기 전용(업데이트는 드물고 일괄 처리됨), 동적으로 복제된 테이블(샤드 시스템의 배포 이점을 일부 감소시키는 대신) 및 그 사이에 많은 옵션이 있습니다.

실장

  • Altibase는 클라이언트 애플리케이션에 투과적인 복합 샤딩 아키텍처(클라이언트 측과 서버 측)를 제공합니다.
  • Apache HBase는 자동으로 [4]샤드할 수 있습니다.
  • Azure SQL Database Elastic Database 툴은 어플리케이션의 [5]데이터 계층에서 스케일아웃하기 위해 분할됩니다.
  • ClickHouse는 고속 오픈소스 OLAP 데이터베이스 관리 시스템입니다.
  • 카우치베이스는 자동으로 투명하게 분할됩니다.
  • 버전 9.0 이후 CUBRID 샤드
  • Db2 Data Partitioning Feature(MPP)는 별도의 노드에서 실행되는 공유 없음 데이터베이스 파티션입니다.
  • Alibaba Cloud의 DRDS(Distributed Relational Database Service)는 데이터베이스/테이블 [6]샤딩을 하며 싱글스데이[7]지원한다.
  • 엔터프라이즈 검색 서버 [8]샤드입니다.
  • eXtreme Scale은 교차 프로세스 인메모리 키/값 데이터스토어(NoSQL 데이터스토어)입니다.샤딩을 사용하여 데이터 처리와 MapReduce 스타일의 병렬 [9]처리 모두에서 프로세스 간에 확장성을 실현합니다.
  • 겨울잠은 파편이 났지만 2007년 이후 [10][11]거의 발달하지 않았다.
  • MacH11 기술의 일부로 버전 12.1 xC1 이후 IBM Informix가 샤드되었습니다.Informix 12.10 xC2는 MongoDB 드라이버와의 완전한 호환성을 추가해 일반 관계형 테이블과 NoSQL 컬렉션을 혼재시킬 수 있으며 샤딩,[12][13] 페일오버 및 ACID 속성을 사용할 수 있습니다.
  • Kdb+는 버전 2.0 이후 샤시됩니다.
  • 오픈소스 컬럼스토어인 MonetDB는 2015년 [14]7월 릴리즈에서 읽기 전용 샤딩을 실시합니다.
  • 버전 1.6 이후 MongoDB 샤드
  • MySQL Cluster는 [15]저비용 범용 노드 간에 자동으로 투명하게 분할되므로 애플리케이션을 변경하지 않고도 읽기 및 쓰기 쿼리를 확장할 수 있습니다.
  • MySQL Fabric(MySQL 유틸리티의 일부) 샤드.[16]
  • 12c Release 2 이후의 Oracle Database 샤드: 샤딩의 장점과 엔터프라이즈 대응 멀티 모델 Oracle Database의 [17]잘 알려진 기능을 조합한 것입니다.
  • Oracle NoSQL Database에는 클러스터의 자동 샤딩 및 탄력적인 온라인 확장 기능이 있습니다(샤드 추가).
  • 버전 1.7 이후 OrientDB 샤드
  • Solr 엔터프라이즈 검색 서버 샤드.[18]
  • Google의 글로벌 규모의 분산 데이터베이스인 Spanner는 여러 Paxos 스테이트 머신에 분산되어 "수백 개의 데이터 센터와 수조 개의 데이터베이스 [19]행에 걸쳐 수백만 대의 머신"으로 확장됩니다.
  • SQLLechemy [20]ORM, Python 프로그래밍 언어 샤드의 데이터 맵퍼입니다.
  • SQL Server 2005 이후로는 서드파티 [21]툴의 도움을 받아 SQL Server를 사용할 수 있습니다.
  • Teradata는 대규모 병렬 데이터베이스 관리 시스템을 "데이터 웨어하우스"로 출시
  • 가상화폐인 볼트는 이용자가 네트워크에 가입하고 거래를 검증하는 데 필요한 데이터를 획기적으로 줄이기 위해 조각난다.이것에 의해, 네트워크의 확장이 한층 [22]더 가능하게 됩니다.
  • Vitess 오픈 소스 데이터베이스 클러스터링 시스템이 MySQL을 파괴합니다.Cloud Native Computing Foundation [23]프로젝트입니다.
  • ShardingSphere는 데이터 샤딩, 분산 트랜잭션 및 분산 데이터베이스 관리를 제공하는 데이터베이스 클러스터링 시스템과 관련이 있습니다.ASF([24]Apache Software Foundation) 프로젝트입니다.

단점들

데이터베이스 테이블을 로컬로 최적화하기 전에 샤딩하면 복잡성이 조기에 발생합니다.샤딩은 최적화를 위한 다른 모든 옵션이 부적절한 경우에만 사용해야 합니다.데이터베이스 샤딩이 복잡해짐에 따라 다음과 같은 잠재적인 문제가 발생합니다.

  • SQL의 복잡성 - 개발자가 샤딩 로직을 처리하기 위해 더 복잡한 SQL을 작성해야 하므로 버그가 증가합니다.
  • 추가 소프트웨어 - 파티션 분할, 균형 조정, 무결성 보장
  • 단일 장애 지점 - 네트워크/하드웨어/시스템 문제로 인해 1개의 샤드가 파손되면 테이블 전체에 장애가 발생합니다.
  • 장애 조치 서버의 복잡성 - 장애 조치 서버는 데이터베이스 조각의 집합 복사본을 가지고 있어야 합니다.
  • 백업 복잡성 - 개별 샤드의 데이터베이스 백업은 다른 샤드의 백업과 조정해야 합니다.
  • 조작의 복잡성 - 인덱스 추가/삭제, 컬럼 추가/삭제, 스키마 수정이 매우 어려워집니다.

자동 샤딩을 제공하는 독립 소프트웨어 벤더는 이러한 DIY 샤딩의 과거 문제를 해결했습니다.

어원학

데이터베이스 컨텍스트에서 대부분의 경우 "샤드"라는 용어는 다음 두 가지 소스 중 하나에서 파생된 것일 수 있습니다.ComputerCorporation데이터 복제(로 수평 분할 반대)을 촉진하기 위해 중복 하드웨어 활용한 미국의"시스템 고도로 사용 가능 Replicated 데이터에 대한"[25], 또는 및 시간에 의해 100명 중 한 사람 위대한 vid의로 지정되었다 8기네스 세계 기록 세운 비평가로부터 호평을 받은 1997년 MMORPG게임 울티마 온라인.eo모든 [26][27]시대를 초월한 게임들

Ultima Online의 창시자인 Richard Garriott는 게임 [28]내 자원을 교환하고 수집하기 위해 플레이어가 새로운 인터넷 액세스(당시 혁신적인 기술)를 활용할 수 있는 자체 규제형 가상 생태 시스템을 개발하려고 했을 때 만들어진 용어라고 회상합니다.가상 생태계는 사내 테스트에서 의도한 대로 작동했지만, 플레이어가 산란 시스템이 작동할 수 있는 속도보다 더 빨리 플레이 가능한 지역에 있는 모든 살아있는 야생동물을 죽였기 때문에 "거의 즉각적으로" 자연 균형이 깨졌습니다.게리엇의 제작팀은 글로벌 플레이어 기반을 별도의 세션으로 분리하여 Ultima Online의 가상 연결 부분 중 일부를 Ultima I: The First Age of Darkness의 종말과 다시 쓰면서 이 문제를 완화하려고 시도했다. Ultima Online은 또한 경쟁자인 몬데인의 패배로 인해 다중 우주 "샤드"를 만들었다.이 수정으로 Garriott의 팀은 가상 환경의 복사본을 만드는 데 필요한 허구적 근거를 얻게 되었습니다.하지만, 게임의 급격한 상승은 또한 새로운 다중 우주 가상 생태 시스템 또한 빠르게 압도되었다는 것을 의미했다.몇 달간의 테스트 후, 게리엇의 팀은 이 기능을 완전히 포기하기로 결정하였고, 게임의 기능을 제거하였다.

현재 '샤드'라는 용어는 데이터베이스 시스템 전체에 용장 하드웨어를 도입하여 사용하는 것을 의미합니다.

「 」를 참조해 주세요.

메모들

  1. ^ 일반적으로 차원 테이블과 같은 '지원' 데이터

레퍼런스

  1. ^ Sadalage, Pramod J.; Fowler, Martin (2012). "4: Distribution Models". NoSQL Distilled. ISBN 978-0321826626.
  2. ^ Rahul Roy (July 28, 2008). "Shard - A Database Design".
  3. ^ Ries, Eric. "Sharding for Startups".
  4. ^ "Apache HBase – Apache HBase™ Home". hbase.apache.org.
  5. ^ "Introducing Elastic Scale preview for Azure SQL Database". azure.microsoft.com.
  6. ^ "Alibaba Cloud Help Center - Cloud Definition and Explanation of Cloud Based Services - Alibaba Cloud". www.alibabacloud.com.
  7. ^ "Focuses on Large-Scale Online Databases - Alibaba Cloud". www.alibabacloud.com.
  8. ^ "Index Shard Allocation Elasticsearch Guide [7.13] Elastic". www.elastic.co.
  9. ^ "IBM Docs".
  10. ^ "Hibernate Shards". 2007-02-08.
  11. ^ "Hibernate Shards".
  12. ^ "New Grid queries for Informix".
  13. ^ "NoSQL support in Informix (JSON storage, Mongo DB API)". September 24, 2013.
  14. ^ "MonetDB July2015 Released". 31 August 2015.
  15. ^ "MySQL Cluster Features & Benefits". 2012-11-23.
  16. ^ "MySQL Fabric sharding quick start guide".
  17. ^ "Oracle Sharding". Oracle. 2018-05-24. Retrieved 2021-07-10.
  18. ^ "DistributedSearch - SOLR - Apache Software Foundation". cwiki.apache.org.
  19. ^ Corbett, James C; Dean, Jeffrey; Epstein, Michael; Fikes, Andrew; Frost, Christopher; Furman, JJ; Ghemawat, Sanjay; Gubarev, Andrey; Heiser, Christopher; Hochschild, Peter; Hsieh, Wilson; Kanthak, Sebastian; Kogan, Eugene; Li, Hongyi; Lloyd, Alexander; Melnik, Sergey; Mwaura, David; Nagle, David; Quinlan, Sean; Rao, Rajesh; Rolig, Lindsay; Saito, Yasushi; Szymaniak, Michal; Taylor, Christopher; Wang, Ruth; Woodford, Dale. "Spanner: Google's Globally-Distributed Database" (PDF). Proceedings of OSDI 2012. Retrieved 24 February 2014.
  20. ^ "sqlalchemy/sqlalchemy". July 9, 2021 – via GitHub.
  21. ^ "Partitioning and Sharding Options for SQL Server and SQL Azure". infoq.com.
  22. ^ "A faster, more efficient cryptocurrency". MIT News. Retrieved 2019-01-30.
  23. ^ "Vitess". vitess.io.
  24. ^ "ShardingSphere". shardingsphere.apache.org.
  25. ^ Sarin, DeWitt & Rosenberg, SHARD 개요: 고가용성 복제 데이터 시스템, 테크니컬 리포트 CCA-88-01, Computer Corporation of America, 1988년 5월
  26. ^ Koster, Raph (2009-01-08). "Database "sharding" came from UO?". Raph Koster's Website. Retrieved 2015-01-17.
  27. ^ "Ultima Online: The Virtual Ecology War Stories". Ars Technica Videos. Retrieved 2020-06-04.
  28. ^ "Ultima Online: The Virtual Ecology War Stories". Ars Technica Videos.

외부 링크