SlideShare a Scribd company logo
NoSQL & Data Modelling
Cassandra와 RMS history
20160225
CDNetworks/Backend Team
박재홍
index
1. NoSQL?
2. NoSQL의 종류
3. NoSQL 분류
4. 있다! 없다!
5. NoSQL과 RDMS의 데이터 모델링의 차이
6. NoSQL의 모델링
7. Cassandra의 구조
8. RMS history data
9. Cassandra에서의 RMS history Data Modeling
10.적용 결과
11.정리
index
1. NoSQL?
2. NoSQL의 종류
3. NoSQL 분류
4. 있다! 없다!
5. NoSQL과 RDMS의 데이터 모델링의 차이
6. NoSQL의 모델링
7. Cassandra의 구조
8. RMS history data
9. Cassandra에서의 RMS history Data Modeling
10.적용 결과
11.정리
NoSQL!
NoSQL Data Modeling
RMS Data Modeling
1. NoSQL?
뭐가 생각 나세요?
1. NoSQL?
뭐가 생각 나세요?
Key Value?
1. NoSQL?
뭐가 생각 나세요?
Key Value?
Redis?
1. NoSQL?
뭐가 생각 나세요?
Key Value?
Redis?
NoCar!
여러 기준이 있겠지만 NoSQL을 분류해보겠습니다.
2. NoSQL의 종류
일반화 해서 크게 세 분유로 나눠 볼께요.
3. NoSQL 분류
1. Key/Value Store
a. Redis, Tokyo Cabinet
3. NoSQL 분류
1. Key/Value Store
a. Redis, Tokyo Cabinet
2. Ordered Key/Value Store
a. Cassandra, influxDB, HBase
3. NoSQL 분류
1. Key/Value Store
a. Redis, Tokyo Cabinet
2. Ordered Key/Value Store
a. Cassandra, influxDB, HBase
3. Document Key/Value Store
a. CouchDB, MongoDB
피부에 와 닿도록 구체적으로 살펴보면...
4. 있다! 없다!
● 있다.
● 없다.
4. 있다! 없다!
● 있다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
● 없다.
4. 있다! 없다!
● 있다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
● 없다.
Ÿ
4. 있다! 없다!
● 있다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
● 없다.
Ÿ Sorting (SQL의 Order By)
4. 있다! 없다!
● 있다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
● 없다.
Ÿ Sorting (SQL의 Order By)
Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join)
4. 있다! 없다!
● 있다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
● 없다.
Ÿ Sorting (SQL의 Order By)
Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join)
Ÿ Grouping (SQL문의 group by)
4. 있다! 없다!
● 있다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
● 없다.
Ÿ Sorting (SQL의 Order By)
Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join)
Ÿ Grouping (SQL문의 group by)
Ÿ Range Query (where key>”start” and key<”end” 와 같이 일정 범위내의 내용을 쿼리해오는 기능)
Ÿ
4. 있다! 없다!
● 있다.
Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen)
Get : Select * from TABLE where KEY=”key”
● 없다.
Ÿ Sorting (SQL의 Order By)
Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join)
Ÿ Grouping (SQL문의 group by)
Ÿ Range Query (where key>”start” and key<”end” 와 같이 일정 범위내의 내용을 쿼리해오는 기능)
Ÿ Index (RDBMS에 Index를 지정하여 select query 성능을 높이는 기능)
이러한 차이로 인해 모델링 방법이 달라져야만 합니다.
5. NoSQL과 RDBMS의 데이타 모델링 차이
1. 개체 모델 지향에서 쿼리 결과 지향 모델링
2. 정규화(Normalization)에서 비정규화(Denormalization)
NoSQL 모델링의 일반적인 프로세스를 살펴 봅시다.
6. NoSQL의 모델링
1. 도메인 모델 파악
2. 쿼리 결과 디자인 (데이타 출력형태 디자인)
3. 패턴을 이용한 데이타 모델링
4. 최적화를 위한 필요한 기능들을 리스팅
5. 후보 NoSQL을 선정 및 테스트
6. 데이타 모델을 선정된 NoSQL에 최적화 및 하드웨어 디자인
7. Cassandra의 구조
pass
8. RMS history data
pass
9. Cassandra에서의 RMS history data modeling
1. 도메인 모델 파악
a. VIP에 대해 측정항목에 대한 값을 시간별로 조회 해야 한다.
2. 쿼리 결과 디자인 (데이타 출력형태 디자인)
a. select * from rms_history where vip_id=100 and created_at between and probe_id=10;
3. 패턴을 이용한 데이타 모델링
a. Denormalization, Aggregation, Application Side Join
4. 최적화를 위한 필요한 기능들을 리스팅
a. Time Sequencial Data, Denormalize, Paging, Unbounded Data, Secondary Index, Delete Data
5. 후보 NoSQL을 선정 및 테스트
6. 데이타 모델을 선정된 NoSQL에 최적화 및 하드웨어 디자인
적용 결과를 보시죠.
10. 적용 결과
정리 해볼께요.
11. 정리
1. NoSQL 단어가 지칭하는 범위가 매우 넓다.
11. 정리
1. NoSQL 단어가 지칭하는 범위가 매우 넓다.
2. NoSQL의 modeling은 RDB와 반대로 결과에 모델을 맞춘다.
11. 정리
1. NoSQL 단어가 지칭하는 범위가 매우 넓다.
2. NoSQL의 modeling은 RDB와 반대로 결과에 모델을 맞춘다.
3. NoSQL은 만능이 아니다.
감사합니다.

More Related Content

Similar to No sql & data modelling

[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
PgDay.Seoul
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용
YOUNGGYU CHUN
 
Maria db
Maria dbMaria db
Maria db
ymtech
 
DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017
Daesung Park
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Javajigi Jaesung
 
MariaDB
MariaDBMariaDB
MariaDB
ymtech
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6
HyeonSeok Choi
 
Amazon DynamoDB
Amazon DynamoDBAmazon DynamoDB
Amazon DynamoDB
Wonjun Hwang
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
Taesin Um
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
PgDay.Seoul
 
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxMySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptx
NeoClova
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
MongoDB
 
보다 빠른 SQL튜닝과 분석을 위한 새로운 툴
보다 빠른 SQL튜닝과 분석을 위한 새로운 툴보다 빠른 SQL튜닝과 분석을 위한 새로운 툴
보다 빠른 SQL튜닝과 분석을 위한 새로운 툴
Devgear
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
beom kyun choi
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
Donghan Kim
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
Donghan Kim
 
No sql survey report
No sql survey reportNo sql survey report
No sql survey report
Gichan Lee
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링
Hoyong Lee
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
HoChul Shin
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosqlSuwon Chae
 

Similar to No sql & data modelling (20)

[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
[pgday.Seoul 2022] 서비스개편시 PostgreSQL 도입기 - 진소린 & 김태정
 
No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용No sql 이해 및 활용 공개용
No sql 이해 및 활용 공개용
 
Maria db
Maria dbMaria db
Maria db
 
DataWorks Summit 2017
DataWorks Summit 2017DataWorks Summit 2017
DataWorks Summit 2017
 
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
Scala, Spring-Boot, JPA의 불편하면서도 즐거운 동거
 
MariaDB
MariaDBMariaDB
MariaDB
 
실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6실무로 배우는 시스템 성능 최적화 Ch6
실무로 배우는 시스템 성능 최적화 Ch6
 
Amazon DynamoDB
Amazon DynamoDBAmazon DynamoDB
Amazon DynamoDB
 
Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning[Pgday.Seoul 2020] SQL Tuning
[Pgday.Seoul 2020] SQL Tuning
 
MySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptxMySQL_MariaDB로의_전환_기술요소-202212.pptx
MySQL_MariaDB로의_전환_기술요소-202212.pptx
 
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
Naver속도의, 속도에 의한, 속도를 위한 몽고DB (네이버 컨텐츠검색과 몽고DB) [Naver]
 
보다 빠른 SQL튜닝과 분석을 위한 새로운 툴
보다 빠른 SQL튜닝과 분석을 위한 새로운 툴보다 빠른 SQL튜닝과 분석을 위한 새로운 툴
보다 빠른 SQL튜닝과 분석을 위한 새로운 툴
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
 
No sql survey report
No sql survey reportNo sql survey report
No sql survey report
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
 

No sql & data modelling

  • 1. NoSQL & Data Modelling Cassandra와 RMS history 20160225 CDNetworks/Backend Team 박재홍
  • 2. index 1. NoSQL? 2. NoSQL의 종류 3. NoSQL 분류 4. 있다! 없다! 5. NoSQL과 RDMS의 데이터 모델링의 차이 6. NoSQL의 모델링 7. Cassandra의 구조 8. RMS history data 9. Cassandra에서의 RMS history Data Modeling 10.적용 결과 11.정리
  • 3. index 1. NoSQL? 2. NoSQL의 종류 3. NoSQL 분류 4. 있다! 없다! 5. NoSQL과 RDMS의 데이터 모델링의 차이 6. NoSQL의 모델링 7. Cassandra의 구조 8. RMS history data 9. Cassandra에서의 RMS history Data Modeling 10.적용 결과 11.정리 NoSQL! NoSQL Data Modeling RMS Data Modeling
  • 5. 1. NoSQL? 뭐가 생각 나세요? Key Value?
  • 6. 1. NoSQL? 뭐가 생각 나세요? Key Value? Redis?
  • 7. 1. NoSQL? 뭐가 생각 나세요? Key Value? Redis? NoCar!
  • 8. 여러 기준이 있겠지만 NoSQL을 분류해보겠습니다.
  • 10. 일반화 해서 크게 세 분유로 나눠 볼께요.
  • 11. 3. NoSQL 분류 1. Key/Value Store a. Redis, Tokyo Cabinet
  • 12. 3. NoSQL 분류 1. Key/Value Store a. Redis, Tokyo Cabinet 2. Ordered Key/Value Store a. Cassandra, influxDB, HBase
  • 13. 3. NoSQL 분류 1. Key/Value Store a. Redis, Tokyo Cabinet 2. Ordered Key/Value Store a. Cassandra, influxDB, HBase 3. Document Key/Value Store a. CouchDB, MongoDB
  • 14. 피부에 와 닿도록 구체적으로 살펴보면...
  • 15. 4. 있다! 없다! ● 있다. ● 없다.
  • 16. 4. 있다! 없다! ● 있다. Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen) ● 없다.
  • 17. 4. 있다! 없다! ● 있다. Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen) Get : Select * from TABLE where KEY=”key” ● 없다. Ÿ
  • 18. 4. 있다! 없다! ● 있다. Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen) Get : Select * from TABLE where KEY=”key” ● 없다. Ÿ Sorting (SQL의 Order By)
  • 19. 4. 있다! 없다! ● 있다. Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen) Get : Select * from TABLE where KEY=”key” ● 없다. Ÿ Sorting (SQL의 Order By) Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join)
  • 20. 4. 있다! 없다! ● 있다. Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen) Get : Select * from TABLE where KEY=”key” ● 없다. Ÿ Sorting (SQL의 Order By) Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join) Ÿ Grouping (SQL문의 group by)
  • 21. 4. 있다! 없다! ● 있다. Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen) Get : Select * from TABLE where KEY=”key” ● 없다. Ÿ Sorting (SQL의 Order By) Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join) Ÿ Grouping (SQL문의 group by) Ÿ Range Query (where key>”start” and key<”end” 와 같이 일정 범위내의 내용을 쿼리해오는 기능) Ÿ
  • 22. 4. 있다! 없다! ● 있다. Put : Insert into TABLE VALUES(KEY,value1,value2,…,valuen) Get : Select * from TABLE where KEY=”key” ● 없다. Ÿ Sorting (SQL의 Order By) Ÿ Join (RDBMS에서 두개의 Table을 Foreign Key를 이용하여 join) Ÿ Grouping (SQL문의 group by) Ÿ Range Query (where key>”start” and key<”end” 와 같이 일정 범위내의 내용을 쿼리해오는 기능) Ÿ Index (RDBMS에 Index를 지정하여 select query 성능을 높이는 기능)
  • 23. 이러한 차이로 인해 모델링 방법이 달라져야만 합니다.
  • 24. 5. NoSQL과 RDBMS의 데이타 모델링 차이 1. 개체 모델 지향에서 쿼리 결과 지향 모델링 2. 정규화(Normalization)에서 비정규화(Denormalization)
  • 25. NoSQL 모델링의 일반적인 프로세스를 살펴 봅시다.
  • 26. 6. NoSQL의 모델링 1. 도메인 모델 파악 2. 쿼리 결과 디자인 (데이타 출력형태 디자인) 3. 패턴을 이용한 데이타 모델링 4. 최적화를 위한 필요한 기능들을 리스팅 5. 후보 NoSQL을 선정 및 테스트 6. 데이타 모델을 선정된 NoSQL에 최적화 및 하드웨어 디자인
  • 28. 8. RMS history data pass
  • 29. 9. Cassandra에서의 RMS history data modeling 1. 도메인 모델 파악 a. VIP에 대해 측정항목에 대한 값을 시간별로 조회 해야 한다. 2. 쿼리 결과 디자인 (데이타 출력형태 디자인) a. select * from rms_history where vip_id=100 and created_at between and probe_id=10; 3. 패턴을 이용한 데이타 모델링 a. Denormalization, Aggregation, Application Side Join 4. 최적화를 위한 필요한 기능들을 리스팅 a. Time Sequencial Data, Denormalize, Paging, Unbounded Data, Secondary Index, Delete Data 5. 후보 NoSQL을 선정 및 테스트 6. 데이타 모델을 선정된 NoSQL에 최적화 및 하드웨어 디자인
  • 33. 11. 정리 1. NoSQL 단어가 지칭하는 범위가 매우 넓다.
  • 34. 11. 정리 1. NoSQL 단어가 지칭하는 범위가 매우 넓다. 2. NoSQL의 modeling은 RDB와 반대로 결과에 모델을 맞춘다.
  • 35. 11. 정리 1. NoSQL 단어가 지칭하는 범위가 매우 넓다. 2. NoSQL의 modeling은 RDB와 반대로 결과에 모델을 맞춘다. 3. NoSQL은 만능이 아니다.