페이지 처리(Pagination) 방식 vs 무한 스크롤(Infinite Scroll) 방식
·
dev zone/java|spring
0. 들어가며 이번에는 페이지 기법에서 가장 유명한 두 가지인 페이지 처리 방식과 무한 스크롤 방식을 비교하고, 각각 어떻게 구현하며 며, 어떤 상황에서 쓰면 좋은지 등 페이지 구현 방식에 대해 전반적으로 정리해보았습니다.우선 페이지 처리 방식은 페이지 번호로 구분하여 한번에 일정 개수만 보여주는 방식을 말합니다. 가장 흔하게 볼 수 있는 방식으로 커뮤니티 게시판, 뉴스 등에서 사용됩니다. 무한 스크롤 방식은 사용자가 스크롤을 내릴 때마다 새로운 데이터가 자동으로 로딩되어 끝이 없는 것처럼 보이는 방식입니다. SNS 피드 혹은 쇼핑몰에서 자주 사용되는 방식입니다.아래 간단한 예시로 각 예시 별로 사이트를 찾아봤습니다. 들어가서 한번 직접 확인해보세요😀 📌 간단한 예시게시판 예시: 커뮤니티 게시판, 네..
[Primary Key 생성 전략] #7. 기타 방식 (Hash ID, Nano ID 등)
·
dev zone/database
# 0. 들어가며 UUID나 Snowflake ID 외에도 고유한 식별자(Unique ID)를 생성하는 다양한 방법이 있습니다. 이번 글에서는 Hash 기반 ID, Nano ID에 대해 알아보았습니다.   # 1. Hash 기반 ID 사용 방법  Hash 기반 ID는 특정 데이터를 고유한 해시 값으로 변환하여 사용합니다. 이 방식은 기존 데이터(예: 이메일, 사용자명 등)를 기반으로 유니크한 ID를 생성할 때 유용합니다. 📌 해시 함수란? 해시(Hash) 함수는 입력 값을 일정한 길이의 고유한 문자열로 변환하는 함수입니다. 같은 입력 값 → 같은 해시 값이 나오며, 출력 값은 충돌 가능성이 매우 낮습니다. 비밀번호 저장, 데이터 무결성 검사, 유니크 ID 생성 등 다양한 용도로 사용됩니다.   📌 예..
[Primary Key 생성 전략] #6. 유니크 정렬 숫자 (Snowflake, TSID 등)
·
dev zone/database
# 0. 들어가며 UUID는 랜덤성이 강해서 데이터베이스 성능에 악영향을 줄 수 있습니다. 그리고 이를 해결하기 위해 정렬 가능한 숫자로 된 유니크한 ID를 생성하는 방식이 등장했습니다. 이전의 문자열과 다른점은 숫자타입으로 좀 더 사용성을 높였습니다. 대표적인 방법으로 Snowflake, TSID, FlakeID 등이 있으며, 이 방식은 시간 기반 정렬이 가능하고, 중복 없는 고유한 ID를 제공합니다.   # 1. Snowflake 알고리즘의 원리 (타임스탬프 + 머신 ID + 시퀀스)  Snowflake는 Twitter에서 개발한 유니크한 정렬 숫자 ID 생성 방식입니다. ID를 64비트 숫자로 표현하여 UUID보다 작고, 정렬이 가능합니다. 앞부분은 시간 정보를 포함하므로 ID가 시간 순서대로 정렬..
[Primary Key 생성 전략] #5. 유니크 정렬 문자열 (정렬 가능한 랜덤 ID)
·
dev zone/database
# 0. 들어가며 UUID는 유니크한 값을 생성하는 데 탁월하지만, 랜덤성이 너무 강해서 데이터베이스 성능에 악영향을 줄 수 있습니다. 이를 보완하기 위해 등장한 것이 유니크 정렬 문자열(정렬 가능한 랜덤 ID) 방식입니다.    # 1. 일반적인 UUID보다 나은 이유  UUID(특히 UUIDv4)는 완전한 랜덤 값이라서 저번 글에서도 다뤘지만 다음과 같은 문제점이 있습니다.  1. 정렬이 불가능해서 인덱스 성능 저하UUID는 무작위 값이므로 새로운 데이터가 들어올 때마다 기존 데이터 사이에 삽입됩니다.결과적으로 인덱스가 자주 조각화(Fragementation)되어 성능 저하 발생합니다.반면, 정렬된 ID를 사용하면 B+트리 인덱스에서 삽입/검색 속도가 향상됩니다 2. 가독성이 나쁨UUID(550e84..
[Primary Key 생성 전략] #4. 조합 키 (Composite Key)
·
dev zone/database
# 0. 들어가며조합 키(Composite Key)는 하나의 열(Column) 대신 두 개 이상의 열을 조합하여 기본 키(Primary Key)로 사용하는 방식입니다. 예를 들어, 학생 번호 + 수업 코드 같은 조합을 활용하면, 각 학생이 여러 개의 수업을 듣더라도 중복되지 않는 유일한 키를 만들 수 있습니다.   # 1. 조합 키(Composite Key)의 개념과 활용 사례  조합 키(Composite Key)는 두 개 이상의 컬럼을 결합하여 유일한 키를 만드는 방식입니다. 기존의 단일 Primary Key(예: id)와 다르게, 여러 개의 컬럼을 묶어 Primary Key를 설정할 수 있습니다.  📌 예제 코드 (MySQL)CREATE TABLE student_courses ( student..
[Primary Key 생성 전략] #3. UUID (전역적으로 유니크한 식별자)
·
dev zone/database
# 0. 들어가며 UUID(Universally Unique Identifier)는 전 세계에서 유일한 값을 보장하는 식별자입니다. UUID는 Auto Increment의 한계를 해결할 수 있는 대안이지만, 몇 가지 단점과 성능 이슈가 있습니다. 이번 글에서는 UUID의 작동 원리부터 해결 방법까지 구체적으로 작성해보겠습니다.    # 1. UUID의 작동 원리 UUID는 128비트(16바이트) 크기의 고유한 식별자입니다. UUID는 내부적으로 16진수(0-9, a-f) 32자리 + 하이픈(-) 4개로 이루어져 있습니다. 이 값은 충돌 없이 유일하게 생성되는 값이기에 서버가 여러 개라도, 중복될 가능성이 극히 낮습니다. 📌 예제 코드 (MySQL) CREATE TABLE users ( id CHA..
[Primary Key 생성 전략] #2. DB Auto Increment (자동 증가 번호)
·
dev zone/database
# 0. 들어가며DB Auto Increment는 가장 단순하고 직관적인 Primary Key 생성 방식 중 하나입니다. 하지만 분산 환경에서는 문제가 발생할 수 있으며, 보안 취약점도 존재합니다.   # 1. DB Auto Increment의 기본적인 작동 방식 Auto Increment는 기본 키(Primary Key)로 숫자를 자동 증가시키는 기능입니다. 즉, 새로운 데이터가 추가될 때마다 기존 값보다 1 증가된 숫자가 자동으로 입력됩니다.  📌 예제 코드 (MySQL) CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, -- 자동 증가하는 ID name VARCHAR(255) NOT NULL);  📌 DBMS별 Auto Increme..
[Primary Key 생성 전략] #1. Primary Key 생성 전략 왜 중요한가?
·
dev zone/database
# 1 들어가며 데이터베이스에서 Primary Key(기본키)는 테이블의 각 행(Row)를 식별하게 해줍니다. 즉 Primary Key가 없다면 데이터를 정확하게 구분할 수 없고, 데이터 무결성을 보장하기 어려워집니다. 좀 더 쉽게 말하면, 각 데이터를 식별하는 '주민등록번호'같은 역할을 한다고 볼 수 있습니다.  Primary Key를 어떤 방식으로 생성하느냐에 따라 성능, 확장성, 보안성, 데이터 정합성이 크게 달라질 수 있습니다. 따라서 올바른 Primary Key 생성 전략을 선택하는 것은 데이터베이스 설계에서 필수적인 과정입니다. 잘 설계된 기본키는 빠른 조회, 데이터 무결성 보장, 확장성 있는 시스템 구축에 필수적입니다. 그러므로 Primary Key를 생성할 때는 데이터 베이스 환경, 애플리..
[무료 노션 템플릿 공유] 연말 결산 페이지 : 한 해를 돌아보며
·
voco zone/notion
벌써 2024년의 마지막 날입니다. 저는 보통 한 해의 마지막 날에는 그 한 해를 돌아보면서 결산 페이지를 작성합니다.이렇게 작성된 결산 페이지는 나중에 보게 되면 한 해를 대략적으로 떠올리기에도 좋은 수단이 됩니다. 내년부터는 노션을 아주 열심히 사용하려고 마음먹었기에,결산 페이지 역시 노션으로 만들었으며, 제 페이지를 만드는 김에 템플릿을 공유하기로 하였습니다.      1. 기본 홈 화면 기본 페이지 홈 화면입니다.  왼쪽은 메인 구역으로 한 해를 마무리할 수 있는 질문들과 그에 대한 답변들을 한 눈에 확인 할 수 있도록 구성하였습니다. 현재 페이지의 답변은 예시를 위해 임의로 작성한 임시 답변입니다. 그리고 그에 대한 답변과 관련된 사진을 추가할 수 있도록 파일 속성을 추가하였습니다. 현재는 그냥..
voco choe
'분류 전체보기' 카테고리의 글 목록