TiDB

TiDB
TiDB
개발자핑캡 주식회사
초기 릴리즈2017년 10월 15일; 4년(2017-10-15)[1]
안정적 해제
5.0.1[2] / 2021년 4월 23일; 10개월(2021년 4월 23일)
리포지토리
기록 위치Go(TiDB), Rust(TiKV)
다음에서 사용 가능영어, 중국어
유형NewSQL
면허증아파치 2.0
웹사이트pingcap.com/products/tidb/ Edit this on Wikidata

TiDB(/'taɪdiːbi:/, "Ti"는 티타늄을 의미한다)는 HTAP(Hybrid Transactional and Analytical Processing) 워크로드를 지원하는 오픈 소스 NewSQL 데이터베이스다.[3]MySQL과 호환되며 수평적 확장성, 강력한 일관성 및 고가용성을 제공할 수 있다.PingCAP, Inc.에 의해 주로 개발 및 지원되며 Apache 2.0에 따라 라이센스가 부여된다.TiDB는 구글의 스패너와[4] F1[5] 논문에서 초기 디자인 영감을 얻었다.[6]

TiDB는 InfoWorld 2018 Bossie Award로부터 데이터 스토리지 및 분석을 위한 최고의 오픈 소스 소프트웨어 중 하나로 인정받았다.[7]

역사

회사이력

핑캡 주식회사는 2015년 4월 설립된 소프트웨어 회사로서 설립 후 TiDB 개발에 착수했다.그 회사는 TiDB와 그것의 관련 오픈소스 커뮤니티의 주요 개발자, 유지 관리자, 그리고 원동력이다.핑캡은 벤처 지원을 받는 회사로, 2018년 9월 5000만 USD Series C 라운드 파이낸싱을 발표했다.[8]

발매이력

모든 TiDB 릴리스 정보를 참조하십시오.

주요 특징

수평 확장성

TiDB는 새로운 노드를 추가하여 SQL 프로세싱과 스토리지 용량을 모두 확장할 수 있다.이를 통해 수직적으로만 확장되는 기존 관계형 데이터베이스에 비해 인프라 용량을 쉽고 유연하게 확장할 수 있다.

MySQL 호환성

TiDB는 애플리케이션에 대한 MySQL 5.7 서버인 것처럼 행동한다.사용자는 기존의 모든 MySQL 클라이언트 라이브러리를 계속 사용할 수 있다.[9]TiDB의 SQL 처리 레이어는 MySQL 포크가 아닌 처음부터 구축되기 때문에 호환성이 100%가 아니며 MySQL과 TiDB 사이에는 알려진 동작 차이가 있다.[10]

일관성 있는 분산 트랜잭션

TiDB는 내부적으로 테이블을 "지역"이라고 하는 작은 범위 기반 청크로 만든다.[11]각 영역은 약 100MB로 기본 설정되며, TiDB는 내부적으로 2상 커밋을 사용하여 지역이 거래상 일관된 방식으로 유지되도록 한다.

클라우드 네이티브

TiDB는 클라우드에서 작동하여 구축, 프로비저닝, 운영 및 유지보수를 유연하게 수행하도록 설계되어 있다.TiKV로 불리는 TiDB의 스토리지 레이어는 샌드박스 수준 프로젝트로 2018년 8월 CNCF(Cloud Native Computing Foundation) 회원 프로젝트로,[12] 2019년 5월 인큐베이팅 레벨 호스팅 프로젝트로 자리 잡았다.[13]TiKV는 2020년 9월에 CNCF를 졸업했다.[14]또한 TiDB 플랫폼의 아키텍처는 SQL 프로세싱과 스토리지가 서로 독립적으로 확장될 수 있도록 한다.

실시간 HTAP

TiDB는 온라인 트랜잭션 처리(OLTP)와 온라인 분석 처리(OLAP) 워크로드를 모두 지원할 수 있다.TiDB에는 두 개의 스토리지 엔진이 있다.행 스토어인 TiKV와 컬럼 스토어인 TiFlash.데이터를 실시간으로 TiKV에서 TiFlash로 복제하여 TiFlash가 최신 데이터를 처리하도록 할 수 있다.

고가용성

TiDB는 Rapt 컨센서스 알고리즘[15] 사용하여 Rapt 그룹의 스토리지 전체에 걸쳐 데이터를 안전하게 복제하고 고가용성(HA)을 보장한다.고장이 발생하면 래프트 그룹이 자동으로 실패한 멤버의 새 리더를 선출하고, 필요한 수동 개입 없이 TiDB 클러스터를 자체 치유한다.장애 및 자가 복구 운영은 애플리케이션에 영향을 미치지 않음

배치 방법

오퍼레이터가 있는 쿠베르네츠

TiDB 오퍼레이터를 사용하여 Kubernetes 지원 클라우드 환경에 TiDB를 구축할 수 있다.[16]오퍼레이터는 쿠베르네츠 응용프로그램을 포장, 배포 및 관리하는 방법이다.상태 저장 워크로드를 실행하도록 설계되었으며 Core에서 처음 도입됨2016년 OS.[17]TiDB 오퍼레이터는[18] 원래 PingCAP에 의해 개발되었으며 2018년 8월에 오픈소스가 제공되었다.[19]TiDB 오퍼레이터는 노트북에 TiDB,[20] 구글 클라우드 플랫폼의 구글 쿠베르네츠 엔진,[21] 아마존 웹서비스의 쿠베르네테스용 탄력 컨테이너 서비스를 구축하는 데 활용할 수 있다.[22]

TiUP

TiDB 4.0은 클러스터 운영 및 유지보수 툴인 TiUP를 도입한다.사용자가 몇 가지 명령으로 TiDB 클러스터를 신속하게 설치하고 구성할 수 있도록 돕는다.[23]

TiDB 허용 안 됨

TiDB는 TiDB Annibleable 플레이북(권장되지 않음)을 사용하여 Anible을 사용하여 배포할 수 있다.[24]

도커

도커는 여러 노드와 여러 기계의 컨테이너화된 환경에 TiDB를 배치하는 데 사용할 수 있으며, 도커 작성은 시험 목적으로 단일 명령으로 TiDB를 배치하는 데 사용할 수 있다.[25]

도구들

TiDB는 기존 MySQLMariaDB 사용자를 위한 데이터 복제 및 마이그레이션을 지원하기 위해 일련의 오픈 소스 도구를 주변에 구축했다.

TiDB 데이터 마이그레이션(DM)

TiDB 데이터 마이그레이션(DM)은 이미 샤딩된 MySQL 또는 MariaDB 테이블에서 TiDB로 데이터를 복제하는 데 적합하다.[26]DM의 일반적인 사용 사례는 MySQL 또는 MariaDB 테이블을 TiDB에 연결하여 TiDB를 거의 슬레이브로 처리한 다음 이 TiDB 클러스터에서 직접 분석 워크로드를 거의 실시간으로 실행하는 것이다.

백업 및 복원

BR(Backup & Restore)은 TiDB 클러스터 데이터를 위한 분산 백업 및 복원 툴이다.대규모 TiDB 클러스터를 위한 높은 백업 및 복원 속도를 제공한다.[27]

만두

만두는 TiDB나 MySQL에 저장된 데이터를 수출하는 데이터 수출 도구다.사용자가 TiDB 또는 MySQL에서 논리적 전체 백업 또는 전체 덤프를 만들 수 있도록 한다.[28]

TiDB 번개

TiDB 번개는 대형 MySQL 덤프를 새로운 TiDB 클러스터로 고속 완전 가져오기를 지원하는 툴로, 각 SQL 문을 실행하는 것보다 더 빠른 가져오기 경험을 제공한다.이 도구는 테스트 또는 프로덕션 마이그레이션 속도를 높이기 위해 초기 빈 TiDB 클러스터를 많은 데이터로 빠르게 채우는 데 사용된다.SQL 문을 키 값 쌍으로 구문 분석하여 RocksDB에 직접 SST(Sorted String Table) 파일을 생성함으로써 가져오기 속도 향상이 달성된다.[29][30]

TiDB 빈로그

TiDB Binlog는 TiDB 클러스터에 대한 논리적 변경 사항을 수집하는 데 사용되는 툴이다.두 TiDB 클러스터 간에 또는 TiDB 클러스터에서 다른 다운스트림 플랫폼으로 증분 백업 및 복제를 제공하는 데 사용된다.[31]

MySQL 기본-보조 복제와 기능이 유사하다.주요 차이점은 TiDB가 분산형 데이터베이스인 만큼 각 TiDB 인스턴스에서 생성되는 빈로그를 다운스트림에서 소비하기 전에 트랜잭션 커밋 시간에 따라 병합 및 정렬할 필요가 있다는 점이다.[32]

사례 연구

현재 TiDB는 페이페이, 쇼페, 북마이쇼, 샤오미, 즈이후, 메이투안-디엔핑, 아이치이, 얀주안, 모비케, Yiguo.com, VNG, JD클라우드 및 AI, 넷이아제게임즈, Yuanfudao.com 등 1000여 개 업체가 사용하고 있다.

참고 항목

참조

  1. ^ "1.0 GA release notes".
  2. ^ "Release 5.0.1". April 23, 2021. Retrieved May 22, 2021.
  3. ^ Xu, Kevin (October 17, 2018). "How TiDB combines OLTP and OLAP in a distributed database". InfoWorld.{{cite web}}: CS1 maint : url-status (링크)
  4. ^ "Spanner: Google's Globally-Distributed Database".
  5. ^ "F1: A Distributed SQL Database That Scales".
  6. ^ Hall, Susan (April 17, 2017). "TiDB Brings Distributed Scalability to SQL". The New Stack.{{cite web}}: CS1 maint : url-status (링크)
  7. ^ "The best open source software for data storage and analytics".
  8. ^ Shu, Catherine (September 11, 2018). "TiDB developer PingCAP wants to expand in North America after raising $50M Series C". TechCrunch.{{cite web}}: CS1 maint : url-status (링크)
  9. ^ Tocker, Morgan (November 14, 2018). "Meet TiDB: An open source NewSQL database". Opensource.com.{{cite web}}: CS1 maint : url-status (링크)
  10. ^ "Compatibility with MySQL". PingCAP.{{cite web}}: CS1 maint : url-status (링크)
  11. ^ "TiKV Architecture". TiKV.{{cite web}}: CS1 maint : url-status (링크)
  12. ^ Evans, Kristen (August 28, 2018). "CNCF to Host TiKV in the Sandbox". Cloud Native Computing Foundation.{{cite web}}: CS1 maint : url-status (링크)
  13. ^ CNCF (May 21, 2019). "TOC Votes to Move TiKV into CNCF Incubator". Cloud Native Computing Foundation. Retrieved August 19, 2020.{{cite web}}: CS1 maint : url-status (링크)
  14. ^ TiKV Authors (September 2, 2020). "Celebrating TiKV's CNCF Graduation". TiKV.{{cite web}}: CS1 maint : url-status (링크)
  15. ^ "The Raft Consensus Algorithm".
  16. ^ Jackson, Joab (January 22, 2019). "Database Operators Bring Stateful Workloads to Kubernetes". The New Stack.{{cite web}}: CS1 maint : url-status (링크)
  17. ^ Philips, Brandon (November 3, 2016). "Introducing Operators: Putting Operational Knowledge into Software". CoreOS.{{cite web}}: CS1 maint : url-status (링크)
  18. ^ "TiDB Operator GitHub repo". GitHub.{{cite web}}: CS1 maint : url-status (링크)
  19. ^ "Introducing the Kubernetes Operator for TiDB". InfoWorld. August 16, 2018.{{cite web}}: CS1 maint : url-status (링크)
  20. ^ "Deploy TiDB to Kubernetes on Your Laptop".{{cite web}}: CS1 maint : url-status (링크)
  21. ^ "Deploy TiDB, a distributed MySQL compatible database, to Kubernetes on Google Cloud".{{cite web}}: CS1 maint : url-status (링크)
  22. ^ "Deploy TiDB, a distributed MySQL compatible database, on Kubernetes via AWS EKS".
  23. ^ Long, Heng (April 19, 2020). "Get a TiDB Cluster Up in Only One Minute". PinCAP. Retrieved August 19, 2020.{{cite web}}: CS1 maint : url-status (링크)
  24. ^ "Ansible Playbook for TiDB".
  25. ^ "How to Spin Up an HTAP Database in 5 Minutes With TiDB + TiSpark".
  26. ^ "DM GitHub Repo". GitHub.{{cite web}}: CS1 maint : url-status (링크)
  27. ^ Shen, Taining (April 13, 2020). "How to Back Up and Restore a 10-TB Cluster at 1+ GB/s". PingCAP.{{cite web}}: CS1 maint : url-status (링크)
  28. ^ "Dumpling Overview". PingCAP.{{cite web}}: CS1 maint : url-status (링크)
  29. ^ Chan, Kenny (January 30, 2019). "Introducing TiDB Lightning". PingCAP.{{cite web}}: CS1 maint : url-status (링크)
  30. ^ "TiDB Lightning Overview". PingCAP.{{cite web}}: CS1 maint : url-status (링크)
  31. ^ "TiDB Binlog Cluster Overview". PingCAP.{{cite web}}: CS1 maint : url-status (링크)
  32. ^ Wang, Xiang (January 29, 2019). "TiDB-Binlog Architecture Evolution and Implementation Principles". PingCAP.{{cite web}}: CS1 maint : url-status (링크)