DB15 파티셔닝의 정의와 예시, 고려해야 하는 시점 파티셔닝 예시파티셔닝은 하나의 도메인(카카오톡 발송 내역)을 여러 테이블에 나누어 저장하는 것을 말합니다.카카오톡 발송 내역 파티셔닝 예시1. 파티셔닝 전 (단일 테이블)-- 파티셔닝 전: 모든 발송 내역이 하나의 테이블에 저장CREATE TABLE kakao_messages ( id BIGINT PRIMARY KEY, user_id BIGINT, template_id VARCHAR(50), phone_number VARCHAR(20), content TEXT, status VARCHAR(20), sent_at TIMESTAMP, delivered_at TIMESTAMP, created_at TIMESTAMP);2. 파티셔닝 후 (여러 테이블로 분할)시간 .. DB 2025. 8. 2. 스플릿 브레인의 정의와 발생 시나리오 정리 스플릿 브레인(Split Brain)이란?스플릿 브레인은 분산 시스템에서 네트워크 분할이나 노드 장애로 인해 두 개 이상의 노드가 각각 자신이 리더라고 인식하는 상황을 말합니다.발생 시나리오1. 네트워크 분할(Network Partition) 시나리오[데이터센터 A] ←→ [데이터센터 B] ↑ ↑ 리더 A 팔로워 B시나리오 1: 네트워크 연결 끊김[데이터센터 A] X [데이터센터 B] ↑ ↑ 리더 A 팔로워 B발생 과정:초기 상태: A가 리더, B가 팔로워네트워크 분할: A와 B 간 통신 불가타임아웃 발생:A는 B의 응답을 받지 못해 B가 죽었다고 판단B는 A의 .. DB 2025. 8. 2. [데이터 중심 어플리케이션 설계하기] 2과. 데이터 모델과 질의 언어 2과. 데이터 모델과 질의 언어참고문서 : 데이터 중심 애플리케이션 설계(마틴 클레프만, 위키북스)1. 데이터 모델이란 무엇인가?데이터 모델은 우리가 어떤 문제를 어떻게 해결할지, 그리고 소프트웨어가 할 수 있는 일과 없는 일에까지 영향을 미친다.예를 들어, 어떤 연산은 빠르고, 어떤 연산은 느릴 수 있다.데이터 모델을 이해하는 것은 단순히 저장 구조를 아는 것 이상으로, 시스템의 한계와 가능성을 파악하는 데 중요하다.데이터 모델의 큰 범주관계형 모델문서 모델그래프 모델2. 관계형 모델과 문서 모델2-1. 관계형 모델데이터를 관계(relation, 테이블)로 구성각 관계는 순서 없는 튜플(tuple, 행)의 모음SQL을 통해 정규화된 구조로 데이터를 저장하고 질의정규화와 조인(join)을 통해 데이터 중.. DB 2025. 7. 13. [데이터 중심 어플리케이션 설계하기] 1과. 신뢰 할 수 있고 확장 가능 하며 유지 보수 하기 쉬운 애플리케이션 1과. 신뢰 할 수 있고 확장 가능 하며 유지 보수 하기 쉬운 애플리케이션1. 데이터 시스템어플리케이션은 계산 중심(compute-intensive)보다 데이터 중심(data-intensive)이 많다.계산에 쓰이는 CPU보다는 데이터 양, 데이터 복잡도 등이 더 문제다.데이터 중심 어플리케이션이 공통으로 필요로 할수 있는 기능들 : 데이터 시스템데이터베이스 : 영속성 스토리지캐시 : 읽기 속도 향상, 값 비싼 수행 결과 기억검색 색인 : 사용자가 키워드로 데이터를 검색하거나 다양한 방법으로 필터링할 수 있게 제공스트림 처리 : 비동기 처리를 위해 다른 프로세스로 메세지 보내기일괄(batch) 처리 : 대량의 누적된 데이터를 주기 분석1) 데이터 시스템의 범주들데이터베이스, 메세지큐, 캐시 등최근에는 이.. DB 2025. 7. 13. 6/26 DB Connection Pool 고갈 장애 분석 및 해결 방안 리포트 DB 장애 분석 및 해결 방안 리포트문제 인지 시기, 26일 9:14분 최초 보고서버 로그Knex: Timeout acquiring a connection. The pool is probably fullCommerce Web API 서버에서는 6월 26일 00시부터 27일 00시까지 하루 동안, Knex: Timeout acquiring a connection. The pool is probably full 오류가 발생했습니다. 이로 인해, 위 슬랙에 보고된 것처럼 플랫폼 내 멤버쉽 가입, 취소/교환/반품이 제대로 이뤄지지 않는 문제가 발생했습니다.발생 원인해당 글에서는 문제의 근본 원인을 짚어보고, 즉각적인 조치(단기)와 안정적인 시스템을 위한 장기적인 개선 방안을 제시합니다. 또한, Neon DB의 .. DB 2025. 6. 27. [Tool] pgAdmin4 자주 사용하는 키보드 단축키 모음 Query Tool¶When using the Query Tool, the following shortcuts are available.Shortcut (Windows/Linux)Shortcut (Mac)FunctionCtrl + oCmd + oOpen fileCtrl + sCmd + sSave fileAlt + Shift + nOption + Shift + nEdit optionsAlt + Shift + fOption + Shift + fSort/FilterAlt + Shift + iOption + Shift + iFilter optionsAlt + Shift + qOption + Shift + qCancel queryF5F5Execute ScriptAlt + Shift + xOption + Shift.. DB 2025. 5. 21. 7가지 핵심 질문으로 알아보는 개발자를 위한 Redis 활용법 서론위 글은 최근 읽었던 개발자를 위한 Redis란 책을 요약 겸 복습하기 위해 정리한 글입니다. 핵심요약1. Redis란 무엇이고 어떤 원리로 동작할까?Redis란 무엇이며, 왜 사용하는가?Redis는 어떤 데이터 구조를 지원하는가?Redis의 주요 사용 사례는 무엇인가?2. Redis는 NoSQL인가? 그렇다면 어떤 데이터 구조를 제공하는가?String, List, Set, Sorted Set, Hash 등의 데이터 타입별 특징과 사용 예시는?Bitmaps, HyperLogLog, Streams 등 고급 데이터 타입은 언제 사용하면 좋은가?TTL(Time to Live) 및 Expire 기능을 어떻게 활용할 수 있는가?3. Redis를 캐시, 세션스토어, 메세지 브로커로 쓸 때 알아야 할 것들캐시(C.. DB 2025. 3. 14. 11가지 핵심 질문으로 알아보는 개발자를 위한 MySQL 서론위 글은 최근 읽었던 개발자를 위한 Redis란 책을 요약 겸 복습하기 위해 정리한 글입니다. 참고로 최신 버전인 8.0 버전이 아닌, 5.7 버전 기준으로 작성되었음을 말씀 드립니다.핵심요약MySQL 기본 개념관계형 데이터베이스(RDBMS)란 무엇이며, MySQL은 어떤 특징을 가지는가?MySQL과 다른 RDBMS(예: PostgreSQL, Oracle)와의 차이점은 무엇인가?MySQL의 주요 데이터 타입(정수, 문자열, 날짜 등)은 어떤 것들이 있고, 언제 어떤 타입을 선택해야 하는가?MySQL의 기본적인 SQL 문법(SELECT, INSERT, UPDATE, DELETE)은 어떻게 동작하는가?인덱스(Index)와 성능 최적화인덱스란 무엇이며, 어떤 원리로 데이터 조회 성능을 향상시키는가?B-Tr.. DB 2025. 3. 7. [Index] 플랫폼 내 페이지네이션 방식에 대한 개선사항 제안 게시글 목록 개편2024년 4월, 월부 커뮤니티에서는 ‘잘 보여주기’를 위해, 더 많은 컨텐츠를 한 화면 안에서 보여주기 위해 썸네일을 제외하여 보여주는 방식으로 변경되었습니다. 기존에는 무한스크롤 방식으로 조회되던게, 페이지네이션 UI를 통한 검색으로 변경되었습니다. 이와 더불어, 마지막 페이지 조회가 가능하도록 변경되었습니다. 변경된 조회 방식으로 인해, 발생된 문제점과 단/장기 개선사항에 대해서 정리하여 보였습니다.현재 월부의 페이지네이션 방식 : LIMIT OFFSET현재 플랫폼의 페이지네이션 방식은 LIMIT OFFSET 방식을 사용하고 있습니다. 이 방식은 간단하고 구현이 쉬운 장점이 있지만, 대규모 데이터셋에서 성능 저하와 일관성 문제를 일으킬 수 있습니다.LIMIT OFFSET의 성능 저하.. DB/MySQL 2025. 1. 18. 윈도우함수(Window Function)로 중복 닉네임 처리하기 서론 (들어가기 앞서)기획자님 : 상용 DB에 중복 닉네임이 존재합니다. 중복된 닉네임을 뒤에 가입한 순서대로 숫자 001, 002, 003 등으로 붙여주세요.얼마 전, 회사에서 중복 닉네임을 일괄 변경하는 작업에 대한 요청이 있었습니다. 이미 기존에 중복된 닉네임에 가입 순서를 기준으로 001, 002, 003 뒤에 숫자를 붙여서 수정하는 것이 요구사항이었습니다. 물론 실제로는 이것보다 친절하고 자세하게 설명해주셨죠. 순간 고민이 됐습니다. 쿼리로 한 번에 처리할 순 없을까? 🤔 찾아 보니, 윈도우 함수 내 순위함수 기능을 사용하면 쉽게 값을 정해줄 수 있었습니다 🥹 그래서 이번 시간에는 윈도우함수의 순위함수를 사용하여, 위 요구사항에 만족하는 쿼리를 작성하는 방법에 대해 함께 알아보도록 하겠습니다.. DB 2024. 9. 27. [MySQL] 쿼리 튜닝을 위한 인덱스 활용의 모든 것 오늘은 백엔드 API 성능 개선을 위해 핵심적인 요소 중 하나인 인덱스를 통한 쿼리 튜닝 방법에 대하여, 학습한 내용들을 정리해보겠습니다. 먼저 기본적인 내용부터 다뤄보겠습니다.인덱스인덱스의 정의여러분은 색인에 대해 들어보셨나요? 색인(index)이란 책이나 학술서, 연구 재료가 될 서적의 내용 중에서 중요한 항목, 술어, 인명, 지명 등을 뽑아 본문 어느 쪽에 있는지 쉽게 찾아볼 수 있도록 쪽 번호와 함께 별도로 배열하여 놓은 목록입니다.인덱스란 마치 책의 색인(index)처럼, 데이터를 빠르게 찾기 위해 데이터가 위치한 위치를 나열한 별도의 데이터 구조입니다. 보통 데이터베이스 테이블의 특정 열(Column)에 대한 검색 속도를 향상시키기 위해 사용하죠.인덱스의 종류이러한 인덱스에도 여러 종류가 있습.. DB/MySQL 2024. 7. 4. [MySQL] Online DDL 활용 방법 문제상황MySQL에서 90만 건이 넘는 데이터가 적재된 테이블에 칼럼을 추가하려고 했다. 보통 데이터가 많지 않으면 1초 이내로 완료된다. 그런데, 데이터 양이 많아서 DDL 반영까지 10분 가량 시간이 소요됐다. 문제는 그 동안, 테이블에 락이 걸려, 테이블에 대한 쓰기 작업이 일시적으로 중단되는 현상이 발생됐다.락이 걸리는 이유락이 걸리는 이유는 뭘까? 데이터 일관성을 보장하기 위함이다. 테이블의 스키마를 변경하는 작업은 데이터베이스의 구조를 수정하는 것으로, 이 과정에서 테이블에 대한 읽기 및 쓰기 작업을 일시적으로 중지하여 데이터 일관성을 유지한다.스키마 변경 작업이 완료될 때까지 다른 작업들이 해당 테이블에 접근하지 못하도록 하는 것이다. 이는 동시성 문제를 방지하고 데이터베이스의 일관성을 보장.. DB/MySQL 2024. 5. 6. 이전 1 2 다음 반응형