대용량데이터처리를위한 Sharding 2013.1. 이동현 DBMS 개발랩 /NHN Business Platform
SQL 기술전략세미나 2 대용량데이터를위한솔루션은 NoSQL 인가, RDBMS 인가? 모든경우에대해어떤하나의선택을하자는게아닙니다.
SQL 기술전략세미나 3 언제, 그리고왜 RDBMS 를선택해야하는가? NoSQL 과다른 RDBMS 만의특징이필요할때 - Relations between Tables - ACID Transactions - Arbitrary Queries and Joins [ 참고 ] NoSQL or RDBMS? Are we asking the right questions? http://blog.dynatrace.com/2011/10/05/nosql-or-rdbms-are-we-asking-the-right-questions/
SQL 기술전략세미나 4 Big Data 기존의전형적인데이터베이스소프트웨어도구의데이터수집, 저장, 관리, 분석역량을넘어서는데이터집합의규모로, 그정의는주관적이며앞으로도계속변화될것이다. 현재기준에서는몇십테라바이트에서수페타바이트까지가그범위라할수있겠다. 출처 : Mckinsey&Company, 2011 년 5 월 Report Big data: The next frontier for innovation, competition, and productivity
SQL 기술전략세미나 5 NoSQL (Not only SQL ) modern web-scale databases 출처 : http://nosql-database.org/ - It does not use SQL as its query language - It may not give full ACID guarantees - It has a distributed, fault-tolerant architecture : scale-out 출처 : http://en.wikipedia.org/wiki/nosql
SQL 기술전략세미나 6 NoSQL 구조 대부분 Map (Key-Value) 구조 Consistent Hashing: 노드의자유로운추가 / 제거로 Scability 보장 A~C 노드, 1~4 key Data Replication: 살아있는노드는누구인지? 복제는누가하는지? CAP Theorem: 셋중두개만만족할수있다. * Consistency: 모든 client가언제가같은상태의데이터를볼수있다. * Availability: 모든 client가언제나데이터에접근할수있다. * Partitioning: Database가물리적으로전혀다른 Network 공간 (IDC가다르거나등 ) 에위치할수있다. Network이단절되어도시스템은동작할수있어야한다. [ 참고 ] NoSQL 을여행하는히치하이커를위한안내서, 송기선 http://blog.naver.com/naverdev/120116323974
SQL 기술전략세미나 7 NoSQL 제품군 출처 : Qcon NewYork 2012
SQL 기술전략세미나 8 RDBMS 에서 scale-out 하려면? => Manual Sharding
다루고자하는내용은 SQL 기술전략세미나 9 CUBRID 에서대용량데이터처리를위해 Sharding 을어떻게적용했는가?
SQL 기술전략세미나 10 NHN 에서개발중인 국내유일의오픈소스 DBMS
SQL 기술전략세미나 11 9.1
SQL 기술전략세미나 12 적용서비스 : 메일, 주소록, 카페및블로그덧글, 사내시스템등 2013 년 1 월현재 NHN 에서서비스중인 DB 시스템에서 50% 차지
SQL 기술전략세미나 13 Shard 물리적으로다른데이터베이스에데이터를 수평분할방식으로저장한 DB 인스턴스자체 참고 : http://en.wikipedia.org/wiki/shard_(database_architecture)
SQL 기술전략세미나 14 Partitioning vs Sharding Database User User Table s_no s_name s_age 1 kim 10 2 lee 12 3 park 13 4 nam 14 Horizontal partitioning Database User User Table #0 User Table #1 s_no s_name s_age s_no s_name s_age 1 kim 10 3 park 13 2 lee 12 4 nam 14
SQL 기술전략세미나 15 Partitioning vs Sharding Database User User Table s_no s_name s_age 1 kim 10 2 lee 12 3 park 13 4 nam 14 DB Sharding User Table s_no s_name s_age 1 kim 10 2 lee 12 Database User User Table s_no s_name s_age 3 park 13 4 nam 14
응용프로그램에서 Sharding 구현
적용사례 SQL 기술전략세미나 17 사례 ) nsight : 서버모니터링시스템
nsight 실행화면 SQL 기술전략세미나 18
nsight 데이터처리 SQL 기술전략세미나 19 * Collector DB 29 대 : 데이터수집 - 38 억 row 처리 / 일 - 40.6 TB 데이터수집및처리 /6 개월 * Manager DB 6 set: 데이터집계 - Meta Catalog DB 1 set - Shard DB 5 set, 1set 당 1~1.5 TB
nsight 시스템구조 SQL 기술전략세미나 20 Agent Collector 38 억 row/ 일 Collector DB Analyzer Manager DB 1TB/shard Manager / UI
nsight DB 구조 - Collector DB SQL 기술전략세미나 21 3-copy 복제 Agents Collectors 1 2 3 4 6 5
nsight DB 구조 - Manager DB SQL 기술전략세미나 22 Total info. Manager UI Meta Catalog DB - shard 전체구성정보저장 Shard DB - 서비스그룹데이터저장 (1TB/shard) shard #1 master slave shard #2 master slave master slave CUBRID HA 860 groups/1shard shard #5 master slave
Summary of nsight SQL 기술전략세미나 23 Connection rules Application Broker CUBRID HA Manage rdb Manage rdb Manage rdb 총 4000 여서비스, 1.5 TB DB * 5 set
CUBRID Shard 기능으로 Sharding 적용
적용사례 SQL 기술전략세미나 25 사례 ) ndrive : 개인의웹저장공간제공서비스
ndrive 실행화면 SQL 기술전략세미나 26
ndrive 데이터저장 SQL 기술전략세미나 27 * 1 인당최대 30 GB 데이터제공 = 700MB 동영상파일 44 편 = 1.5MB 고화질사진 20,480 장 * 데이터파일의메타데이터 : Meta DB 에저장 * Meta DB - 25 Set, 1:1 복제 - 1 Set 당약 100GB 데이터유지 * Shard DB 1 대당 600~1400 QPS
ndrive 시스템구조 SQL 기술전략세미나 28 File list / UI User DB Meta DB User Manager File Manager
ndrive DB 구조 - Meta DB SQL 기술전략세미나 29 Application One way access Shard Broker CUBRID HA Meta DB Meta DB Meta DB
CUBRID Shard - 동작방식 SQL 기술전략세미나 30 user apps. JDBC 1) query : SELECT name FROM student WHERE student_no = /*+ shard_key */? DB shard middleware 2) analyze & select shard. key_column range (hash result) shard_id min max student_no 0 63 0 student_no 64 127 1 student_no 128 191 2 student_no 192 255 3 3) query with selected shard shard #0 shard #1 shard #2 shard #3
CUBRID Shard - DB 설정 SQL 기술전략세미나 31 * shard_key.txt 설정파일 [%shard_key] #min max shard_id 0 63 0 64 127 1 128 191 2 192 255 3 * shard.conf(shard Broker) 설정파일 [%shard1] SHARD_KEY_FILE =shard_key.txt
Summary of ndrive SQL 기술전략세미나 32 Application Connection rules Shard Broker Meta DB Meta DB Meta DB 100GB * 25 set DB CUBRID HA
정리. 두가지사례비교
Shard 적용방식비교 SQL 기술전략세미나 34 nsight ndrive Connection rules Application Application Broker Connection rules Shard Broker DB DB
Shard 적용방식비교요약 SQL 기술전략세미나 35 DB 접속시응용프로그램에서필요한 connection 정보 응용 Shard Shard 개수만큼 CUBRID Shard 설정정보위치응용프로그램 CUBRID Shard Proxy 응용개발자가해야할부분 응용프로그램 각질의에 Shard 연결 연결관리 을위한힌트제공 DBA 가해야할부분 전체 Shard 구성에대한정보를응용개발자에게제공 1 개 전체 Shard 구성에대한설정이필요
Appendix. CUBRID, Past and Next
CUBRID Past SQL 기술전략세미나 37 2008 R4.X 2008 R1.X Views Triggers AUTO_INCREMENT Partitioning Online Backup 2008 R2.X HA 기능 Hierarchical Query Write Performance Volume Reusability 2008 R3.X SQL Compatibility Write Performance Blob/Clob Index Optimization Write Performance Delete Performance SQL Compatibility Volume Size Reduced
CUBRID Next SQL 기술전략세미나 38 9.0 Beta, 9.1 Shard Index Skip Scan Function-based Index Filtered Index Multi-table UPDATE/DELETE MERGE statement Charset & Collation...
감사합니다. http://www.cubrid.com http://www.cubrid.org