Database
-
[MongoDB] 배열 필드의 lookup 시 도큐먼트 순서Database 2021. 11. 23. 23:50
MongoDB는 relation의 개념이 없는 대표적인 NoSQL 데이터베이스이다. 하지만 MongoDB에서 RDB의 join처럼 서로 다른 collection을 참조할 수 있는 방법이 있는데, 바로 aggregation의 $lookup을 사용하는 것이다. $lookup 사용법 $lookup의 기본적인 동작을 확인하기 위해서 다음과 같은 테스트 데이터를 준비한다. db.tasks.insert([ { "_id": 1, "name": "task1", "required_time": 8 }, { "_id": 2, "name": "task2", "required_time": 2 }, { "_id": 3, "name": "task3", "required_time": 6 }, { "_id": 4, "name": "t..
-
[PG] 쿼리 실행 계획 분석하기 - Table ScanDatabase 2021. 11. 17. 23:47
데이터베이스에 날릴 쿼리를 최적화하기 위해서는, 데이터베이스가 실제로 쿼리를 실행하는 방식과 해당 쿼리의 성능을 알고 있어야 한다. 그러기 위해서 데이터베이스의 쿼리 실행 계획(Query execution plan)을 보고 분석할 수 있어야 한다. PostgreSQL의 실행 계획을 분석하기 위해서 PostgreSQL가 테이블을 조회하는 방식인 테이블 스캔(Table Scan) 방식에 대해서 제일 먼저 알아보고 정리하려고 한다. 테스트 데이터 테스트할 테이블은 다음 쿼리로 생성했다. 게시판의 게시물에 해당하는 테이블이고, 사용자 테이블은 생성하지 않은 관계로 외래 키 참조는 생략했다. CREATE TABLE post ( id serial PRIMARY KEY, title varchar(255), autho..