본문 바로가기

DB/RDB3

엔티티의 id를 AUTO_INCREMENT가 아닌 UUID를 사용하고자 할 때는 왜 사용해야하나 첫째로는 보안적인 이유이다. AUTO_INCREMENT를 엔티티의 id로 쓰는 경우 id가 단순 숫자값이기 때문에 외부에서 데이터를 긁어가기가 좋다. 예를 들어 커머스 서비스인 경우 상품 데이터에 AUTO_INCREMENT id를 사용한다면 조회 API를 사용하여(단순 상품 조회 public API일 것이기 때문에) 모든 상품 데이터를 긁어갈 수 있을 것이다. (https://some-commerce/products/1, https://some-commerce/products/2, ..., https://some-commerce/products/102341, ...) 더 크리티컬한 경우는 API를 통해 유저의 개인정보를 조회할 때, 만약 보안 기능이 제대로 작동하지 않는 경우라면 타인의.. 2022. 7. 26.
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.
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.