티스토리 뷰
회원 테이블의 특징 및 설계 결정 요소
거의 모든 서비스에서 참조하는 테이블이기에 READ 작업이 많아 불필요한 컬럼의 읽기가 일어나면 좋지 않을 수 있다.
그렇기에 1:1 매칭되는 컬럼이 있더라도, 정규화를 해서 분리하는 것이 좋다고 판단했다.
기본 테이블 구성에는 회원 정보, 회원 인증 정보등이 필요하지만 좀 더 나은 회원 데이터 관리를 위해서 필요한 정보들은 로그 데이터 및 휴면 계정 데이터 등이 있다.
테이블 구성회원 정보
- 회원
- 인증
- 로그
스키마 단위로 나누면 보안 그룹 설정 관리와 MSA 적인 측면을 고려할 수 있다. 회원 인증 정보를 따로 두는 이유는 최근에는 엄청 다양한 로그인 방식이 있기 때문에 따로 둬서 관리하는 방법이 더 효율적이라고 생각했다. 아래는 각 스키마 별 구성이다.
회원 (MEMBER)
member.user
▷ 회원 식별 정보
- user_id
- user_name
- auth_type - 인증 방식, 예: 내부 인증(패스워드), 외부 인증 공급자
member.profile
▷ 회원 프로필 정보 - 외부에서 확인할 수 있는 정보
- profile_id
- user_id
- name
- image_url
- created_at
- updated_at
- 그 외 nickname, status_message, status 등 서비스에 따라서 추가
member.detail
▷ 회원 개인 정보 - 기본적으로 private한 정보들. 결제나 배송 정보로 사용될 수 있다.
- detail_id
- user_id
- gender
- birthday
- phone_number
- address
member.subscription
▷ 회원 구독 정보 - 구독형 상품 결제 시 생성. 배치 같은 일괄처리 기능에 사용될 수 있다.
- subscription_id
- user_id
- subscription_plan
- purchased_at
- expired_date
member.device
▷ 로그인한 기기 정보 - 기기 분석 및 각종 기능(기기 제한, 보안 강화, 크롤링 방지 등등)을 위해 사용할 수 있다.
- device_id
- user_id
- in_use
- registed_id
- uuid
- model
- os_type
- os_versionc
인증 (AUTH)
auth.social_login
▷ 외부 플랫폼 인증 공급자를 통한 인증에 필요한 정보
- social_login_id
- user_id
- provider_code - 예: google, naver, kakao
- external_id - 해당 플랫폼에서의 고유 아이디값
- (refresh_token) - 리프레쉬 토큰을 db에 저장시
- updated_at
auth.password
▷ 일반 패스워드 로그인 인증에 필요한 정보. username(id)과 매칭하여 인증한다.
- password_id
- user_id
- salt
- password
- updated_at
auth.cidi
▷ 통합 인증 시스템 인증에 관한 정보. 아이핀이나 휴대폰 인증같은 업체로부터 받는 값
- cidi_id
- user_id
- ci
- di
로그(LOG)
log.user_activity
▷ 유저의 활동 기록
- user_activity_id
- user_id
- table_name - 변경된 레코드의 테이블명
- row_id - 변경된 레코드의 식별자
- activity_code - 활동 유형에 대한 코드 (예: CREATE, READ, UPDATE, DELETE)
- as_is - 해당 레코드가 업데이트 되기 이전의 값
- to_be - 해당 레코드가 업데이트 된 이후의 값
- updated_by - 변경자
- created_at
log.login
▷ 유저의 로그인 기록 - fraudalent한 로그인 패턴 분석을 위한 데이터
- login_id
- user_id
- status_code
- device_id
- ip
- fail_count
- fail_reason
- created_at
'Programming & CS > Architect' 카테고리의 다른 글
[형상 관리] 모노리포 vs 멀티리포 / Monorepo vs Multirepo (1) | 2023.04.22 |
---|---|
[기획] E-commerce Business 이해 (2) | 2023.03.23 |
- Total
- Today
- Yesterday
- MLOps
- load balancing
- 토이 프로젝트
- Embedding
- 로드밸런서
- 디스코드 봇
- 소프트웨어 방법론
- Spring cloud
- load balance
- springboot
- Microservice
- Kubernetes
- stable diffusion
- Textual Inversion
- 분산 처리
- monorepo
- 모노레포
- context7
- 멀티레포
- vae
- spring cloud config
- oauth2
- discord bot
- tauri
- Hypernetwork
- Multirepo
- Polyrepo
- spring boot
- 회원 테이블
- 형상 관리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |