분류 전체보기 2649

[6장] 스키마 설계와 데이터 모델링

서론현대 데이터베이스 관리에서 데이터 구조화 방식의 선택은 시스템의 성능과 확장성을 결정짓는 중추적인 요소몽고DB와 같은 현대적 데이터베이스의 도입으로, 데이터 관리 전략의 패러다임이 크게 변화하고 있고 특히 유연성과 확장성을 고려한 데이터 구조화의 중요성이 더욱 주목받고 있음 관계형 데이터베이스를 위한 스키마 설계관계형 데이터베이스의 핵심은 데이터의 신뢰성 보장과 시스템의 효율적 운영이며 이를 위한 두 가지 기본 원칙을 살펴보면 다음과 같음데이터 이상 현상 방지데이터 중복 감소 RDBMS에서 데이터 이상 현상은 데이터 수정 작업 과정에서 발생하는 정보의 불일치를 의미하며 이는 주로 데이터의 삽입, 삭제, 갱신과 같은 작업을 수행할 때 발생할 수 있음데이터 중복성은 동일한 정보가 데이터베이스의 여러 테이..

[5장] CRUD 작업과 기본 쿼리

몽고DB 기본 데이터 작업몽고DB 문서를 수정하기 위해서는 서버 연결, 관련 문서 조회, 지정된 속성 조정, 수정된 데이터의 데이터베이스 재전송 과정이 필요함각각의 CRUD 작업은 다음고 ㅏ같은 고유한 목적을 가짐생성 작업은 몽고DB 데이터베이스에 새로운 문서를 추가하는 데 사용읽기 작업은 데잉터베이스의 문서를 조회하는 데 사용수정 작업은 데이터베이스에 존재하는 문서를 수정하는 데 사용삭제 작업은 데이터베이스의 문서를 제거하는 데 사용 1. mongosh를 이용한 CRUD 작업 수행mongosh는 관계형 데이터베이스의 관리 콘솔과 같은 역할을 수행 위 예제를 통해 다음과 같은 주요 사항들을 확인 가능updateOne() 메서드에서 사용된 JSON 문서 { isbn: '101' }는 수정할 특정 문서를..

[4장] 몽고DB 연결

연결 방법몽고DB는 데이터베이스 연결을 위해 크게 두 가지 방식을 제공드라이버를 직접 사용하는 방식ODM 계층을 활용하는 방식 ODM은 모델 객체와 데이터베이스 문서 사이의 매핑을 효율적으로 처리하여 개발자의 작업을 편리하게 해 줌몽고DB는 다양한 프로그래밍 언어를 지원하지만 해당 장에서는 널리 사용되는 네 가지 언어인 PHP, 루비, Node.js, 파이썬에 초점을 맞춤 1. 루비를 이용한 몽고DB 연결루비는 몽고DB가 지원하는 주요 언어 중 하나로 안정적인 성능의 공식 드라이버를 제공함로컬 몽고DB 호스트에 연결하기 위한 기본 단계는 다음과 같음드라이버를 Gemfile에 추가하여 설치데이터베이스에 연결 (실제 환경에서는 복제본 세트에 연결)client_host 서버는 클라이언트 드라이버의 시드 서버 ..

[3장] 개발자 도구

서론몽고DB와 그 생태계의 잠재력을 충분히 활용하기 위해서는 몽고DB가 제공하는 다양한 개발자 도구에 관한 숙련도가 필수적몽고DB는 오랫동안 개발자들에게 최상의 도구를 제공하여 몽고DB 클러스터와 데이터를 효과적으로 다룰 수 있도록 지원해 옴2011년 몽고DB 1.0 버전 출시 이후 2년 만에 10gen은 몽고DB 관리 서비스를 출시했으며, 이는 후에 Ops 매니저로 발전했고 시스템 관리와 모니터링을 위한 핵심 포털 임무를 수행했음초기 릴리즈부터 몽고DB 생태계의 필수 요소였던 관리 도구는 몽고DB의 중요성을 잘 보여주며, DB 시스템 아키텍처의 발전과 함께 개발자 도구 제공이라는 두 가지 목표를 추구했음 개발 도구 소개몽고DB 도구들은 효율적인 데이터베이스 관리와 쿼리 최적화를 위해 설계되었으며, 생산..

[2장] 몽고DB 아키텍처

서론복제 기술은 몽고DB의 분산 아키텍처를 구성하는 근간이 되는 요소이며 동일한 데이터를 여러 서버에 분산하여 저장함으로써 시스템의 접근성을 크게 향상함예기치 않은 장애 상황에서도 중단 없는 안정적인 서비스를 제공할 수 있게 하여, 시스템의 신뢰성과 가용성을 보장 샤딩은 데이터를 여러 서버에 효율적으로 분산하는 수평적 확장 전략서비스의 규모가 확대되고 처리해야 할 데이터의 양이 급증하는 상황에서, 샤딩 기술은 다수의 서버를 활용하여 읽기와 쓰기 작업을 원활하게 처리할 수 있게 함시스템의 처리 능력을 효과적으로 확장하고 대규모 데이터 환경에서도 최적의 성능을 유지할 수 있는 비결 복제와 샤딩복제는 데이터를 여러 위치에 중복으로 저장하여 시스템의 안정성과 데이터 접근성을 높이는 기술샤딩은 대규모 데이터베이스..

LLM 기반 GitLab Merge Request 자동 리뷰 PoC

도입 배경현재 업무 프로세스 상 새로운 기능을 개발할 때 feature 브랜치를 생성하여 작업을 진행한 뒤, main 브랜치로의 병합(Merge Request)을 요청하는 표준적인 협업 프로세스를 따르고 있고 이 과정에서 리뷰어는 Merge Request가 생성될 때마다 변경된 코드와 커밋된 파일을 꼼꼼하게 확인하고, 직접 리뷰 후 승인을 진행해야 함그러나 실제 업무 현장에서는 리뷰어의 업무가 몰리거나 여러 건의 Merge Request가 동시에 올라올 경우, 리뷰에 충분한 시간을 할애하기 어렵다는 문제가 자주 발생특히 한 번에 커밋된 파일이나 코드 변경량이 많을 때에는, 리뷰어가 코드 전체를 세세하게 확인하기보다는 일정 부분에 대해 신뢰에 기반하여 빠르게 승인하는 사례가 종종 생겼고, 이로 인해 코드 ..

리서치 2025.06.26

백준 2025 서강대학교 K512컵

A. 백준 33990번 3대 512단순 구현 B. 백준 33991번 전철 통학민수가 역 i에 걸어가서 도착하는 데 걸리는 시간은 맨해튼 거리 공식에 따라 |X − X_i∣+ |Y −Y_i| 분역 i의 전철은 0, Ti, 2Ti, 3Ti,…분에 도착하므로, 민수가 도착 시간 Ai​분에 가장 가까우면서도 그 이후 도착하는 전철 시각 K_i는 ⌈T_i / A_i​​⌉ * T_i​세 개의 역에 대해 각각 이 값을 계산한 뒤 min⁡{K1, K2, K3}이 가장 빠른 탑승 시간 C. 백준 33992번 사막 탐험두 가지 방법 중 소모 체력이 더 작은 쪽이 답 직접 경로: 원과 선분이 교차한다면 “전체 거리 – 원 내부 구간 길이”만큼 소모하고, 교차하지 않으면 전체 거리만큼 소모 오아시스 우회 경로: A에서 ..

알고리즘/BOJ 2025.06.21

[Hibernate/JPA] 캐싱

1. 데이터베이스 캐싱 1.1 캐싱의 계층 구조캐싱은 데이터베이스 성능 최적화의 핵심DB → OS → 애플리케이션 → (ORM) → 2차 캐시 → 1차 캐시 등 여러 계층에 걸쳐 존재디스크 접근을 최소화하고, DB/OS/애플리케이션 메모리에서 최대한 데이터를 제공하는 것이 핵심 1.2 캐시 동기화 전략 가. Cache-aside애플리케이션이 캐시에서 먼저 데이터를 찾고, 없으면 DB에서 조회 후 캐시에 넣음쓰기는 데이터베이스와 캐시를 모두 갱신해야 함 (동기화 주의 필요) 나. Read-through캐시에 데이터가 없을 때, 캐시 시스템이 DB에서 자동으로 데이터 조회 및 캐시 삽입애플리케이션에서는 항상 캐시만 조회 다. Write-through쓰기 작업이 캐시와 DB에 동시에 적용됨캐시 일관성 유..

DB/JPA 2025.06.11

[Hibernate/JPA] 트랜잭션과 동시성 제어 패턴

서론 실제 금융/암호화폐/전자지갑 서비스에서 동시성 결함이나 트랜잭션 제어 미비로 인해 막대한 금액의 해킹 피해가 발생할 수 있으므로 보안과 데이터 무결성은 중요한 개념i.g. FlexCoin, Poloniex 해킹 사례여러 건의 출금을 거의 동시에 요청 → 음수 잔고 허용, 데이터베이스에 잘못된 레코드가 삽입되었고 이로 인해 시스템 무결성이 깨지고 공격자는 훨씬 더 많은 금액을 탈취함 트랜잭션 보장은 매우 중요한 개념구글 Spanner 등 신세대 DBMS조차 "트랜잭션을 포기하는 것보다, 필요할 때 성능 병목을 해결하는 것이 현명하다"라고 명시MongoDB 등도 결국 ACID 보장 기능을 추가 (4.0+ 버전부터 적용) 1. ACID와 트랜잭션 동시성 제어모든 DB 작업은 트랜잭션 내에서 진행됨Auto..

DB/JPA 2025.06.09

[Hibernate/JPA] Fetching

1. JDBC Statement Fetch Size 1.1 Statement Fetch Size란?JDBC Statement의 ResultSet은 DB 커서로, 한 번에 "몇 개의 행(row)"을 클라이언트로 가져올지 결정하는 값이 fetch sizestatement.setFetchSize(n)와 같이 설정하면n 개씩 데이터 fetch 하고네트워크 round-trip 횟수와 메모리 사용량에 직접적 영향을 끼침 1.2 DBMS별 기본 fetch size와 특징 가. Oracledefault fetch size: 1010g, 11g 드라이버는 최대 사이즈로 버퍼 미리 할당 (VARCHAR2(4000) 컬럼은 4000바이트)12c부터는 실제 데이터 크기만큼만 할당 (메모리 효율 ↑)Statement 캐싱 사용..

DB/JPA 2025.06.09