Map Reduce - aggregation framework가 처리하지 못하는 복잡한 집계 작업에 사용 - javascript function을 사용하여 복잡한 작업 처리 - shard에 대응 ! - > 분산 처리 가능 [순서] query → map → reduce → out - map : data mapping (grouping) - reduce : 집계 연산 실행 - query : 입력될 document - out : collection or document 출력 db.score.mapReduce( myMap, myReduce, {out:{replace:"myRes"}} ); # pretty(): 예쁘게 정렬해서 보여주는 기능 db.myRes.find().pretty() # 기능확인을 위해 우선 데..
PipeLine - collection 이 각 stage를 거치면서 document 처리 및 집계 - 일부 처리는 shard에 대응 (각 shard에서 처리) * pipeline : 이전 단계의 연산 결과를 다음 단계에서 사용 * stage 순서 중요! SQL ↔︎ NoSQL aggregation db.score.aggregate( score collection 에서 {$match:{"test":"midterm"}}, test가 midterm 인 document들을 뽑고, {$project:{"kor":1}}, kor만 출력시켜서, {_id:"!..", kor:""} {$group:{"_id":"test","average":{"$avg":"$kor"}} 집계해서 {_id:"test", average:n}..
Database - 독립적인 하나의 권한을 가짐 - 각각의 db는 분리된 파일로 저장 - 예약된 db name admin : root db local : 복제되지 않는 db (특정 서버에만 저장하는 collection에 사용) config : shard 정보 저장 Collection - document들의 group (rdbms의 table 역할) - schema를 가지지 않는다 (document들의 field가 각각 다를 수 있다) Document - data recode를 BSON (Binary JSON)으로 저장 - field(key) 중복 불가 - 대소문자 구별 BSON이란 binary로 인코딩(serialization) 된 JSON을 말한다. JSON이 그러하듯이 네트워크 전송비용이 적고 정형화..
NoSQL [Non Relational Operation Database SQL] 고정되지 않은 테이블 스키마 :필요할 때 마다 필드를 추가/ 제거 가능 → 개발 속도 향상 관계형 데이터베이스가 아닌 SQL: 데이터 간의 관계를 정의하지 않는 데이터베이스 일반적인 관계형 데이터베이스에서는 데이터의 중복을 제거하고 무결성을 보장하기 위해서 정규화를 하게 되는데 이러한 정규화가 과도한 JOIN으로 인해 성능 저하가 있을 수 있습니다. 하지만 NoSQL은 아래의 그림 처럼 중첩데이터 형태를 띔으로써 불필요한 JOIN 을 최소화시킵니다. NoSQL의 장점 1) 불필요한 Join의 최소화 2) 유연성있는 서버 구조 제공 3) 비정형 데이터 구조로 설계비용 감소 4) Read/Write가 빠르며 빅데이터 처리가 가..