SlideShare a Scribd company logo
1 of 19
NoSQL
발표자: 이 성현
NoSQL?
Rise of NoSQL
▶ 전통적인 강자 RDBMS
▶ Oracle, MySQL, … 등의 데이터베이스
▶ ACID
▶ Atomicity
▶ Consistency
▶ Isolation
▶ Durability
▶ 이런 강점을 통해 데이터베이스의 안정성과 동시성을 동시에 충족했기 때문
에 많은 사람들에게 여전히 사랑받고 있습니다.
Rise of NoSQL
▶ RDBMS… 하지만 단점도 명확!
▶ 관계를 표현하는데 있어서 데이터 타입이 제한됨.
▶ 우리가 memory에서 사용하고 있는 data type은 사실 다양합니다.
▶ boolean, char, int, double…
▶ array, object, structure, class…
▶ method, inheritance, polymorphism
▶ Impedance Mismatch
▶ 정규화???
Rise of NoSQL
▶ World Wide Web
▶ Data… Data… Traffic…
NoSQL은 무엇인가?
▶ 사실 특별한 정의는 없음.
▶ 관계형 모델을 사용하지 않음.
▶ 클러스터에서 동작이 용이하다.
▶ 대부분 (사실상 거의 전부) 오픈 소스
▶ 웹 환경을 위해 구축되었다.
▶ schemaless
Category
▶ Key-Value Model
▶ Document Model
▶ Column-family Model
▶ Graph model
Aggregate orientation!
집합 지향
▶ RDBMS에서 사용할 수 있는 data type
▶ 그 밖에 우리가 사용하고 싶은 data type들..
▶ array, object, class..
▶ NoSQL의 기본 조작 단위에 포함됨.
▶ Replica-set (복제), Sharding의 기본 단위가 되어 집합이라는 것을 자연스
럽게 클러스터링할 수 있다.
▶ 우리가 직접 프로그램을 구현할 때도 집합을 사용하므로 개발자 입장에서
도 데이터베이스를 조작하는 게 더욱 쉬워진다.
NoSQL에 대한 고민…
▶ Schema 없이 괜찮은가?
▶ mongoDB를 쓰다보니 NoSQL이 RDBMS처럼 되어 가고 있어!
▶ ACID를 공식적으로 지원하지 않는데, 데이터 일관성을 보장할 수 있는가?
Schema 없이 괜찮은가?
▶ 개발자를 믿지 않는 것이 좋다.
▶ Schema가 없다면 production 데이터베이스가 한 순간의 실수로 local 데
이터베이스처럼 되어버릴 수 있다…
Schema가 없다는 건 장점이 아니다.
▶ 스키마를 사용하면 된다.
▶ explicit schema가 아닌 implicit schema로 사용하도록 해도 RDBMS보다
strict하지 않다.
▶ MongoDB의 경우, Schema 안에 MixedField를 설정하여 스키마가 없는
집합을 포함할 수 있다. 집합에 스키마가 없어야 할 경우만 확실하고 개발자
가 알고 있다면 이 방법을 쓸 수도 있다.
Schema 없이 괜찮은가?
▶ 스키마를 남발한 예..
▶ 밸런스가 중요
데이터 일관성…
▶ NoSQL는 데이터 일관성이 존재하지 않는다?
▶ 집합 지향의 원자성은 단일 집합에 대해서만 유효하다.
▶ 어떤 집합에 대한 update가 두 건 이상 발생한다면 최대한 연속하여 실행
▶ MongoDB의 경우, replica set에서 write-quorum을 다수로 설정하여 일
관성을 향상시켜
▶ 수 millisecond 단위로 줄일 수 있다면 일관성이 보장된다고 해도 좋을 것이
다.
Inconsistency Window를 줄이자!
일관성 완화
일관성이 없다는 건 정말 catastrophe인가.
CAP 정리
- Consistency
- Availability
- Partition tolerance
우리가 쓰는 건,
distributed data system.
-> 그렇다면 Partition tolerance는 만족해야 한다.
복제
샤딩
복제 + 샤딩
끝
감사합니다.

More Related Content

Similar to Introduction to NoSQL

Data oriented design
Data oriented designData oriented design
Data oriented design
Sangwook Kwon
 
The nosql echossytem
The nosql echossytemThe nosql echossytem
The nosql echossytem
종석 박
 
Domain driven design ch3
Domain driven design ch3Domain driven design ch3
Domain driven design ch3
HyeonSeok Choi
 

Similar to Introduction to NoSQL (20)

No sql survey report
No sql survey reportNo sql survey report
No sql survey report
 
Data oriented design
Data oriented designData oriented design
Data oriented design
 
몽고디비교육1일차
몽고디비교육1일차몽고디비교육1일차
몽고디비교육1일차
 
The nosql echossytem
The nosql echossytemThe nosql echossytem
The nosql echossytem
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
(11th korea data_tech_seminar)using_mongo_db_4.0_and_nosql_inbum_kim(skc&c)
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
 
Domain driven design ch3
Domain driven design ch3Domain driven design ch3
Domain driven design ch3
 
퍼블리셔, 프론트엔드개발을 시작하다
퍼블리셔, 프론트엔드개발을 시작하다퍼블리셔, 프론트엔드개발을 시작하다
퍼블리셔, 프론트엔드개발을 시작하다
 
NoSQL 간단한 소개
NoSQL 간단한 소개NoSQL 간단한 소개
NoSQL 간단한 소개
 
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
200819 NAVER TECH CONCERT 08_성능을 고민하는 슬기로운 개발자 생활
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
No sql 분산모델
No sql 분산모델No sql 분산모델
No sql 분산모델
 
MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)MongoDB in use(김인범, mongodb korea)
MongoDB in use(김인범, mongodb korea)
 
CSS Convention - BEM
CSS Convention - BEMCSS Convention - BEM
CSS Convention - BEM
 
CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018CUDA 프로그래밍 기초 MODUCON2018
CUDA 프로그래밍 기초 MODUCON2018
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
 
[자바카페] 람다 일괄처리 계층
[자바카페] 람다 일괄처리 계층[자바카페] 람다 일괄처리 계층
[자바카페] 람다 일괄처리 계층
 
MySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docxMySQL_SQL_Tunning_v0.1.3.docx
MySQL_SQL_Tunning_v0.1.3.docx
 
(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략(책 소개) 레거시 코드 활용 전략
(책 소개) 레거시 코드 활용 전략
 

Recently uploaded

Recently uploaded (8)

JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례JMP를 활용한 가속열화 분석 사례
JMP를 활용한 가속열화 분석 사례
 
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
실험 설계의 평가 방법: Custom Design을 중심으로 반응인자 최적화 및 Criteria 해석
 
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
(독서광) 인간이 초대한 대형 참사 - 대형 참사가 일어날 때까지 사람들은 무엇을 하고 있었는가?
 
데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법데이터 분석 문제 해결을 위한 나의 JMP 활용법
데이터 분석 문제 해결을 위한 나의 JMP 활용법
 
공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화공학 관점에서 바라본 JMP 머신러닝 최적화
공학 관점에서 바라본 JMP 머신러닝 최적화
 
JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!JMP가 걸어온 여정, 새로운 도약 JMP 18!
JMP가 걸어온 여정, 새로운 도약 JMP 18!
 
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement MethodologyJMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
JMP를 활용한 전자/반도체 산업 Yield Enhancement Methodology
 
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
JMP 기능의 확장 및 내재화의 핵심 JMP-Python 소개
 

Introduction to NoSQL

  • 3. Rise of NoSQL ▶ 전통적인 강자 RDBMS ▶ Oracle, MySQL, … 등의 데이터베이스 ▶ ACID ▶ Atomicity ▶ Consistency ▶ Isolation ▶ Durability ▶ 이런 강점을 통해 데이터베이스의 안정성과 동시성을 동시에 충족했기 때문 에 많은 사람들에게 여전히 사랑받고 있습니다.
  • 4. Rise of NoSQL ▶ RDBMS… 하지만 단점도 명확! ▶ 관계를 표현하는데 있어서 데이터 타입이 제한됨. ▶ 우리가 memory에서 사용하고 있는 data type은 사실 다양합니다. ▶ boolean, char, int, double… ▶ array, object, structure, class… ▶ method, inheritance, polymorphism ▶ Impedance Mismatch ▶ 정규화???
  • 5. Rise of NoSQL ▶ World Wide Web ▶ Data… Data… Traffic…
  • 6.
  • 7. NoSQL은 무엇인가? ▶ 사실 특별한 정의는 없음. ▶ 관계형 모델을 사용하지 않음. ▶ 클러스터에서 동작이 용이하다. ▶ 대부분 (사실상 거의 전부) 오픈 소스 ▶ 웹 환경을 위해 구축되었다. ▶ schemaless
  • 8. Category ▶ Key-Value Model ▶ Document Model ▶ Column-family Model ▶ Graph model Aggregate orientation!
  • 9. 집합 지향 ▶ RDBMS에서 사용할 수 있는 data type ▶ 그 밖에 우리가 사용하고 싶은 data type들.. ▶ array, object, class.. ▶ NoSQL의 기본 조작 단위에 포함됨. ▶ Replica-set (복제), Sharding의 기본 단위가 되어 집합이라는 것을 자연스 럽게 클러스터링할 수 있다. ▶ 우리가 직접 프로그램을 구현할 때도 집합을 사용하므로 개발자 입장에서 도 데이터베이스를 조작하는 게 더욱 쉬워진다.
  • 10. NoSQL에 대한 고민… ▶ Schema 없이 괜찮은가? ▶ mongoDB를 쓰다보니 NoSQL이 RDBMS처럼 되어 가고 있어! ▶ ACID를 공식적으로 지원하지 않는데, 데이터 일관성을 보장할 수 있는가?
  • 11. Schema 없이 괜찮은가? ▶ 개발자를 믿지 않는 것이 좋다. ▶ Schema가 없다면 production 데이터베이스가 한 순간의 실수로 local 데 이터베이스처럼 되어버릴 수 있다… Schema가 없다는 건 장점이 아니다. ▶ 스키마를 사용하면 된다. ▶ explicit schema가 아닌 implicit schema로 사용하도록 해도 RDBMS보다 strict하지 않다. ▶ MongoDB의 경우, Schema 안에 MixedField를 설정하여 스키마가 없는 집합을 포함할 수 있다. 집합에 스키마가 없어야 할 경우만 확실하고 개발자 가 알고 있다면 이 방법을 쓸 수도 있다.
  • 12. Schema 없이 괜찮은가? ▶ 스키마를 남발한 예.. ▶ 밸런스가 중요
  • 13. 데이터 일관성… ▶ NoSQL는 데이터 일관성이 존재하지 않는다? ▶ 집합 지향의 원자성은 단일 집합에 대해서만 유효하다. ▶ 어떤 집합에 대한 update가 두 건 이상 발생한다면 최대한 연속하여 실행 ▶ MongoDB의 경우, replica set에서 write-quorum을 다수로 설정하여 일 관성을 향상시켜 ▶ 수 millisecond 단위로 줄일 수 있다면 일관성이 보장된다고 해도 좋을 것이 다. Inconsistency Window를 줄이자!
  • 14. 일관성 완화 일관성이 없다는 건 정말 catastrophe인가.
  • 15. CAP 정리 - Consistency - Availability - Partition tolerance 우리가 쓰는 건, distributed data system. -> 그렇다면 Partition tolerance는 만족해야 한다.