Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

분산 데이터베이스 객체 ID / Entity PK 설정 / MySQL 인덱스 성능 고민 #87

Open
rivkode opened this issue Apr 27, 2024 · 0 comments

Comments

@rivkode
Copy link
Member

rivkode commented Apr 27, 2024

📌 Feature Issue

현재 객체 ID (엔티티 객체 식별) 생성을 직접 구현한 IdGenerator로 객체 ID를 생성하고 있습니다.
(UUID, long 타입을 사용하지 않음)

관련 PR

하지만 이 객체 ID가 PK로서, 클러스터 인덱스로서 적합한지에 대한 고민을 하고 있습니다.
MySQL에서는 PK를 클러스터 인덱스로 구성되어 항상 정렬된 인덱스를 유지하기 위해 비용이 발생하게 됩니다.

장점

  • 객체를 유일하게 식별한다
    • 객체 10만개 테스트시 약 57개의 중복이 발생, 심각한 오류, 개선필요
  • xxx-post-xxxx 형태로 가독성 증가
  • 랜덤한 문자들을 반환함으로써 보안성

단점

  • 무작위로 생성된 ID는 sequential (순차적) 이지 않다 그래서 정렬이 어려움
  • 정렬을 위해 소요되는 비용이 자동 증가하는 (auto increment) long 타입의 ID 보다 많이 요구됨

고민내용

  • 식별자를 외부로 노출시킬것인가
  • 정렬이 필요한 경우 어떻게 할 것인가
    • 범위 (예를 들어 최근 게시글 10개 가져오기) 에 대한 요구사항이 있을경우
  • 문자열의 길이가 크므로 인덱스로써 사용하기에는 인덱스 생성, 수정 비용이 비교적 클 수 있다 이를 어떻게 해결할 것인가 ?
idgenerator

1. my gen
2. uuid 효율적인 내용
3. snow flake

idgenerator 를 interface로 만들어서 사용해보자

사용하는 방법은

generate를 실행하면 해당하는 entity의 prefix를 포함한
식별자를 생성하는 것

todo

현재 idgenerator를 interface로 만들기

To-do

  • [ ]

ETC

@rivkode rivkode changed the title 분산 데이터베이스 Entity PK 설정 고민 분산 데이터베이스 객체 ID / Entity PK 설정 고민 Apr 28, 2024
@rivkode rivkode changed the title 분산 데이터베이스 객체 ID / Entity PK 설정 고민 분산 데이터베이스 객체 ID / Entity PK 설정 / MySQL 인덱스 성능 고민 Apr 28, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
- 이후 책임 분리하기
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
IdGenerator -> TokenGenerator

기존 Id 생성 역할을 Token 생성으로 변경
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
기존 id -> token으로 변경
id -> Long 타입
token -> String 타입
rivkode added a commit that referenced this issue Jun 10, 2024
rivkode added a commit that referenced this issue Jun 10, 2024
분산 데이터베이스 객체 ID , 대체키 반영 #87
rivkode added a commit that referenced this issue Jun 11, 2024
- 분산 데이터베이스 객체 ID , 대체키 반영 #87
rivkode added a commit that referenced this issue Jun 11, 2024
#87 프로젝트 도메인 대체키 반영
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant