본문 바로가기
728x90

개발자 도전기/[STUDY] DATABASE4

mongoDB | node.js | mongoose | populate()로 여러 컬렉션 사용하기 몽고디비는 관계형 데이터베이스가 아니기 때문에 테이블들을 join한다는 개념이 없다. 대신 aggregate의 $lookup 연산자를 이용하여 컬렉션들을 조인할 수 있고, 이외에 mongoose의 populate()를 이용하는 방법도 있다. Population is the process of automatically replacing the specified paths in the document with document(s) from other collection(s). We may populate a single document, multiple documents, a plain object, multiple plain objects, or all objects returned from a query.. 2023. 1. 10.
mongoDB | node.js | mongoose | 자주 사용하는 쿼리 연산 정리 - Array field 수정 관련(v 4.4) 최근 우리 자사 서비스에 알림 기능을 구현하는 일을 계속 하고 있다. 알림 관련 데이터를 CRUD하는 api를 작성했었고, 지금은 리팩토링을 하고 있다. 그중 가장 관심을 가지고 있는 이슈는 CRUD를 할 때, 노드 내에서 처리하는 것이 아니라, 몽고디비의 쿼리 연산을 이용하는 것이다. 예시로 사용자가 알림을 삭제할 때, 처음 작성했던 방식은 노드에서 데이터를 바꾸고 그 이후 DB를 바꾸는 방식이었다. // findOne을 통해 해당 데이터를 조회하고, 노드에서 수정 후, save()를 통해 변경 사항을 db에 저장 // ... const notificationInfo = await Notification.findOne({ userId }); notifications.forEach(notification.. 2022. 12. 4.
mongoDB | mongoose | 업무에서 사용하는 기능들 정리(v4.4 기준) - Transactions DB를 다루는 사람이라면 당연하게 트랜잭션이라는 개념에 대해서 알아야 하고, 실제로 사용할 수 있어야 한다고 생각한다. 실제로 기술 면접을 봤을 때, DB 인덱스나 트랜잭션에 대한 질문을 많이 받았던 기억이 있다. 현재는 몽고디비를 메인 스토리지로 사용하고 있지만, 취업 전에 여러 프로젝트를 진행할 때에는 MySQL을 주로 사용했었다. 그리고 어설프게나마 트랜잭션을 고려하면서 DB를 설계하고 해당 기능을 사용했었다. ▼ 트랜잭션 개념 다시 한 번 정리 더보기 트랜잭션(transaction) 질의(query)를 하나의 묶음 처리해서 만약 중간에 실행이 중단됐을 경우, 처음부터 다시 실행하는 Rollback을 수행하고, 오류없이 실행을 마치면 commit을 하는 실행 단위 쉽게 말해 트랜잭션은 한 번 질의가.. 2022. 10. 31.
mongoDB | mongoose | 업무에서 사용하는 기능들 정리(v4.4 기준) - Aggregation 최근에 라인 알림센터의 마이그레이션에 관련된 스토리에 대 한 글을 읽었다. 라인 서비스의 알림 기능을 담당하는 팀이 올해 초 메인 스토리지를 레디스에서 몽고디비로 마이그레이션하게 된 이유와 배경에 대해서 자세하게 서술되어 있는데, 나도 현재 알림 기능을 담당하는 개발자이다보니 더 흥미가 생겨서 읽었던 것 같다. https://engineering.linecorp.com/ko/blog/LINE-integrated-notification-center-from-redis-to-mongodb/ LINE 알림 센터의 메인 스토리지를 Redis에서 MongoDB로 전환하기 2022-LINE-engineering-site engineering.linecorp.com 라인의 경우 서비스 고도화와 이용량 증가에 따른 r.. 2022. 10. 25.
728x90
LIST