문제 상황 댓글이 일대다 매핑 된 게시글들을 페이지 단위로 불러오는 쿼리를 실행하면 OOM(메모리 초과) 문제가 발생하는 것을 확인했다. 문제가 되는 엔티티와 쿼리문은 다음과 같다. 게시글 엔티티 @Builder @Getter @AllArgsConstructor @NoArgsConstructor @Entity public class ...
[CS] DB: 정규화란?
정규화 정규화란, 관계형 데이터베이스의 설계에서 중복을 최소화하고, 독립적인 관계를 가진 속성을 분리시켜 데이터를 구조화하는 작업을 말한다. 정규화의 기본 목표는 관련이 없는 함수 종속성은 별개의 릴레이션으로 표현하는 것이다. 함수적 종속이란, 어떤 릴레이션 R의 속성 X와 Y에 대해, X의 값을 알면 Y의 값을 바로 식별할 수 있고, ...
[CS] DB: 키의 종류
키 데이터베이스에서 키란, 조건에 만족하는 튜플을 찾거나 순서대로 정렬할 때 다른 튜플과 구별할 수 있는 유일한 기준이 되는 속성(Attribute)이다. 종류 키의 종류에는 5가지가 있다. 후보키 (Candidate key) 릴레이션(테이블)에서 각 튜플을 유일하게 식별할 수 있는 속성 또는 집합을 ...
[CS] DB: DB란 무엇인가?
데이터베이스 데이터베이스란, 일정한 규칙 혹은 규약을 통해 구조화 되어 저장되는 데이터의 모음이다. 그런 데이터를 제어, 관리하는 통합 시스템을 DBMS(DataBase Management System)라고 하며, 데이터베이스 안에 있는 데이터들은 특정 DBMS마다 정의된 쿼리 언어를 통해 삽입, 삭제, 수정, 조회 등을 수행할 수 있다. 또, ...
[CS] OS: CPU 스케줄링 알고리즘
CPU 스케줄링 알고리즘 CPU 스케줄러는 레디 큐에 존재하는 프로세스들을 특정한 우선순위를 기반으로 CPU를 할당받게 해주는 역할을 한다. 스케줄링 알고리즘 프로그램이 실행될 때 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정한다. 이 알고리즘은 다음과 같은 항목들을 목표로 한다. CPU 이용률: CPU를 ...
[CS] OS: 멀티 프로세싱과 멀티 스레딩
멀티 프로세싱과 멀티 스레딩 멀티 프로세싱 멀티 프로세싱은 여러 개의 프로레스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말한다. 이를 통해 하나 이상의 일을 병렬적으로 처리할 수 있으며, 프로세스 중 일부에 문제가 발생하더라도 다른 프로세스를 이용해 처리할 수 있어 신뢰성이 높다. 프로세스는 모두 독립적인 메모리 공간을 할당 ...
[CS] OS: 프로세스란?
프로세스와 스레드 프로세스 프로세스란, 실행 중에 있는 프로그램을 의미한다. ‘스케줄링의 대상이 되는 작업’과 같은 의미로 쓰인다. 프로세스 내부에는 최소 하나의 스레드(Thread)를 가지고있는데, 실제로는 스레드단위로 스케줄링을 한다. 하드디스크에 있는 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 ...
[CS] OS: 메모리와 캐시
메모리 메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어있다. 레지스터 : CPU안에 있는 작은 메모리, 휘발성, 속도 가장 빠름, 기억 용량이 가장 적음 캐시 : L1, L2캐시를 지칭 주기억장치 : 메모리 즉 RAM 지칭 보조기억장치 : HDD, SDD 지칭 램은 하드디스크로부터 일정량의 데이터를 복사해 임...
[CS] OS: 운영체제란 무엇인가?
운영체제 운영체제(Operating System)는 컴퓨터 시스템의 자원들을 효율적으로 관리하며, 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램의 모임이다. 운영체제는 컴퓨터 사용자와 컴퓨터 하드웨어 간의 인터페이스로서 동작하는 시스템 소프트웨어의 일종으로, 다른 응용프로그램이 유용한 작업을 할 수 있도록...
[CS] HTTP와 HTTPS: 메시지를 안전하게 보내는 방법
개요 지난 번에는 HTTP 프로토콜의 변천사에 대해 알아보면서, ‘어떻게 하면 더 빨리’ 메시지를 보내도록 바뀌었는지 그 과정을 알아보았다. 이번에는 ‘더 안전하게’ 메시지를 보내기 위해 나온 HTTPS에 대해, 더 정확히는 그 메시지를 보내는 과정에 무엇이 추가 되었고 어떻게 메시지를 보내는지에 대해 알아보고자 한다. HTTP HTTP(Hy...