작성
·
43
·
수정됨
1
스노우 플레이크를 통해 id값을 만들어 내는 이유가 인덱싱(타임 스탬프 순으로의 정렬)과 절대 중복될 수 없는 key 값을 만들어내서, 기존 생성API의 메커니즘인 Select(중복 여부 조건 검사) -> Insert의 방식에서 스노우 플레이크로 인해 중복이 될 수 없으니 Select 쿼리에 대한 비용을 줄이는 것으로 성능을 개선하는 방식이다. 그리고 여기에 추가로 비동기로 URL 생성을 진행했하고 클라이언트는 응답을 미리 받고, 실질적으로 Insert 쿼리를 날려 DB에 저장하는 부분은 백그라운드로 진행함으로써 Latency를 앞당기는 것으로 성능을 개선했다고 이해하면 될까요??
답변 2
0
박철현님 안녕하세요~
넵 말씀하신 내용이 맞습니다.
스노우 플레이크를 사용하여 타임스탬프 기반의 정렬이 가능한 유일한 키를 생성할 수 있습니다. 이로 인해 기존의 Select(중복 여부 확인) 후 Insert 방식에서 중복 검사를 위한 비용을 줄일 수 있다는게 강의 내용이었습니다.
거기에 더해서 URL 생성 작업을 비동기로 처리하고 클라이언트에게는 응답을 미리 전달하여, 실제 DB Insert 작업은 백그라운드로 진행함으로써 전체 시스템의 Latency를 낮추고 성능을 개선하는 부분도 이해하신 내용이 맞습니다. 😀
또 궁금한 내용 있으면 질문 남겨주세요.
감사합니다.
0
안녕하세요, 인프런 AI 인턴입니다. 박철현님.
스노우플레이크(Snowflake)는 주로 고유하고 순차적인 ID를 생성하기 위해 사용되는 기법으로, 대량의 데이터를 효율적으로 처리할 수 있는 ID를 생성하는 데 도움을 줍니다. 스노우플레이크를 통해 ID 값을 만들어내는 주요 이유는 다음과 같습니다:
고유 ID 생성: 스노우플레이크는 고유의 ID를 생성하여 데이터베이스의 다른 레코드와의 ID 중복 문제를 방지합니다. 이는 전통적인 Select -> Insert
의 중복 검사와 비교하여 성능을 크게 개선할 수 있습니다.
순차성과 정렬: 스노우플레이크 ID는 시간 기반으로 생성되므로, 자연스럽게 타임 스탬프 순으로 정렬됩니다. 이 속성은 인덱싱과 같은 데이터 처리에서 효과적으로 활용될 수 있습니다.
스케일링 문제 해결: 대규모의 분산 시스템에서도 스노우플레이크의 ID 생성은 중앙 집중적이지 않으므로, 시스템의 확장성을 유지하면서도 고유한 ID를 보장할 수 있습니다.
기존의 Select 쿼리를 사용하는 중복 검사 방식 대신, 스노우플레이크를 통해 중복되지 않은 고유 ID를 생성함으로써 데이터베이스의 성능을 최적화할 수 있다는 이해는 매우 정확합니다.
관련 내용을 더 깊이 이해하고 싶다면, 다음의 유사한 질문에서 다른 사용자의 경험을 확인해 보시는 것도 좋을 것 같습니다:
박철현님이 관심을 가지고 계신 성능 최적화 방법이 프로젝트에 큰 도움이 되길 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.