SlideShare a Scribd company logo
1 of 10
9장. 문서 데이터베이스


                박기덕
문서 데이터베이스란?
•   문서 데이터베이스는 키-값 저장소의 값 부분에 문서를 저장


•   문서의 종류는 XML, JSON, BSON 등


•   값을 검사할 수 있는 키-값 저장소
오라클과 몽고DB 용어 비교


오라클           몽고DB
데이터베이스 인스턴스   몽고DB 인스턴스
스키마           데이터베이스
테이블           컬렉션
로우(=행)        문서
rowid         _id
조인            DBRef
문서 데이터베이스란?
{ “firstname” : “Martin”,               { “firstname” : “Pramod”,
       “likes” : [ “Biking”,             “citiesvisited” : [ “Chicago”, “London”,
                     “Photography” ],                                          “Pune”, “Bangalore” ],
       “lastcity” : “Boston”,            “addresses” : [
       “lastVisited” : }                                   { “state” : “AK”,
                                                            “city”: “DILLINGHAM”,
                                                            “type” : “R” },
                                                           { “state” : “MH”,
                                                            “city”: “PUNE”,
                                                            “type” : “R” }, ],
                                          “lastcity” : “Chicago” }


•    테이블의 모든 행이 같은 스키마를 따를 필요가 없다. 모든 칼럼을 정의할 필요가 없으며, 새로
     운 속성을 자유롭게 추가 가능
몽고DB의 특징 - 일관성
•   복제본 집합(replica set)을 사용해 일관성 수준을 설정
    db.runCommand({getlasterror : 1, w : “majority”})
    서버가 1대 있고 w를 majority로 설정하면, 노드가 하나이므로 즉시 Return


•   slaveOk를 설정해 슬레이브로부터의 읽기 허용 설정
    Mongo mongo = new Mongo(“localhost:27017”); mongo.slaveOk();


•   특정 쓰기는 WriteConcern을 REPLICAS_SAFE로 설정해 마스터와 일부 슬레이브
    에 쓰이도록 설정
    DBCollection shopping = database.getCollection(“shopping”);
    Shopping.setWriteConcern(REPLICAS_SAFE);
몽고DB의 특징 – 트랜잭션, 가용성
•   단일 문서 수준에서 트랜잭션은 원자적 트랜잭션
•   WriteConcern을 사용해 쓰기에 대한 안전성 수준 조정 가능




•   문서 데이터베이스는 마스터-슬레이브 설정으로 데이터를 복제해 가용성을
    높임
•   몽고DB는 복제를 수행하고 복제본 집합을 사용해 고가용성을 제공
•   우선순위에 따라 주(마스터) 노드를 선정, 사용자가 임의로 우선순위 부여 가
    능
•   모든 요청은 마스터 노드로 전달되며 슬레이브로 복제, 마스터 노드가 다운되
    면 우선순위에 따라 새로운 마스터 선정
•   그림 9.1 참조 (111 Page)
몽고DB의 특징 – 조회 기능
•     JSON으로 표현하는 질의어를 사용

    관계형 데이터베이스                                                몽고DB


    SELECT * FROM order                                       db.order.find()
    SELECT * FROM order WHERE customerId =                    db.order.find({“customerId”:”883c2c5
    „883c2c5b4e5b‟                                            b4e5b”})
    SELECT orderId, orderDate FROM order WHERE                db.order.find({customerId:”883c2c5b
    customerId = „883c2c5b4e5b‟                               4e5b”}, {orderId:1, orderDate:1})


    SELECT * FROM customerOrder, orderItem, prodect           db.orders.find({“items.product.name” :
    WHERE customerorder.orderId = orderItem.customerOrderId
    AND orderItem.productId = product.productId
                                                              /Refactoring/})
    AND product.name LIKE „%Refactoring%‟
몽고DB의 특징 – 확장성
•   더 좋은 장비로 데이터베이스를 이관하는것이 아닌 노드를 추가하거나, 데이
    터 스토리지를 변경하는 것


•   읽기 부하에 대한 확장성은 슬레이브를 추가해 읽기 요청을 슬레이브에서 처
    리하도록 설정 (그림 9.2 – 114Page)
    • rs.add(“mongod:27017”);
    • 새로운 노드가 추가되면 기존 노드와 동기화 되며, 다른 노드를 재식할 필
      요 없음, 애플리케이션 중단 시간 미발생


•   쓰기 확장성은 데이터 샤딩을 이용
    • db.runCommand( {shardcollection : “ecommerce.customer”, key : {firstname:1}} )
    • 클러스터에 노드를 추가해 쓰기 가능한 노드수를 늘려 수평 확장 가능, 리
      팩터링이 발생하는 동안 애플리케이션 중단 시간 미발생, 샤드 간 균형을
      유지하는 동안 최상의 상태로 동작하지 못함
    • 샤드 키의 역할이 매우 중요 (고객의 성으로 분할, 사용자 위치를 이용해
문서 데이터베이스의 적절한 사용처
•   이벤트 로깅
    • 모든 종류의 이벤트를 저장하는 중앙 데이터 저장소 역할 가능, 데이터 형
      태가 지속적으로 변경되도 사용 가능


•   콘첸츠 관리 시스템, 블로깅 플랫폼
    • 미리 정의한 스키마가 없고 보통 JSON을 이해 가능


•   웹 분석 또는 실시간 분석
    • 실시간 분석을 위한 데이터 저장 가능, 문서의 일부 업데이트 가능


•   전자상거래 애플리케이션
    • 비용이 많이 드는 데이터베이스 리펙터링이나 데이터 전환 없이 데이터
      모델을 발전시켜 나갈 수 있는 능력 필요
문서 데이터베이스의 부적절한 사용처
•   여러 연산에 걸친 복잡한 트랜잭션
    • 여러 문서에 걸친 트랜잭션 동작은 부적절, 다만 레이븐DB처럼 지원가능
      한 DB도 존재


•   변화하는 집합 구조에 대한 쿼리
    • 유연한 스키마란 데이터베이스가 스키마에 어떤 제한도 강제하지 않는다
      는뜻
    • 여러 테이블을 조인하는데 조인하는 테이블이 계속 변경되는 집합에서
      부적절
    • 즉, 집합 구조의 설계가 계속 변경되는 구조에서 부적절

More Related Content

What's hot

Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )
Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )
Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )www.tipfakultesi. org
 
Gebelik ve Anemi - www.jinekolojivegebelik.com
Gebelik ve Anemi - www.jinekolojivegebelik.comGebelik ve Anemi - www.jinekolojivegebelik.com
Gebelik ve Anemi - www.jinekolojivegebelik.comjinekolojivegebelik.com
 
Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)
Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)
Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)www.tipfakultesi. org
 
Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )
Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )
Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )www.tipfakultesi. org
 
çOcuklarda akut batın (fazlası için www.tipfakultesi.org )
çOcuklarda akut batın (fazlası için www.tipfakultesi.org )çOcuklarda akut batın (fazlası için www.tipfakultesi.org )
çOcuklarda akut batın (fazlası için www.tipfakultesi.org )www.tipfakultesi. org
 
Ust uriner sistem travmalari
Ust uriner sistem travmalariUst uriner sistem travmalari
Ust uriner sistem travmalariCeyhun Hasanov
 
Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)
Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)
Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)www.tipfakultesi. org
 
Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )
Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )
Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )www.tipfakultesi. org
 
Kemik ve eklem tüberkülozu (fazlası için www.tipfakultesi.org )
Kemik ve eklem tüberkülozu  (fazlası için www.tipfakultesi.org )Kemik ve eklem tüberkülozu  (fazlası için www.tipfakultesi.org )
Kemik ve eklem tüberkülozu (fazlası için www.tipfakultesi.org )www.tipfakultesi. org
 
राजभाषा नीति कार्यान्वयन हेतु जाँच बिंदू
राजभाषा नीति कार्यान्वयन हेतु  जाँच बिंदूराजभाषा नीति कार्यान्वयन हेतु  जाँच बिंदू
राजभाषा नीति कार्यान्वयन हेतु जाँच बिंदूVijay Nagarkar
 
romatizmal hastalıklar (fazlası için www.tipfakultesi.org )
romatizmal hastalıklar (fazlası için www.tipfakultesi.org )romatizmal hastalıklar (fazlası için www.tipfakultesi.org )
romatizmal hastalıklar (fazlası için www.tipfakultesi.org )www.tipfakultesi. org
 

What's hot (14)

Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )
Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )
Kronik Böbrek Yetmezliği (fazlası için www.tipfakultesi.org )
 
Gebelik ve Anemi - www.jinekolojivegebelik.com
Gebelik ve Anemi - www.jinekolojivegebelik.comGebelik ve Anemi - www.jinekolojivegebelik.com
Gebelik ve Anemi - www.jinekolojivegebelik.com
 
Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)
Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)
Ortopedi̇k aci̇ller(fazlası için www.tipfakultesi.org)
 
6 map reading
6 map reading 6 map reading
6 map reading
 
Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )
Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )
Arka hipofiz hastalıkları (fazlası için www.tipfakultesi.org )
 
çOcuklarda akut batın (fazlası için www.tipfakultesi.org )
çOcuklarda akut batın (fazlası için www.tipfakultesi.org )çOcuklarda akut batın (fazlası için www.tipfakultesi.org )
çOcuklarda akut batın (fazlası için www.tipfakultesi.org )
 
Ust uriner sistem travmalari
Ust uriner sistem travmalariUst uriner sistem travmalari
Ust uriner sistem travmalari
 
Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)
Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)
Karin ağrili hastaya yaklaşim(fazlası için www.tipfakultesi.org)
 
Nobel brand
Nobel brand Nobel brand
Nobel brand
 
Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )
Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )
Kırık çıkık acil yaklaşımı (fazlası için www.tipfakultesi.org )
 
Kemik ve eklem tüberkülozu (fazlası için www.tipfakultesi.org )
Kemik ve eklem tüberkülozu  (fazlası için www.tipfakultesi.org )Kemik ve eklem tüberkülozu  (fazlası için www.tipfakultesi.org )
Kemik ve eklem tüberkülozu (fazlası için www.tipfakultesi.org )
 
Pfs
PfsPfs
Pfs
 
राजभाषा नीति कार्यान्वयन हेतु जाँच बिंदू
राजभाषा नीति कार्यान्वयन हेतु  जाँच बिंदूराजभाषा नीति कार्यान्वयन हेतु  जाँच बिंदू
राजभाषा नीति कार्यान्वयन हेतु जाँच बिंदू
 
romatizmal hastalıklar (fazlası için www.tipfakultesi.org )
romatizmal hastalıklar (fazlası için www.tipfakultesi.org )romatizmal hastalıklar (fazlası için www.tipfakultesi.org )
romatizmal hastalıklar (fazlası için www.tipfakultesi.org )
 

Viewers also liked

사업계획서는 이제 그만, 지금은 MVP 개발이 대세!
사업계획서는 이제 그만, 지금은 MVP 개발이 대세!사업계획서는 이제 그만, 지금은 MVP 개발이 대세!
사업계획서는 이제 그만, 지금은 MVP 개발이 대세!Amazon Web Services Korea
 
[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델kidoki
 
토론주제 Iso21500vs pmbok-배병주
토론주제   Iso21500vs pmbok-배병주토론주제   Iso21500vs pmbok-배병주
토론주제 Iso21500vs pmbok-배병주Byeong Ju Bae
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Matthew (정재화)
 
NoSQL 간단한 소개
NoSQL 간단한 소개NoSQL 간단한 소개
NoSQL 간단한 소개Wonchang Song
 

Viewers also liked (6)

사업계획서는 이제 그만, 지금은 MVP 개발이 대세!
사업계획서는 이제 그만, 지금은 MVP 개발이 대세!사업계획서는 이제 그만, 지금은 MVP 개발이 대세!
사업계획서는 이제 그만, 지금은 MVP 개발이 대세!
 
[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델
 
토론주제 Iso21500vs pmbok-배병주
토론주제   Iso21500vs pmbok-배병주토론주제   Iso21500vs pmbok-배병주
토론주제 Iso21500vs pmbok-배병주
 
Spark sql
Spark sqlSpark sql
Spark sql
 
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
Hadoop과 SQL-on-Hadoop (A short intro to Hadoop and SQL-on-Hadoop)
 
NoSQL 간단한 소개
NoSQL 간단한 소개NoSQL 간단한 소개
NoSQL 간단한 소개
 

Similar to 9장. 문서 데이터베이스

Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
mongoDB 3 type modeling in production
mongoDB 3 type modeling in productionmongoDB 3 type modeling in production
mongoDB 3 type modeling in productionDongHan Kim
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) InBum Kim
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나종민 김
 
Node.js + Express + MongoDB
Node.js + Express + MongoDBNode.js + Express + MongoDB
Node.js + Express + MongoDBVincent Park
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo dbMinho Kim
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosqlSuwon Chae
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAmazon Web Services Korea
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Jin wook
 
Client side storage in html5
Client side storage in html5Client side storage in html5
Client side storage in html5yongwoo Jeon
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석Daeyong Shin
 
Netflix suro begins
Netflix suro beginsNetflix suro begins
Netflix suro beginsSungMin OH
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문SeungHyun Eom
 
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...Amazon Web Services Korea
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)DK Lee
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summaryHoChul Shin
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDJin wook
 

Similar to 9장. 문서 데이터베이스 (20)

Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
mongoDB 3 type modeling in production
mongoDB 3 type modeling in productionmongoDB 3 type modeling in production
mongoDB 3 type modeling in production
 
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범) Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
Using R with MongoDB(R User Conference Korea 2015, SK C&C 김인범)
 
Mongo db 최범균
Mongo db 최범균Mongo db 최범균
Mongo db 최범균
 
CouchDB - Introduction - Korean
CouchDB - Introduction - KoreanCouchDB - Introduction - Korean
CouchDB - Introduction - Korean
 
엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나엘라스틱서치, 로그스태시, 키바나
엘라스틱서치, 로그스태시, 키바나
 
Node.js + Express + MongoDB
Node.js + Express + MongoDBNode.js + Express + MongoDB
Node.js + Express + MongoDB
 
Introduction to mongo db
Introduction to mongo dbIntroduction to mongo db
Introduction to mongo db
 
Mongo db로 배우는 nosql
Mongo db로 배우는 nosqlMongo db로 배우는 nosql
Mongo db로 배우는 nosql
 
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil KimAWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
AWS Innovate: Best Practices for Migrating to Amazon DynamoDB - Sangpil Kim
 
Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략Mongo DB 성능최적화 전략
Mongo DB 성능최적화 전략
 
Client side storage in html5
Client side storage in html5Client side storage in html5
Client side storage in html5
 
Mongodb 특징 분석
Mongodb 특징 분석Mongodb 특징 분석
Mongodb 특징 분석
 
Netflix suro begins
Netflix suro beginsNetflix suro begins
Netflix suro begins
 
Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문Elastic Search (엘라스틱서치) 입문
Elastic Search (엘라스틱서치) 입문
 
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
[Retail & CPG Day 2019] Amazon.com의 무중단, 대용량 DB패턴과 국내사례 (Lotte e-commerce) - ...
 
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
자바 웹 개발 시작하기 (6주차 : 커뮤니티를 만들어보자!)
 
Nexacro
NexacroNexacro
Nexacro
 
Node.js DBMS short summary
Node.js DBMS short summaryNode.js DBMS short summary
Node.js DBMS short summary
 
Mongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUDMongo DB로 진행하는 CRUD
Mongo DB로 진행하는 CRUD
 

More from kidoki

Hadoop io
Hadoop ioHadoop io
Hadoop iokidoki
 
Chapter 14. json
Chapter 14. jsonChapter 14. json
Chapter 14. jsonkidoki
 
전문 검색 기술
전문 검색 기술전문 검색 기술
전문 검색 기술kidoki
 
Http 헤더
Http 헤더Http 헤더
Http 헤더kidoki
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약kidoki
 
14. no sql을 넘어
14. no sql을 넘어14. no sql을 넘어
14. no sql을 넘어kidoki
 
My sql 장애복구
My sql 장애복구My sql 장애복구
My sql 장애복구kidoki
 
Code chapter15
Code chapter15Code chapter15
Code chapter15kidoki
 
Code chapter5
Code chapter5Code chapter5
Code chapter5kidoki
 
Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로kidoki
 
Ch.11 승진
Ch.11 승진Ch.11 승진
Ch.11 승진kidoki
 
Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직kidoki
 
Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란kidoki
 
11장. 분석 패턴의 적용
11장. 분석 패턴의 적용11장. 분석 패턴의 적용
11장. 분석 패턴의 적용kidoki
 
2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용kidoki
 
11장 시스템
11장 시스템11장 시스템
11장 시스템kidoki
 
10장 클래스
10장 클래스10장 클래스
10장 클래스kidoki
 
클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출kidoki
 
정규확률분포
정규확률분포정규확률분포
정규확률분포kidoki
 
Composite pattern
Composite patternComposite pattern
Composite patternkidoki
 

More from kidoki (20)

Hadoop io
Hadoop ioHadoop io
Hadoop io
 
Chapter 14. json
Chapter 14. jsonChapter 14. json
Chapter 14. json
 
전문 검색 기술
전문 검색 기술전문 검색 기술
전문 검색 기술
 
Http 헤더
Http 헤더Http 헤더
Http 헤더
 
로그 수집, 집약
로그 수집, 집약로그 수집, 집약
로그 수집, 집약
 
14. no sql을 넘어
14. no sql을 넘어14. no sql을 넘어
14. no sql을 넘어
 
My sql 장애복구
My sql 장애복구My sql 장애복구
My sql 장애복구
 
Code chapter15
Code chapter15Code chapter15
Code chapter15
 
Code chapter5
Code chapter5Code chapter5
Code chapter5
 
Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로Ch18. 빅리그 거물에서 선지자로
Ch18. 빅리그 거물에서 선지자로
 
Ch.11 승진
Ch.11 승진Ch.11 승진
Ch.11 승진
 
Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직Ch7. 소프트웨어 r&d 조직
Ch7. 소프트웨어 r&d 조직
 
Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란Ch2. 좋은 소프트웨어란
Ch2. 좋은 소프트웨어란
 
11장. 분석 패턴의 적용
11장. 분석 패턴의 적용11장. 분석 패턴의 적용
11장. 분석 패턴의 적용
 
2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용2장. 의사소통과 언어 사용
2장. 의사소통과 언어 사용
 
11장 시스템
11장 시스템11장 시스템
11장 시스템
 
10장 클래스
10장 클래스10장 클래스
10장 클래스
 
클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출클러스터링을 통한 패턴 추출
클러스터링을 통한 패턴 추출
 
정규확률분포
정규확률분포정규확률분포
정규확률분포
 
Composite pattern
Composite patternComposite pattern
Composite pattern
 

9장. 문서 데이터베이스

  • 2. 문서 데이터베이스란? • 문서 데이터베이스는 키-값 저장소의 값 부분에 문서를 저장 • 문서의 종류는 XML, JSON, BSON 등 • 값을 검사할 수 있는 키-값 저장소
  • 3. 오라클과 몽고DB 용어 비교 오라클 몽고DB 데이터베이스 인스턴스 몽고DB 인스턴스 스키마 데이터베이스 테이블 컬렉션 로우(=행) 문서 rowid _id 조인 DBRef
  • 4. 문서 데이터베이스란? { “firstname” : “Martin”, { “firstname” : “Pramod”, “likes” : [ “Biking”, “citiesvisited” : [ “Chicago”, “London”, “Photography” ], “Pune”, “Bangalore” ], “lastcity” : “Boston”, “addresses” : [ “lastVisited” : } { “state” : “AK”, “city”: “DILLINGHAM”, “type” : “R” }, { “state” : “MH”, “city”: “PUNE”, “type” : “R” }, ], “lastcity” : “Chicago” } • 테이블의 모든 행이 같은 스키마를 따를 필요가 없다. 모든 칼럼을 정의할 필요가 없으며, 새로 운 속성을 자유롭게 추가 가능
  • 5. 몽고DB의 특징 - 일관성 • 복제본 집합(replica set)을 사용해 일관성 수준을 설정 db.runCommand({getlasterror : 1, w : “majority”}) 서버가 1대 있고 w를 majority로 설정하면, 노드가 하나이므로 즉시 Return • slaveOk를 설정해 슬레이브로부터의 읽기 허용 설정 Mongo mongo = new Mongo(“localhost:27017”); mongo.slaveOk(); • 특정 쓰기는 WriteConcern을 REPLICAS_SAFE로 설정해 마스터와 일부 슬레이브 에 쓰이도록 설정 DBCollection shopping = database.getCollection(“shopping”); Shopping.setWriteConcern(REPLICAS_SAFE);
  • 6. 몽고DB의 특징 – 트랜잭션, 가용성 • 단일 문서 수준에서 트랜잭션은 원자적 트랜잭션 • WriteConcern을 사용해 쓰기에 대한 안전성 수준 조정 가능 • 문서 데이터베이스는 마스터-슬레이브 설정으로 데이터를 복제해 가용성을 높임 • 몽고DB는 복제를 수행하고 복제본 집합을 사용해 고가용성을 제공 • 우선순위에 따라 주(마스터) 노드를 선정, 사용자가 임의로 우선순위 부여 가 능 • 모든 요청은 마스터 노드로 전달되며 슬레이브로 복제, 마스터 노드가 다운되 면 우선순위에 따라 새로운 마스터 선정 • 그림 9.1 참조 (111 Page)
  • 7. 몽고DB의 특징 – 조회 기능 • JSON으로 표현하는 질의어를 사용 관계형 데이터베이스 몽고DB SELECT * FROM order db.order.find() SELECT * FROM order WHERE customerId = db.order.find({“customerId”:”883c2c5 „883c2c5b4e5b‟ b4e5b”}) SELECT orderId, orderDate FROM order WHERE db.order.find({customerId:”883c2c5b customerId = „883c2c5b4e5b‟ 4e5b”}, {orderId:1, orderDate:1}) SELECT * FROM customerOrder, orderItem, prodect db.orders.find({“items.product.name” : WHERE customerorder.orderId = orderItem.customerOrderId AND orderItem.productId = product.productId /Refactoring/}) AND product.name LIKE „%Refactoring%‟
  • 8. 몽고DB의 특징 – 확장성 • 더 좋은 장비로 데이터베이스를 이관하는것이 아닌 노드를 추가하거나, 데이 터 스토리지를 변경하는 것 • 읽기 부하에 대한 확장성은 슬레이브를 추가해 읽기 요청을 슬레이브에서 처 리하도록 설정 (그림 9.2 – 114Page) • rs.add(“mongod:27017”); • 새로운 노드가 추가되면 기존 노드와 동기화 되며, 다른 노드를 재식할 필 요 없음, 애플리케이션 중단 시간 미발생 • 쓰기 확장성은 데이터 샤딩을 이용 • db.runCommand( {shardcollection : “ecommerce.customer”, key : {firstname:1}} ) • 클러스터에 노드를 추가해 쓰기 가능한 노드수를 늘려 수평 확장 가능, 리 팩터링이 발생하는 동안 애플리케이션 중단 시간 미발생, 샤드 간 균형을 유지하는 동안 최상의 상태로 동작하지 못함 • 샤드 키의 역할이 매우 중요 (고객의 성으로 분할, 사용자 위치를 이용해
  • 9. 문서 데이터베이스의 적절한 사용처 • 이벤트 로깅 • 모든 종류의 이벤트를 저장하는 중앙 데이터 저장소 역할 가능, 데이터 형 태가 지속적으로 변경되도 사용 가능 • 콘첸츠 관리 시스템, 블로깅 플랫폼 • 미리 정의한 스키마가 없고 보통 JSON을 이해 가능 • 웹 분석 또는 실시간 분석 • 실시간 분석을 위한 데이터 저장 가능, 문서의 일부 업데이트 가능 • 전자상거래 애플리케이션 • 비용이 많이 드는 데이터베이스 리펙터링이나 데이터 전환 없이 데이터 모델을 발전시켜 나갈 수 있는 능력 필요
  • 10. 문서 데이터베이스의 부적절한 사용처 • 여러 연산에 걸친 복잡한 트랜잭션 • 여러 문서에 걸친 트랜잭션 동작은 부적절, 다만 레이븐DB처럼 지원가능 한 DB도 존재 • 변화하는 집합 구조에 대한 쿼리 • 유연한 스키마란 데이터베이스가 스키마에 어떤 제한도 강제하지 않는다 는뜻 • 여러 테이블을 조인하는데 조인하는 테이블이 계속 변경되는 집합에서 부적절 • 즉, 집합 구조의 설계가 계속 변경되는 구조에서 부적절