본문 바로가기

DB10

UUID for Primary Key 왜 UUID를 Primary Key로 쓸까? DB에서 Primary Key를 사용할 때 단순하게 Sequence(Auto Increment)를 사용할 수 있다. 하지만 소셜 서비스에서 주로 사용되는 username과 같이 PK와 별개로 특정 유저를 특정하는 값이 존재하지 않고 외부에 Table의 PK(ID) 값을 노출한다고 하였을 때, Sequence(Auto Increment) 값을 사용하는 것은 단순 증가 값이기 때문에 본인 것이 아닌 데이터에 접근할 수 있는 ID 값을 외부에 노출하는 것과 같다고 볼 수 있다. 그래서 DB에서 Primary Key를 사용할 때 다른 데이터에 쉽게 접근할 수 있는 ID 값을 쉽게 유추할 수 없도록 UUID를 사용할 수 있다. UUID v4 같은 경우 랜덤하게 생성되고.. 2021. 7. 23.
MongoDB Index MongoDB Index Index와 B-Tree MongoDB는 indexing 알고리즘으로 B-Tree를 사용한다. B-Tree는 정확한 일치, 범위 조건, 정렬, prefix 일치 등의 다양한 쿼리를 용이하게 처리하게 해준다. 키가 추가되거나 삭제되더라도 밸런스된 상태를 계속유지한다. Index 규칙 index는 도큐먼트를 가져오기 위한 필요한 작업량을 많이 줄인다 (Index를 적절하게 걸면 Full scan을 하지 않아도 된다) (a, b) 인덱스가 있다면 a 인덱스에 대해서는 중복이고 b에 대해서는 중복이 아니다. 복합 인덱스에서 키의 순서는 매우 중요하다 복합 인덱스 복합 인덱스에서는 순서가 중요하다. (제조사 1, 가격 1) index를 건 경우 Q: 낮은 가격 순으로 정렬하고 싶을 때 (.. 2021. 6. 5.
MongoDB Performance Tips MongoDB Performance Tips MongoDB Explain Query query를 실행할 때 성능을 위해선 해당 query에 index가 걸리는지 확인하는 것은 중요하다. index를 생성한 뒤 해당 index를 제대로 타는지 확인하기 위해서 query에 explain()을 추가하여 query를 분석한다. explain은 query에 대한 자세한 정보를 보여준다. # index 생성 전 mongo-repl:PRIMARY> db['aggregate-example'] .find({ type: 'mac' }) .explain('executionStats'); { "queryPlanner" : { "plannerVersion" : 1, "namespace" : "chris.aggregate-exa.. 2021. 6. 5.
Foreign Key에도 index가 걸릴까? (2020-07-08에 작성한 글입니다.) RDS를 쓰면 일대다 관계를 정의해서 사용하는 경우가 잦을 것이다. 테이블 간 일대다 관계를 정의하면 테이블 상으로는 PK, FK를 통해 서로 관계를 매핑시킬 것인데 그러면 FK에는 index가 걸려있을까? 아래와 같이 단순한 유저, 게시물의 경우를 생각해보자. users id (PK) username nickname 1 devson seoul dev 2 chris Chris Brown boards id (PK) user_id (FK) title ... 1 1 DB tuning ... 2 2 What should I do?? ... 테이블에서 확인할 수 있는 것과 같이 유저(users)와 게시물(boards)는 1:N 관계이고 users.id와 boards.us.. 2021. 1. 2.