SQL NULL 값: 직관과 다른 동작

2025-01-09

SQL에서 NULL 값의 처리 방식은 종종 예상과 다릅니다. 이 글에서는 유일성 제약 조건이 있는 열에서 NULL 값의 놀라운 동작, 즉 여러 NULL 값이 공존할 수 있다는 것을 보여줍니다. SQLite, Postgres, MySQL의 실제 예시를 통해 NULL 값이 "=" 및 "IS" 연산자에서 다르게 동작하는 이유와 근본적인 원인을 설명합니다. 유일성을 보장하기 위한 두 가지 해결책으로 생성 열 생성 및 부분 인덱스 사용을 살펴봅니다. 테이블 크기 증가 및 잠재적 오류를 방지하기 위해 부분 인덱스 사용이 최선의 방법으로 제시됩니다.

더 보기
개발

Convoy, UUIDv4에서 ULID로 전환: 빅데이터 시대의 효율성과 확장성

2024-12-28

MongoDB에서 Postgres로 데이터베이스 마이그레이션 과정에서 Convoy는 고유 식별자로 UUIDv4 대신 ULID를 사용하기로 결정했습니다. 이 글에서는 UUIDv4와 ULID를 비교하여 ULID의 장점인 사전식 정렬 가능성, URL 친화성, 데이터베이스 색인 효율 향상을 강조합니다. 하지만 생성 및 삽입 속도는 약간 느립니다. Convoy가 ULID를 선택한 주된 이유는 대규모 데이터셋의 페이징 성능 문제를 해결하기 위해서입니다. ULID 생성 속도는 약간 느리지만, 특히 대규모 데이터 처리에서의 성능 향상은 그 가치가 있다고 판단됩니다. 또한 ULID에 따른 시간 정보 유출 위험과 사용자 데이터에 대한 영향도 논의하며, 향후 UUIDv7로 전환할 가능성도 언급합니다.

더 보기
개발