대부분의 상용 MySQL 문구 호환
MySQL의 언어 구조, 캐릭터셋과 시간대, 데이터 유형, 상용 함수, 프로토콜 사전 처리, 순서 배열, 연합(join), 스토리지 과정, 인덱스, 파티션, 루틴, 제어 명령 등 자주 사용하는 DDL, DML, DCL과 데이터베이스 액세스 인터페이스를 포함합니다.
(분산형) 업무 지원
2종 제출 방식으로 이체, 이슈, 지불 등 솔루션에서 분산형 루틴을 지원합니다. 통합 노드의 루틴 성능은 낱개 노드의 70%이며, 오픈 리소스 분산형 루틴 XA보다 56% 높습니다. 현재 MySQL 5.7만 해당 기능을 적용할 수 있습니다.
(분산형) JOIN 지원
TDSQL는 멀티 물리 노드 간 JOIN(연합 쿼리), 즉 분산형 JOIN을 지원합니다. 혹 JOIN 관련 테이블에 shardkey와 대응하는 조건이 있을 경우, 테이블 일치성 원칙에 따라 해당 파트의 데이터는 자동으로 같은 물리 노드에 저장됩니다. 이때 싱글 머신의 JOIN에 해당하며 성능이 가장 뛰어납니다. 혹 통합 물리 노드 데이터를 포함하면, proxy는 기타 노드에서 데이터를 읽어온 후 캐시합니다. 네트워크 데이터 전송과 관련되므로 성능이 떨어질 수 있습니다.
JSON 지원
TDSQL는 JSON 포멧 데이터를 저장하며, JSON을 보다 효과적으로 처리하고 에러를 빠르게 검출할 수 있습니다. JSON 포멧을 이용 시에 데이터 일치성을 확보하고, 루틴, JOIN 등 기존 데이터베이스의 고성능을 원하시면, TDSQL는 최적의 선택일 것입니다. TDSQL의 JSON은 MySQL과 Mongodb를 기반으로 하는 사용법과 다소 다를 수 있으므로, 더 알아보시려면 TDSQL, MongoDB의 JSON 성능을 대조하시기 바랍니다.
3종 테이블 구축 전략
테이블 스플릿: 스플릿 호라이즌한 테이블은 일반적으로 2000만 행 이상, 50GB 이상에 달하는 스펙 및 쾌속적으로 증가하는 테이블에 적용합니다.
방송 테이블: 전체 조작은 전체 로직 샤딩에 방송합니다. 이때 샤딩별로 해당 테이블의 전체 데이터를 소유합니다. 테이블을 설정하거나, 잦게 JOIN하는 테이블에 적용됩니다. 해당 유형의 테이블은 업데이트하는 데이터가 적으며, 방송 테이블은 두개 테이블의 연합 쿼리(JOIN), 루틴을 낱개 노드에 적용하므로 성능이 업그레이드 되었습니다.
싱글 테이블: 샤딩이 필요없는 테이블은 일반적으로 데이터량이 작은 라이브러리 테이블에 적용합니다. 싱글 테이블은 샤딩하지 않았으므로 낱개 테이블은 MySQL를 완벽 호환합니다.
전역 유일한 숫자 서열
AUTO_INCREMENT와 유사합니다. 증가 서열은 사용자에게 전역에서 유일한 데이터 ID 서비스를 제공하므로 분산형 환경에서 유일키, 홈 버튼 등 전역에서 데이터의 유일성을 확보합니다.
명령 전달
주석 방식(hint)으로 SQL를 지정 목표 샤딩에 통과 합니다. 성능을 업그레이드하고, 조작하기 편리합니다.
2급 파티션
테이블 스플릿 기반으로 테이블 파티션 스플릿을 지원합니다. 스플릿 호라이즌한 테이블을 기반으로 로직 파티션을 지원하며, 이를 2급 파티션이라고 부릅니다. 2급 파티션은 데이터 분포와 액세스 밸런스를 맞추며, 쿼리 효율을 올려주고, 게임 히스토리 전적, IoT 센서 데이터를 지원하며 주기적으로 히스토리 데이터를 삭제해야 하는 솔루션에 적용합니다.