3. NoSQL의 개념
3
• No SQL…?
• Not Only SQL …!? (가장 많이 통용되는 단어)
• Non-relational database SQL ……?!!
• Not Yet SQL?????
4. NoSQL의 개념
4
• Not Only SQL
= SQL만을 사용하지 않는 DBMS를 지칭
= “관계형 DBMS를 사용안한다”의 의미보다는
그저 “다른 종류의 데이터베이스를 사용한다”는 의미
= 데이터를 저장하는 방법은 표준 SQL외에
다른 방법이 있다
5. NoSQL의 개념
• NoSQL은 Carlo Strozzi가 1998년에 발표한 논문에서
처음으로 언급됨
• 해당 논문에서 표준 SQL 인터페이스를 채용하지 않은
자신의 경량 오픈 소스 관계형 데이터베이스를 NoSQL
이라고 명명함
• 이후로 기존 관계형 Database와는 다른 것들을
모두 NoSQL로 간주하여 부르기 시작함
• NoSQL에 대한 약어의 뜻이 명확하지 않은 것은 이러한
트렌드적인 움직임에 의해 NoSQL이란 용어를
사용해왔기 때문
5
7. BigData 시대의 NoSQL
7
• BigData 시대의 도래와 더불어 이를 저장하는 기술에 대한 수요 증가
• 대용량의 data 저장은 기존의 DBMS 기준과는 다른 조건을 필요로 함
Hadoop의 등장 Hadoop
Eco System의 발전
NoSQL
수요 증가
NoSQL
적용 사례 급증
확장성 분산처리 성능
라이선스
문제
데이터모델
8. BigData 시대의 NoSQL
8
• 데이터 발생량이 기하급수적으로 늘어나는 시대
• 너무나 많은, 그리고 너무나 다양한 종류의 데이터가 발생
• 예산은 한정되어 있고, 성능에 대한 요구 기준은 갈수록 높아짐
• 데이터를 빠르게 처리하고 가급적 방대한 데이터를 저장 및
처리할 수 있어야 함
• 위와 같은 요구조건을 만족하기 위해 기존의 RDBMS를 대신할
대안 기술이 필요해짐
13. NoSQL의 개념
• NoSQL Type - 2
13
KeyValue
⚫ 특정 값을 조회용 고유 키와 매핑해 정해진 스키마 없이
저장되는 방식
⚫ 특정 키를 대상으로 random access 할 때 유용함
Dynamo, Memcached,
Riak, Redis
Column
(BigTable)
⚫ 순차적 KeyValue 모델에 데이터 모델링이 가능하도록
변경된 모델
Hbase, Cassandra,
Hypertable
Document ⚫ 오브젝트형 데이터베이스가 NoSQL형태로 파생된 모델
MongoDB, CouchDB,
ElasticSearch
Graph
⚫ 데이터를 그래프에 저장하고 데이터의 구조가 가장
일반적이고, 높은 접근 방식으로 모든 데이터를 표현가능
Neo4j, HyperGraphDB
14. NoSQL의 개념
• NoSQL의 장점
– NoSQL은 Scale-out이 가능하며, 이는 Cloud 환경에 매우 적합함
• NoSQL은 Scale-out이 유리하도록 설계되었으며, 이는 빠르고
유연한 확장이 필요한 Cloud 환경에서 유리한 요소
– 비용의 감소(비용이 없는 것은 아님)
• NoSQL은 대부분 open source이며, 수많은 license 비용을
지불해야 하는 기존 제품과 큰 차별화를 가질 수 있는 부분
– Big data 처리에 효과적
• 기존 RDBMS보다 read/write 성능이 좋은 편이며, 이는 단순한
데이터 모델에 근거함
• 유연한 확장성과 데이터모델로 인해 대용량의 데이터를 빠르게
분산 처리 하기에 매우 적합
14
15. NoSQL의 개념
• NoSQL의 단점
– NoSQL에서는 다양하고 복잡한 쿼리는 불가능
• 유연한 데이터 모델의 장점을 취하는 대신, 정교한 쿼리는
상대적으로 어려움
– 데이터 무결성과 정합성이 항상 보장되지는 않음
• NoSQL은 단순한 데이터 모델과 서버 확장성을 위해서
데이터의 중복을 감수하지만, 이는 “모든 순간”의 데이터
정합성을 보장하지는 못한다.
– 데이터의 속성을 모르는 상태에서 사용한다면 훨씬 낮은 성능과
안정성을 보임
• RDBMS 수준의 범용성을 기대하지 말 것
15
17. MongoDB review
• MongoDB Intro. - 1
– PaaS 제품 구성요소 중 하나로 처음 개발됨
(2007년 10월, 당시 회사명 10gen)
– 2009년 오픈소스 개발 모델로 전향
(상용 지원 및 기타 서비스는 10gen이 수행)
– MongoDB의 발전에 힘입어 사명을 제품명과 같은 MongoDB Inc.
로 변경(2013년)
– 국내외 수 많은 서비스에서 백엔드 소프트웨어로 채택하고 있음
17
19. MongoDB review
• Document?
19
• 스키마가 정적이지 않고 유동적(schema-less).
• 도큐먼트(레코드)마다 다른 스키마를 가질 수 있음
• JSON 형태로 데이터를 집어 넣으므로, 트리형 구조를 저장하거나 검색시에 유리
20. MongoDB review
• MongoDB feature summary - 1
– 행(row) 대신 문서(document) 개념을 사용
– 고정된 형태의 스키마가 없다
(미리 테이블을 만들거나, 필드 정의 등의 행위 필요 없음)
– JSON type의 데이터 저장 구조를 제공한다.
– MongoDB는 C++로 작성되었고, 다양한 언어의 API 제공
(C, C#, C++, Haskell, Java, JavaScript, Perl, PHP, Python, Ruby, Scala)
– AWS, Azure 등 Cloud Top Tier의 제품에서 기본/선택 사양으로
서비스 됨 (MongoDB on AWS, MongoDB on Azure)
20
21. MongoDB review
• MongoDB feature summary - 2
21
SQL MongoDB
Database Database
Table Collection
Row Document
Column Field
Join Embedded Document & Linking,
$lookup
Index Index
view view
23. MongoDB review
• MongoDB Architecture - 2
– mongod
• 데이터를 저장, 관리하는 서버(복제 정책 적용 가능)
– mongos
• Client의 요청을 받아 환경 설정 서버의 partitioning 정보를
참고해 적절한 데이터 서버로 요청을 포워딩 함
– config server
• Sharding에 대한 환경 설정 서버
• Partitioning에 대한 정보를 관리
23
25. 실제 활용 사례
• MongoDB Use Case
25
Big Data Product & Asset
Catalogs
Security &
Fraud
Internet of
Things
Database-as-a-
Service
Mobile
Apps
Customer Data
Management
Single View Social &
Collaboration
Content
Management
Intelligence Agencies
Top Investment and R
etail Banks
Top Global Shipping
Company
Top Industrial Equipment M
anufacturer
Top Media Company
Top Investment and R
etail Banks
27. MongoDB history
• MongoDB history - 1
27
– 2.2.x
• aggregation framework 등장, TTL Collection 등장,
Global Locking이 DB Level Locking으로 대체됨
– 2.4.x
• MongoDB 엔터프라이즈 버전이 처음 선보임
Text Search 기능 추가됨
– 2.6.x
• $text 쿼리 연산자 지원, aggregation, sharding 성능 향상
• Partitioning에 대한 정보를 관리
29. MongoDB 4.0 inside
• Multi-Document ACID Transaction
– ACID Transaction 지원은 기존 RDBMS에 비해 항상 약점으로
지적 받은 부분
– ACID Transaction
• Snapshot isolation, all or nothing execution
– 적용 예정 범위
• 4.0 : replica set
• 4.2 : extended to sharded cluster
29
30. MongoDB 4.0 inside
• MongoDB Monitoring Cloud - 1
– 무료로 제공되는 모니터링 서비스
– 이전 버전에서 모니터링은 내장함수처럼 제공되는 명령어들을
활용해서 최소한의 수치 확인만 가능한 수준(ex. serverStatus)
– 기존 엔터프라이즈 버전에서는 다양한 형태의 모니터링이 제공되
었으며, 4.0에서는 public 버전도 graphical한 모니터링 툴을 활용
할 수 있게 됨
30
31. MongoDB 4.0 inside
• MongoDB Monitoring Cloud - 2
– db.enableFreeMonitoring()
31
MongoDB shell version v4.0.0
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 4.0.0
--- Enable MongoDB's free cloud-based monitoring service to collect and display
metrics about your deployment (disk utilization, CPU, operation statistics,
etc).
The monitoring data will be available on a MongoDB website with a unique
URL created for you. Anyone you share the URL with will also be able to
view this page. MongoDB may use this information to make product
improvements and to suggest MongoDB products and deployment options to you.
To enable free monitoring, run the following command:
db.enableFreeMonitoring()
{
"state" : "enabled",
"message" : "To see your monitoring data, navigate to the unique URL below.….… running db.disableFreeMonitoring().",
"url" : "https://cloud.mongodb.com/freemonitoring/cluster/22E5ZH35UZ77JY3UHS3VYYTI7BKBIHWF",
"userReminder" : "",
"ok" : 1
}
34. MongoDB 4.0 inside
• MongoDB Ent.
– MongoDB Atlas 서비스
34
Atlas
unlocks agility
and reduces
cost
Self-service and elas
tic
Global and highly av
ailable
Secure by default
Comprehensive mon
itoring
Managed backup Cloud agnostic
35. MongoDB의 진화
• 진화하는 MongoDB
– 안정성이 걱정되던 초기 시절(1.x)
– 기본적인 안정성과 최소한의 기능이 제공되던 시절(2.x)
– 비로소 NoSQL 분야에서 두각을 나타내기 시작함(3.x)
– Beyond NoSQL, become data platform(4.x)
– Release update가 진행될수록 성능과 안정성이 확보되고 있으며,
운영 편의성을 위한 다양한 tool이 추가되고 있음
35
36. MongoDB 4.0 how to
• 진화하는 MongoDB 활용법은? - 1
– RDBMS에 근접한 기능과 안정성을 보여줌
(기존의 약점을 상쇄함)
– 다양한 분야에서 활용이 가능해짐
• 이미 해외에서는 multi domain 활용이 가속화 됨
– 기존의 사용이 social, gaming, logging 등이었다면
이제는 main stream으로 진입하는 시기가 다가옴
36
37. MongoDB 4.0 how to
• 진화하는 MongoDB 활용법은? - 2
– 비효율적인 비용 구조를 가진 서비스라면 MongoDB로의
전환을 노려보자
– 데이터 분석을 위한 대규모의 데이터 적재, 처리, 유연한 확장이
필요하다면 MongoDB를 활용해보자
– 신규 시스템 위주로 도입하여 know-how와 경험을 쌓고
어느 정도의 학습 기간이 지난 후에 중요도가 더 높은 서비스도
도입을 시도해보자
37
38. MongoDB 4.0 how to
• 진화하는 MongoDB 활용법은? - 3
– 데이터가 넘쳐 흐르는 곳일수록 MongoDB는 유용함
– Log data, social data, IoT data, 공정에서 발생하는 data …
– 기본적인 사용, 검증, 운영은 public 버전으로 충분함
– 하지만 대고객 서비스를 위해 보안, 모니터링, 기술 지원,
visualization을 고려한다면 Enterprise 버전을 추천
(물론 자체적으로 해결할 수 있다면 public 사용)
38
39. MongoDB 4.0 how to
• Soft Landing을 위한 제언
– 1단계 : prototyping을 위한 용도로 첫 사용을 해보자
39
40. MongoDB 4.0 how to
• Soft Landing을 위한 제언
– 2단계 : 개인 프로젝트로 경험치를 획득해보자
40
41. MongoDB 4.0 how to
• Soft Landing을 위한 제언
– 3단계 : pilot project에 활용하여 내부적인 선입견을 제거하자
41
42. MongoDB 4.0 how to
• Soft Landing을 위한 제언
– 4단계 : 내부 시스템(인사관리, 인트라넷 서비스 등)에 적용하여,
신뢰할만한 레퍼런스를 확보하자
42
43. MongoDB 4.0 how to
• Soft Landing을 위한 제언
– 5단계 : 대고객 서비스에 도입하여 운영 know-how를 확보하자
43