성장, 그리고 노력

부족하더라도 어제보다 더 잘해지자. 노력은 절대 배신하지 않는다.

데이터베이스 3

[MongoDB] Update ... 대치? 연산자? 뭐가 더 좋을까

DB를 업데이트하는 것은 기존의 도큐먼트에 "(덮어) 쓰기"를 하는 것이다. 업데이트를 하는 방법에는 두 가지가 있으며 제목에 대한 이야기를 하기 전에 간단하게 "대치에 의한 update"와 "연산자에 의한 update"를 먼저 짚어보자. 대치에 의한 Update 특정 유저에 상품의 좋아요 카운트를 증가시키는 경우에 대해서 예를 들어보자. const product_id = ObjectId("5da78973835b2f1c75347a83"); const doc = db.products.findOne({_id: product_id}); document['total_like'] += 1; db.products.update({_id: product_id}, doc); 먼저 products에 _id를 가지고 먼저 ..

MongoDB TTL 컬렉션

파일 시스템 관련 개발하던 중, MongoDB에 재밌는 컬렉션이 있어서 기록을 남겨본다. 민감 정보가 있는 다운로드 내역이라면, signedUrl로 일정 시간만 다운로드를 가능하게 하고 일정 기간이 지나면 완전히 컬렉션에서 사라지게 한다면 조금 더 안전한 운영이 가능하지 않을까? 또는 일정 기간만 로깅용으로 데이터를 보유하고 그 이후에는 사용하지 않는다면, 이 컬렉션은 매력적일 거 같다. TTL 컬렉션(Time-To-Live) MongoDB는 컬렉션에서 특별한 인덱스를 사용하여 구현한, 특정 시간이 경과한 도큐먼트를 자동으로 제거(remove)시킬 수 있는 기능을 제공한다. 위 명령을 통해 lastModifiedDate에 인덱스를 생성하게 된다. TTL 인덱스를 생성하는 조건은 날짜 또는 날짜 값을 포함..

MongoDB 기초

현 회사에서 GraphQL + mongoDB를 사용하다 보니, (물론 관계형 데이터 베이스도 사용하지만) 몽고 디비의 관한 내용을 얼추 알지만, 조금 더 정리하고 싶어서 시작한 포스팅. 얼른 뽀개자. MongoDB란? MongoDB는 도큐먼트 지향적인 데이터베이스다. NoSQL (비관계형 데이터베이스)로 JSON Type의 데이터 저장 구조를 가지며, Memory Mapping 기술을 기반으로 Big Data 처리에 탁월한 성능을 제공하고 있다. 또한 시스템 장애가 발생하더라도 안전하게 데이터를 보관하고 운영할 수 있도록 샤딩(분산, Sharding)과 레플리카(복제, Replica)를 제공하고 있다. 좀 더 자세한 내용은 이후에 설명하도록 하겠다. 내부적으로 MongoDB는 Binary JSON 혹은 ..

반응형