TiDB
TiDB| 개발자 | 핑캡 주식회사 |
|---|---|
| 초기 릴리즈 | 2017년 10월 15일; 전[1] |
| 안정적 해제 | 5.0.1[2] / 2021년 4월 23일; 전 |
| 리포지토리 | |
| 기록 위치 | Go(TiDB), Rust(TiKV) |
| 다음에서 사용 가능 | 영어, 중국어 |
| 유형 | NewSQL |
| 면허증 | 아파치 2.0 |
| 웹사이트 | pingcap |
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 릴리스 정보를 참조하십시오.
- 2021년 4월 7일, TiDB 5.0 GA가 발매되었다.
- 2020년 5월 28일, TiDB 4.0 GA가 발매되었다.주요 특징은 다음과 같다.TiFlash, TiDB Dashboard(실험), TiUP, 비관적 트랜잭션, 계단식 배치 규칙(실험), 탄력적 스케줄링(실험), 대형 트랜잭션, 새로운 SQL 기능, 대/소문자 구분 및 악센트 구분 불감증 utf8mb4_general_ci, utf8_ci의 콜레이션, 암호화된 통신 개선, 투명 데이터 암호화(TDE), 백업 & 복원, 코프로세서 캐시(실험), 팔로워 읽기 및 TiCDC(실험)
- 2019년 6월 28일, TiDB 3.0 GA가 발매되었다.
- 2018년 4월 27일 TiDB 2.0 GA가 출시되었다.
- 2017년 10월 16일 TiDB 1.0 GA가 출시되었다.
주요 특징
수평 확장성
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는 기존 MySQL 및 MariaDB 사용자를 위한 데이터 복제 및 마이그레이션을 지원하기 위해 일련의 오픈 소스 도구를 주변에 구축했다.
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.0 GA release notes".
- ^ "Release 5.0.1". April 23, 2021. Retrieved May 22, 2021.
- ^ Xu, Kevin (October 17, 2018). "How TiDB combines OLTP and OLAP in a distributed database". InfoWorld.
{{cite web}}: CS1 maint : url-status (링크) - ^ "Spanner: Google's Globally-Distributed Database".
- ^ "F1: A Distributed SQL Database That Scales".
- ^ Hall, Susan (April 17, 2017). "TiDB Brings Distributed Scalability to SQL". The New Stack.
{{cite web}}: CS1 maint : url-status (링크) - ^ "The best open source software for data storage and analytics".
- ^ 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 (링크) - ^ Tocker, Morgan (November 14, 2018). "Meet TiDB: An open source NewSQL database". Opensource.com.
{{cite web}}: CS1 maint : url-status (링크) - ^ "Compatibility with MySQL". PingCAP.
{{cite web}}: CS1 maint : url-status (링크) - ^ "TiKV Architecture". TiKV.
{{cite web}}: CS1 maint : url-status (링크) - ^ Evans, Kristen (August 28, 2018). "CNCF to Host TiKV in the Sandbox". Cloud Native Computing Foundation.
{{cite web}}: CS1 maint : url-status (링크) - ^ 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 (링크) - ^ TiKV Authors (September 2, 2020). "Celebrating TiKV's CNCF Graduation". TiKV.
{{cite web}}: CS1 maint : url-status (링크) - ^ "The Raft Consensus Algorithm".
- ^ Jackson, Joab (January 22, 2019). "Database Operators Bring Stateful Workloads to Kubernetes". The New Stack.
{{cite web}}: CS1 maint : url-status (링크) - ^ Philips, Brandon (November 3, 2016). "Introducing Operators: Putting Operational Knowledge into Software". CoreOS.
{{cite web}}: CS1 maint : url-status (링크) - ^ "TiDB Operator GitHub repo". GitHub.
{{cite web}}: CS1 maint : url-status (링크) - ^ "Introducing the Kubernetes Operator for TiDB". InfoWorld. August 16, 2018.
{{cite web}}: CS1 maint : url-status (링크) - ^ "Deploy TiDB to Kubernetes on Your Laptop".
{{cite web}}: CS1 maint : url-status (링크) - ^ "Deploy TiDB, a distributed MySQL compatible database, to Kubernetes on Google Cloud".
{{cite web}}: CS1 maint : url-status (링크) - ^ "Deploy TiDB, a distributed MySQL compatible database, on Kubernetes via AWS EKS".
- ^ 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 (링크) - ^ "Ansible Playbook for TiDB".
- ^ "How to Spin Up an HTAP Database in 5 Minutes With TiDB + TiSpark".
- ^ "DM GitHub Repo". GitHub.
{{cite web}}: CS1 maint : url-status (링크) - ^ 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 (링크) - ^ "Dumpling Overview". PingCAP.
{{cite web}}: CS1 maint : url-status (링크) - ^ Chan, Kenny (January 30, 2019). "Introducing TiDB Lightning". PingCAP.
{{cite web}}: CS1 maint : url-status (링크) - ^ "TiDB Lightning Overview". PingCAP.
{{cite web}}: CS1 maint : url-status (링크) - ^ "TiDB Binlog Cluster Overview". PingCAP.
{{cite web}}: CS1 maint : url-status (링크) - ^ Wang, Xiang (January 29, 2019). "TiDB-Binlog Architecture Evolution and Implementation Principles". PingCAP.
{{cite web}}: CS1 maint : url-status (링크)