MongoDB 스터디 10주차(트랜잭션)

created: 2021-03-26 | updated: 2021-04-01
트랜잭션 몽고디비는 4.0버전(2018년)부터 여러 도큐먼트에 대한 트랜잭션을, 4.2버전(2019년) 부터는 샤딩된 컬렉션에 대한 분산 트랜잭션을 지원하고 있습니다. 여러 도큐먼트에 대한 ACID 트랜잭션 지원은 다양한 상황에서 개발자가 쉽게 대응할 수 있게 합니다. 스냅샷 격리수준과 아토믹한 실행은 샤딩된 클러스터에서도 트랜잭션이 필요한 워크로드를 제어할 수 있게 합니다. In version 4.0, MongoDB supports multi-document transactions on replica sets. In version 4.2, MongoDB introduces distributed transactions, which adds support for multi-document transactions on sharded clusters and incorporates the existing support for multi-document transactions on replica sets.

MongoDB 스터디 9주차(인덱스)

created: 2021-03-14 | updated: 2021-03-23
인덱스 인덱스는 쿼리가 효율적으로 실행되게 돕습니다. 쿼리에 적절한 인덱스가 있으면 이를 사용해 조회할 도큐먼트 수를 줄일 수 있습니다. 인덱스는 특정 필드 또는 필드들을 값에 따라 정렬해 저장합니다. 정렬된 인덱스는 효율적인 레인지 쿼리를 지원합니다. 몽고디비 인덱스는 B-tree 자료구조를 사용합니다. _id 인덱스 몽고디비는 _id 유니크 인덱스를 만듭니다. _id 인덱스는 같은 _id 를 가진 도큐먼트가 두 개 생기는 것을 막습니다. _id 인덱스는 제거할 수 없습니다. NOTE: 샤딩된 클러스터에서 _id 필드를 샤드 키로 사용하지 않으면 오류방지를 위해 애플리케이션이 _id 필드의 유니크성을 보장해야 합니다.

MongoDB 스터디 8주차(aggregation)

created: 2021-03-07 | updated: 2021-03-11
어그리게이션(Aggregation) 어그리게이션 작업은 데이터를 처리하여 계산된 결과를 반환합니다. 어그리게이션은 여러 도큐먼트의 값을 그룹화하고, 데이터에 다양한 작업을 수행한 후 단일 결과를 반환할 수 있습니다. MongoDB는 세 가지 어그리게이션을 제공합니다. Aggregation Pipeline Single Purpose Aggregation Operations Map-reduce 어그리게이션 파이프라인(Aggregation Pipeline) Aggregation pipeline 은 파이프라인 이용해 데이터의 집계를 처리하는 프레임워크입니다. 여러 스테이지에 걸쳐 도큐먼트들을 집계된 결과로 변경합니다. 아래 예를 살펴봅시다: db.orders.aggregate([ { $match: { status: "A" } }, { $group: { _id: "$custmor_id", total: { $sum: "$amount" } } } ]) $match 스테이지는 도큐먼트들을 status 필드가 "A" 인 데이터만 다음 스테이지로 보냅니다.

MongoDB 스터디 8주차(MongoDB CURD 맵 리듀스)

created: 2021-03-06 | updated: 2021-03-07
Map-Reduce MongoDB 는 맵리듀스 대신 어그리게이션 파이프라인을 사용하길 권장하고 있으며, 상세내용은 아래와 같습니다. 어그리게이션 파이프라이프라인으로 맵 리듀스를 대체할 수 있습니다 어그리게이션 파이프라인은 맵-리듀스보다 좋은 성능과 사용성을 제공하며, $group, $merge와 같은 명령어를 사용해 맵리듀스를 어그리게이션 파이프라인으로 변경할 수 있습니다. 또 사용자 정의 기능이 필요한 경우 4.4 버전부터 $accumulator, $function 명렁어로 해결할 수 있습니다. 맵리듀스를 대체하는 어그리게이션 파이프라인을 알고 싶으면, 맵리듀스에서 어그리게이션 파이프라인으로 변경 나 맵리듀스 예제 문서를 참고하십시오. 참고자료 공식 문서 Map-Reduce

MongoDB 스터디 7주차(MongoDB CURD 읽기 연산)

created: 2021-02-27 | updated: 2021-03-04
db.collection.find() 쿼리 기준과 일치하는 도큐먼트에 대한 커서를 반환합니다. 파라미터 query: 필터에 사용할 쿼리 연산자입니다. projection: 도큐먼트에서 반환할 필드를 지정합니다. 생략하면 모든 필드가 반환됩니다. db.collection.findOne() 쿼리 기준과 일치하는 하나의 도큐먼트를 반환합니다. 여러 도큐먼트들이 쿼리를 만족하면 디스크에 저장된 순서에 따라 첫 도큐먼트를 반환합니다. 만약 대상이 없으면 null을 반환합니다. Read Concern readConcern 옵션을 사용해 읽기 작업의 일관성과 격리수준, 가용성을 제어할 수 있습니다. 4.4 버전부터 기본값의 전역 설정이 가능합니다. 세부정보는 setDefaultRWConcern에서 확인하십시오.

MongoDB 스터디 6주차(MongoDB CURD 쓰기 연산)

created: 2021-02-23 | updated: 2021-02-25
Create Operations db.collection.insertOne() 도큐먼트를 하나 추가합니다. 문법 db.collection.insertOne( <document>, { writeConcern: <document> } ) writeConcern w: 몇 개의 mongod 에 저장 후 응답할 지 설정 <숫자>: 몇 개의 mongod 에 기록될 지 직접 지정 “majority”: 과반의 mongod 에 기록되게 설정 <커스텀 write concern 이름>: 특정 데이터 센터에 저장되게 설정가능, Custom Multi-Datacenter Write Concerns j: 디스크의 저널에 저장 후 응답할지 설정 여부 timeout: 쓰기 제한 시간(밀리세컨드), 반환하기 전에 이미 성공한 쓰기 작업을 롤백하지 않음 예 db.

MongoDB 스터디 5주차(패턴과 안티패턴)

created: 2021-02-10 | updated: 2021-02-17
패턴 Attribute Pattern 상황 비슷한 필드가 많을 때 여러 필드에 걸쳐 조회하고 싶을때 필드가 일부 도큐먼트에만 있을 때 해결책 필드를 k/v 짝으로 나누어 서브도큐먼트에 저장 예 적용 전 { "title": "Star Wars", "release_US": "1977-05-20T01:00:00+01:00", "release_France": "1977-10-19T01:00:00+01:00", "release_Italy": "1977-10-20T01:00:00+01:00", "release_UK": "1977-12-27T01:00:00+01:00", } 적용 후 { "title": "Star Wars", "director": "George Lucas", "releases": [ { "location": "USA", "date": "1977-05-20T01:00:00+01:00" }, { "location": "France", "date": "1977-10-19T01:00:00+01:00" }, { "location": "Italy", "date": "1977-10-20T01:00:00+01:00" }, { "location": "UK", "date": "1977-12-27T01:00:00+01:00" }, ] } 장점 인덱싱하기 쉬움 더 적은 인덱스가 필요함 쿼리가 간단해지고 일반적으로 빨라짐 Extended Reference Pattern 상황 너무 많은 조인이 발생함 해결책 주가 되는 도큐먼트에 쪽에 필드를 임베딩함 예 적용 전

(Book) 팀장의 탄생

created: 2021-01-25 | updated: 2021-02-12
지은이: Julie Zhuo ISBN: 979-11-6521-268-1 38쪽 진정한 관리자의 본분은 ‘여러 사람이 협력하는 집단에서 더 좋은 성과를 도출하는 것'이다. 40쪽 하지만 시간이 지나면 진실이 드러나는 법이다. 유능한 인재는 자신을 홀대하는 상사나 존경심이 생기지 않는 상사 밑에서 몇 년이나 참고 버티지 않는다. 그리고 유능한 관리자는 쇄신을 단행할 권한만 준다면 형편없는 성과를 내던 팀을 환골탈태시킨다. 47쪽 모름지기 관리자라면 팀의 목적, 사람, 프로세스를 개선함으로써 팀의 전체적인 성과에 최대한 멀티플라이어 효과를 내야 한다.

와인 일지

created: 2021-01-10 | updated: 2021-02-09
이름 가격 구매 장소 구매 날짜 사진 시음 날짜 후기 Viberti Barbera La Gemella 2019 27,000원 뱅가드와인머천트(광화문점) 2021-02-09 Colombina San Martino 2012 41,000원 뱅가드와인머천트(광화문점) 2021-02-09 BARBARESCO BRIC MICCA 2016 55,000원 뱅가드와인머천트(광화문점) 2021-02-09 Soumah Single Vineyard Chardonnay 2019 45,000원 뱅가드와인머천트(광화문점) 2021-01-11 Essay Chenin Blanc 2020 12,900원 뱅가드와인머천트(광화문점) 2021-01-11 2021-01-15 살짝 단 맛, 가성비가 좋은 와인 Viberti Giovanni La Gemella Barbera d’Alba 2019 24,300원 뱅가드와인머천트(광화문점) 2021-01-11 2021-01-26 향이 좋음 Viberti Giovanni Nebbiolo Langhe 2018 34,200원 뱅가드와인머천트(광화문점) 2021-01-11 Bleda Pino Doncel 12 Meses 2018 25,000원 뱅가드와인머천트(광화문점) 2021-01-11 Essay Cabernet Sauvignon 2018 12,900원 뱅가드와인머천트(광화문점) 2021-01-11 THE BALVENIE DOUBLEWOOD12 137,000원 (주)현대백화점 신촌점 2021-01-09 Talo Primitivo di Manduria San Marzano 2018 30,000원 (주)현대백화점 신촌점 2021-01-09 Trapiche Broquel Malbec 2018 20,000원 (주)현대백화점 신촌점 2021-01-09 2021-01-10 별로임, 와인의 향이 없고 술 맛만 남