개요ORM(Object-Relational Mapping)은 객체 지향 프로그래밍 언어의 객체와 관계형 데이터베이스의 데이터를 매핑해주는 기술이를 통해 개발자는 데이터베이스 테이블 대신 자바 객체로 비즈니스 로직을 구현할 수 있으며, SQL 대신 객체 지향 코드로 데이터 작업을 수행할 수 있음장점생산성 향상반복적인 SQL 작성 없이 객체 조작으로 개발 가능유지보수성 개선데이터베이스와 비즈니스 로직이 분리되어 요구사항 변경 시 유연하게 대응데이터베이스 독립성SQL 추상화 계층을 제공하여 특정 벤더에 종속되지 않는 코드를 작성할 수 있음단점성능 이슈복잡한 쿼리나 대용량 데이터 처리 시 직접 SQL을 사용한 최적화보다 한계가 있을 수 있음러닝 커브ORM 프레임워크의 내부 동작(영속성 관리, 캐싱, 연관관계 매..
서론현대의 대규모 서비스와 클라우드 환경에서는 분산 시스템과 샤딩(Sharding) 기술이 필수적분산 시스템은 여러 대의 서버가 하나의 시스템처럼 협력하여 높은 확장성과 내결함성을 제공하며, 샤딩은 거대한 데이터를 여러 서버에 분산 저장하여 성능 개선과 관리 효율성을 높임분산 시스템 (Distributed Systems)정의여러 대의 노드(서버)가 네트워크를 통해 협력하여 단일 시스템처럼 동작하는 구조주요 특징확장성 (Scalability)노드 추가를 통해 성능과 용량을 확장 가능내결함성 (Fault Tolerance) 일부 노드 장애에도 전체 시스템은 정상 운영자원 공유 (Resource Sharing)분산된 자원(데이터, 컴퓨팅 파워)을 효율적으로 활용투명성 (Transparency)사용자 입장에서는..
B-tree(Balanced Tree)란?정의B-tree(균형 다진법 트리)는 대용량 데이터를 빠르게 검색, 삽입, 삭제할 수 있도록 설계된 자료구조주요 특징균형성모든 리프 노드가 동일한 깊이에 위치해 최악의 경우에도 O(log n)의 시간 복잡도를 유지다진 트리 구조한 노드가 여러 개의 자식 노드를 가질 수 있어, 한 번의 디스크 I/O로 많은 데이터를 읽어들일 수 있음키와 포인터각 내부 노드는 여러 개의 키와 자식 노드에 대한 포인터를 저장하며, 리프 노드는 실제 데이터(또는 데이터 레코드의 포인터)를 저장Fan-out한 노드에 저장할 수 있는 키의 수(또는 차수)가 높을수록 트리의 높이가 낮아지고, 결과적으로 디스크 접근 횟수가 줄어듬B+ tree란?정의B+ tree는 B-tree의 변형으로, 모든..
트랜잭션의 개요 및 필요성트랜잭션(Transaction)은 데이터베이스에서 하나의 작업 단위를 의미하며, 여러 SQL 문장이 하나의 논리적 단위로 묶여 실행이로 인해 작업이 전부 성공하거나 모두 실패(rollback)하도록 처리하여 데이터 무결성과 일관성을 유지할 수 있음필요성데이터 무결성 보장여러 작업이 모두 성공하거나 모두 실패하도록 처리하여 데이터 불일치를 방지일관성 유지 은행 계좌 이체, 주문 처리 등 여러 작업이 동시에 수행될 때 중간 상태로 인한 오류를 막음오류 복구 작업 도중 예외 발생 시 전체 트랜잭션을 롤백하여 데이터베이스를 안정적인 상태로 복원할 수 있음ACID 원칙과 트랜잭션 제어ACID 원칙Atomicity (원자성)트랜잭션 내 모든 작업은 하나의 단위로 처리되어, 일부만 실행되는 ..
SQL의 이해와 필요성SQL(Structured Query Language)은 관계형 데이터베이스와 소통하기 위한 표준 언어기본적인 데이터 조회, 입력, 수정, 삭제(CRUD) 작업뿐 아니라 JOIN, 서브쿼리, 그룹핑, 정렬 등의 기능을 통해 복잡한 데이터 처리 및 분석을 지원또한, 인덱스와 성능 최적화 기법, 고급 기능(윈도우 함수, 뷰, 저장 프로시저, 트리거 등)을 적절히 활용하면 대규모 시스템에서도 안정적이고 효율적인 데이터 관리를 할 수 있음기본 CRUD 명령어SELECT정의 - 데이터베이스 테이블에서 원하는 데이터를 조회예시 코드-- 모든 컬럼 조회SELECT * FROM Employees;-- 특정 컬럼과 조건을 통한 조회SELECT EmployeeID, FirstName, LastName..
데이터 모델링의 필요성효과적인 데이터 모델링 및 설계는 소프트웨어 개발의 성공적인 기반을 마련잘 설계된 데이터 모델은 시스템의 확장성, 유지보수성, 성능에 큰 영향을 미치며, 오류를 최소화하고 개발 및 운영 비용을 절감할 수 있게 도와줌실무 적용 사례전자상거래 시스템: 상품, 주문, 사용자 정보를 체계적으로 관리하기 위해 ERD를 기반으로 테이블 간의 관계를 명확히 설계하고 정규화를 적용하여 데이터 무결성을 보장금융 시스템: 트랜잭션 처리와 복잡한 관계를 가진 데이터를 효율적으로 처리하기 위해 정교한 데이터 모델과 스키마 설계가 요구데이터 모델링(Data Modeling)정의현실 세계의 데이터를 추상화하여 엔티티(Entity), 속성(Attribute), 관계(Relationship)로 표현하는 작업예를..
I/O 모델의 필요성효율적인 데이터 교환I/O 모델은 CPU와 외부 장치(디스크, 네트워크, 기타 주변 장치) 간의 데이터 전송 방식을 정의시스템 자원의 효율적 사용과 성능 최적화를 도모시스템 성능 향상잘 설계된 I/O 모델은 불필요한 대기 시간을 줄이고 동시 작업을 가능하게 하여 전체 시스템 성능을 개선응용 프로그램 확장성비동기 I/O나 이벤트 기반 I/O는 대규모 웹 서버, 실시간 통신 서비스 등에서 높은 처리량과 낮은 지연 시간을 보장하는 핵심 기술로 활용I/O 모델의 기본 개념I/O 모델이란?정의프로그램이 입출력 작업(데이터 읽기/쓰기)을 처리하는 방식을 의미주요 요소동기(Synchronous)와 비동기(Asynchronous), 블로킹(Blocking)과 논블로킹(Non-blocking), 그리..
파일 시스템의 필요성데이터 조직 및 관리파일 시스템은 하드 디스크, SSD 등 저장 장치에 데이터를 파일 단위로 저장하고 관리하는 계층적 구조를 제공이를 통해 사용자는 원하는 파일에 빠르게 접근 가능효율적인 접근 및 보안파일 생성, 수정, 삭제, 검색 등의 작업을 쉽게 수행할 수 있으며, 접근 제어나 권한 설정을 통해 데이터 보안과 무결성을 확보시스템 자원 최적화운영체제는 파일 시스템을 기반으로 디스크 공간 할당, 캐싱, 저널링 등의 기법을 활용하여 입출력 성능과 시스템 안정성을 높임실무 적용 사례예를 들어, 대규모 서버 환경에서는 파일 시스템의 효율적인 디스크 스케줄링과 캐싱 기법을 통해 웹 서비스의 응답 속도를 개선하는 사례가 있음파일 시스템의 기본 개념파일과 디렉터리파일(File)텍스트, 이미지, ..
메모리 관리의 필요성1) 단순 메모리 관리 기법의 한계초기 운영체제에서는 단순한 연속 메모리 할당 방식을 사용했지만, 이는 단편화(Fragmentation) 문제를 유발하고, 프로그램이 커질 경우 메모리 할당이 어려워지는 문제가 있음2) 가상 메모리(Virtual Memory) 개념 도입현대 운영체제에서는 가상 메모리를 사용하여 실제 물리적 메모리(RAM)보다 큰 프로그램을 실행할 수 있도록 함가상 메모리는 페이지(Page) 단위로 관리되며, 프로세스가 필요할 때만 실제 물리적 메모리에 로드됨단편화단편화(Fragmentation)는 운영체제가 메모리를 효율적으로 관리하는 과정에서 사용할 수 없는 작은 메모리 조각들이 발생하는 문제를 의미단편화가 심해지면 메모리가 충분히 존재함에도 불구하고 새로운 프로세스..
CPU 스케줄링 알고리즘CPU 스케줄링은 운영체제가 프로세스를 효과적으로 처리하기 위해 CPU를 각 프로세스에 할당하는 메커니즘시스템 성능, 처리율(Throughput), 응답 시간(Response Time), 대기 시간(Waiting Time) 등을 최적화CPU 스케줄링의 기본 목표공정성(Fairness)모든 프로세스가 CPU를 공평하게 사용효율성(Efficiency)CPU가 최대한 사용되도록 유지반환 시간 최소화(Turnaround Time)프로세스가 완료되는 데 걸리는 시간을 최소화대기 시간 최소화(Waiting Time)프로세스가 CPU를 기다리는 시간을 줄임응답 시간 최소화(Response Time)사용자와 상호작용이 필요한 프로세스의 응답 시간 최소화주요 CPU 스케줄링 알고리즘비선점형(Non..
- Total
- Today
- Yesterday
- 해시 테이블
- 우아한 테크코스
- 백트래킹
- 분할 정복
- 자료구조
- CS
- 자바
- 알고리즘
- 그리디 알고리즘
- 동적 프로그래밍
- db
- 데이터베이스
- 프리코스
- k8
- Spring
- devops
- Spring Boot
- Java
- restful api
- B+Tree
- 탐색 알고리즘
- 운영체제
- 스프링
- i/o모델
- MSA
- HTTP
- CPU 스케줄링
- 우선순위 큐
- 우테코
- TRIE
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |