일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- CentOS
- Get
- 하둡 환경변수
- 데이터노드
- 가상환경
- hadoop2
- 환경변수
- hadoop설치
- 하둡2설치
- SQL 기초
- 클라이언트
- 웹프로그래밍
- 하둡2
- 네임노드
- HTTP
- SQL
- Post
- 서버
- 하둡
- it
- hadoop
- sql문
- 분산처리
- HDFS
- install hadoop2
- MongoDB
- 하둡 설치
- VirtualBox
Archives
- Today
- Total
누리의 누리
Mongo db - 1. Overview 본문
Mongo db 스터디
Kasandra - specific task / mongo - 범용적인 rdb의 대체 —> scale out 가능한 rdb 나오는 순간 (nosql ㅃㅃ2)
Curriculum(스터디 일정)
- Overview
- Core concept - DB, Collections, Document
- CRUD Operations
- Data Models
- Index
- Replication
- Sharding
+ 5,6,7에 중점 맞출 예정
다음 시간엔 data modeling 스터디 예정임!
mongoDB 공부법
- Mongoldb mannual —> 이걸로 할 예정
- 책 1000페이지짜리 읽으면 마스터됨,,, 완전 자세함, 깊숙한 내용이 많음
전략에 대한 고민들은 솔루션 마다 크게 다르지 않다.
오늘 : 조회하기, 읽고 쓰기에 대한 간략한 리뷰
mongoDB란
- Document DB (elastic, couch base(couch DB는 키밸류) …)
- elastic이 기능적으로는 hadoop이 하는 일을 구현할 수 있으나 양으로서는 불가능할 수도… 몽고디비도 맵리듀스 가능
- 하둡이 사용성이 정말 떨어지나 배치성(용량)에 장점이 있다. 엘라스틱과 몽고에서 그걸 해결한다면 하둡의 미래가 불투명해짐
- aws 아테나도 비슷,,, 로그 데이터를 자동으로 쿼리하고 조인해줌 (emr Hadoop cluster —> 아테나 (비용 절감 가능))
- db-engines.com/en/ranking
- 나스닥에도 상장될 정도로 유망함
- 특징
- High performance
- Rich query language
- High availability
- Horizontal Scalability
- Support for multiple storage engines (mysql 의 이노디비같은,,, 심지어 메모리 디비로도 전환이 가능함)
- 배워야 하는 이유
- 대용량 데이터 분산 아키텍쳐의 다양한 전략이 적용되어있어 학습하기 좋다. —> 실습을 통해 내부 동작 파악 가능
- nosql들의 아키텍쳐의 전략은 다 비슷함으로 하나만 깊게 제대로 알아 놓으면 다른 애들도 쉽게 이해 가능하다.
- 실습자료들도 많아 딥하게 내부동작 파악 가능
- 메뉴얼이 매우 훌륭하게 작성되어있다,, 책보다 훨씬 좋음
- 주요 컨셉 - Document(Row), Collection(table), DB(table의 모음)
- Collection - view
- 회원 테이블이 있으면 그 안에 들어가는 정보 중 선택적으로 정보를 뽑아 새로운 논리 테이블을 만드는 것
- 사용이유 : 사용자편의성(목적에 맞춰서 쓰기 위함), 보안(origin에 접근을 막고 특정 정보에만 접근하도록)
- Collection - Capped Collection
- Document 개수가 제한된 컬렉션
- 생성할 때 document의 최대 개수를 설정
- document개수가 최대에 다다르면 옛날 데이터가 지워짐
- Read/Write 속도가 일반 컬렉션에 비해 훨씬 빠름
- 영속화가 필요 없는 로그 데이터 등을 저장하는데 사용한다,
- table을 생성할때 row의 갯수를 제한하는 것 (queue 처럼)
- 장점 : 속도가 일반 컬렉션에 비해 훨씬 빠르다.
- ttl이 있어서 redis 사용하나 비용문제있어서 몽고디비 쓰는것도 추천하고 나쁘지 않다.
- Document
- mongoDB의 최소 단위
- BSON형식으로 표현됨(JSON과 거의 비슷) —> docs.mongodb.com/manual/reference/bson-types
- RDBMS의 Row에 해당
- id는 자동으로 생성
- Sharding시 클러스터 내 unique함을 보장
- 단일 Document최대 사이즈는 16mb
- Document가 계속해서 증가하지 않도록 설계 해야 함
- 예) 게시물 내의 댓글을 임배딩 하는 경우
- RDB는 unique키를 잡는게(보장할 수 있는가)가 문제가 되기때문에 분산할 때 문제가 될 수 있다. 기본적으로 sharding이 되지 않음, mongoDB는 알아서 보장해줌
- CRUD - Create
- 생성 메소드
- db.collection.insertOne()
- db.collection.insertMany()
- CRUD - read
- 조회 메소드
- db.collection.insertMany()
- CRUD - Update
- 수정 메소드
- db.collecion.updateOne()
- db.collecion.updateMany()
- db.collecion.replaceOne()
- update할때는 한 항목에 대해서만 하면 안됨 $set안하면 다른 필드 다 날라감
- CRUD - Write Concern(분산DB에만 있는독특한 전략)
- Data Consistency 를 컨트롤 하기 위한 전략 // Query, collection level로 설정 가능
- CRUD - Read Preference
- default 설정은 primary임
- Options
- Primary
- primaryPreffered
- Secondary
- secondaryPreferred
- nearest
- 많이 참고 하면 좋은 매뉴얼 : docs.mongodb.com/manual/reference/sql-comparison (sql안돼서 안타깝다,,, 곤조때문인가,,,)
- Nosql <—> RDB
- Embedding
- ORM (오브젝트를 rdb테이블과 1대1로 맵핑하는것)
Comments