가치투자자 일지

created: 2021-01-22 | updated: 2021-04-11
대한민국 날짜 회사 보고서 주가 시가총액 매출 영업이익 당기순이익 특이사항 2021-04-11 엔씨소프트(KRX: 036570) 사업보고서 (2020.12) 925,000원 20조 3,075억원 5,613억원 1,567억원 803억원 2021-04-11 넷마블네오 사업보고서 (2020.12) 138,000원 1조 7,194억원 881억원 432억원 386억원 2021-04-11 라인게임즈 [한경 CFO Insight] 라인게임즈 텐센트 등에서 1000억원 유치 9,000억원(추정) 투자유치를 위한 유상증자 2회 있었음 2021-03-01 엔씨소프트(KRX: 036570) 분기보고서 (2020.

MongoDB 스터디 11주차(데이터 모델링)

created: 2021-04-07 | updated: 2021-04-08
고려사항 데이터 모델은 애플리케이션과 함께 변함 데이터 모델에 영향을 미치는 요소 사용자의 요구사항 읽기 및 쓰기 작업의 특성 모델링 순서 애플리케이션 워크로드 측정 데이터 사이즈 중요도에 따라 작업을 목록화 데이터와 데이터 간의 관계를 연결(CRD, Collection Relationship Diagram) 레퍼런스할지 임베드 할지 결정 각 컬렉션의 데이터 모델을 정리(디자인 패턴 적용) 임베딩 vs 레퍼런스 1. 임베딩 User = { "_id": 1, "name": "hueypark", "items": [ { "type": "sword", "damage": 10 }, { "type": "spear", "damage": 20 } ] } 2.

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 상황 너무 많은 조인이 발생함 해결책 주가 되는 도큐먼트에 쪽에 필드를 임베딩함 예 적용 전