분류 전체보기(313)
-
인덱스를 사용하지 않아야 할 때
인덱스를 사용하지 않아야 할 때 실무에서 인덱스를 사용했을 때 컬렉션 스캔보다 속도가 느린 경우가 있었습니다. 인덱스를 걸면 수정, 삭제를 제외하곤 성능이 좋아져야 맞다고 생각했기에 의아했습니다. 원인은 인덱스로 생성한 필드가 중복이 많아 가져오는 도큐먼트가 많다는 것이었습니다. OREILLY 사의 몽고DB 완벽 가이드 책에 따르면 인덱스는 데이터 일부를 조회할 때 가장 효율적이며 어떤 쿼리는 인덱스가 없는 게 더 빠르다고 합니다. 인덱스는 컬렉션에서 가져와야 하는 부분이 많을수록 비효율적인데, 인덱스를 하나 사용하려면 두 번의 조회를 해야하기 때문입니다. 한 번은 인덱스 항목을 살펴보고, 또 한 번은 도큐먼트를 가리키는 인덱스의 포인터를 따라갑니다. 반만에 컬렉션 스캔을 할 때는 도큐먼트만 살펴보면 됩..
2023.04.08 -
새로운 시작
새로운 시작 다시 시작해보려 합니다. 미뤄왔던 개발 공부도, 블로그 글쓰기도 천천히 예열을 해보려 합니다. 퇴근 후 카페에서 1시간 넘게 김영한님 JPA 강의를 들었습니다. 약 10개월 간 잊었던 RDBMS 도메인 클래스를 작성해보니 생소한 게 처음 배울 때 같았습니다. 실무에선 도큐먼트 DB인 NoSQL MongoDB를 사용하지만, JPA 강의를 듣는 이유는 많은 기업들이 RDBMS를 사용하고 있고, 안정적인 운영을 위해선 Spring JPA 지식도 알고 있어야 대비할 수 있기 때문입니다. 이사하는 집에선 모션 데스크를 잘 쓸 수 있도록 서재 방을 최대한 재택 작업이 가능하도록 꾸며야겠습니다. 시작.
2023.03.27 -
MongoDB 인덱스
MongoDB index 백만 개 도큐먼트가 있는 컬렉션에서 조회할 때 index 유무 차이 index는 모든 값을 정렬된 순서로 보관하므로 인덱스 키로 도큐먼트를 정렬하는 작업이 훨씬 빨라지게 합니다. index (x) totalDocsExamined가 1000000이고, executionTimeMillis가 682인 걸 알 수 있습니다.(0.682초) { explainVersion: '1', queryPlanner: { namespace: 'study.User', indexFilterSet: false, parsedQuery: { username: { '$eq': 'user101' } }, queryHash: '7D9BB680',..
2023.03.09 -
원티드 프리온보딩 2월 사전과제
원티드 12월 AWS 기초 프리온보딩에 이어 MySQL '잘' 사용하기 챌린지에 신청했습니다. 사전 과제로 DB에 관련된 문제가 주어졌는데, 검색을 최소화하고 머릿속에서 끄집어낸 지식들로 답해보았습니다. DB를 잘 다룬다는 건 백엔드 개발자로서 가져야할 필수 아이템이라고 생각합니다. 하지만 동작하는 서비스를 만드는 데에 여념하다보면 제대로 공부하기 힘든 분야이기도 합니다. 챌린지는 총 4회로 구성되어 있는데, 각 강의를 블로그에 정리하는 것을 목표로 해보겠습니다. 1. 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)의 장단점 비교 관계형 데이터베이스는 연관관계를 DB에서 지정해, FK에 따른 변경/삭제에 대한 제약을 줄 수 있습니다. 따라서 형식이 중요한 경우 관계형 데이터베이스가 적..
2023.02.01 -
일주일 늦은 2022년 회고
오랜만에 찾았다. 지난해 나는 어떻게 지냈는지 회고해보려고. 6월에 입사한 지금 회사에서 팀원들 절반이 나가는 사건이 있었고, 리더와 업무 소통 방식을 조율하기 위한 업무 외적인 노력도 있었다. 주중, 주말엔 데이트를 한다고 개발에 투자할 절대적인 시간이 줄었다. 좋은 개발자가 되기 위한 노력을 하고, 확률을 높이는 과정이 줄었다. 글을 쓰는 시간이 절대적으로 줄었다. 여자친구와 추억이 쌓였고, 곁에 소중한 존재가 생겼다. 2021년 보다 탐구하고자 하는 노력이 줄었다. 커리어에서 내가 가진 자신감이 줄었다. 이전 회사들에 다니면서 받았던 인정이 없어서일까. 내가 바친 노력이 적어서일까. 개발에 대한 한 해 총평을 하자면, 여자친구와 함께하는 시간이 나에게 행복감을 주는 소중한 시간인만큼 개발에 대한 투..
2023.01.07 -
Transaction
Transaction 트랜잭션이란 무엇일까요? DB에 조회든 생성/수정이든 요청을 보내는 한번의 통신을 트랜잭션이라고 생각했습니다. 조금 더 자세한 정의를 찾아보고자 글로 정리해보았습니다. techopedia에는 이렇게 정의해두었습니다. 트랜잭션은, 데이터베이스란 문맥 상에선 독립적으로 데이터를 조회하고 업데이트 하기 위해 실행되는 논리 단위라고 합니다. 그리고 전문가들은 데이터베이스 트랜잭션을 데이터베이스 디자인 환경 내에서 얻을 수 있는 "작업 단위"라고 얘기합니다. 그리고 트랜잭션은 COMMIT으로 시작돼 ROLLBACK SQL로 끝이나며 완성됩니다. ACID는 트랜잭의 특징들을 정의합니다. Atomicity(원자성) : 트랜잭션은 완결성을 충족시켜야 합니다. 커밋이 완료돼 DB에 저장이 되든, 롤..
2022.06.04