동시성이라는 단어를 들으면 여러분은 어떤 것이 머리 속에서 떠오르시나요? 백엔드 분야를 공부한 지 2년이 넘어갔지만 아직까지도 동시성이라는 개념이 추상적이기만 합니다. 그로킹 동시성은 동시성이 무엇인지 그리고 이것이 어플리케이션 프로그래밍에서 왜 필요한지에 대해 글과 그림으로 명확하게 설명하고 있습니다.길벗 IT 책은 복잡한 개념을 자세한 설명과 적절한 일러스트로 표현하는 것이 주요 특징이라고 할 수 있는데요. 이번 그로킹 동시성도 동시성을 설명하기 위한 재미있고 깔끔한 일러스트가 자주 등장합니다. 덕분에 동시성과 관련된 다양한 이론 및 문제들을 떠올릴 때, 어떠한 그림을 머리 속에 그려야 할 지 감을 잡을 수 있었습니다. 이 책에서 마음에 들었던 부분은 처음부터 동시성과 관련된 복잡한 내용을 설명하지 ..
안녕하세요! 1월 3일부터 31일까지 5주 동안 참여했던 JSCODE 데이터베이스 스터디에 대한 회고를해보고자 합니다!스터디에 참여하고자 하는 분들께 도움이 될만한 내용들을 담아보았습니다.1. 참여하게 된 계기저는 정보통신 계열 학과생으로서 컴퓨터네트워크, 자료구조 관련 수업은 들었으나, 데이터베이스 수업은 한 번도 들어보지 못했습니다. 백엔드 개발자를 희망하지만 부끄럽게도 인덱스나 트랜잭션에 대해 제대로 알지 못하는 수준이었습니다. 그래서 늘 프로젝트를 하다가도 데이터베이스 관점으로 문제를 해결해야 할 때, 접근조차 못하는 문제가 있었습니다. 그러던 찰나에 JSCODE에서 데이터베이스 스터디를 5주 동안 진행한다는 공고글을 보고, 이번에야말로 꼭 극복해야겠다고 생각하며, 참여하였습니다. 2. 스터디 진..
1. 트랜잭션과 ACID1) 세션과 커넥션 세션은 사용자가 DB 서버에서 작업하는 논리적인 단위를 말합니다. 다시 말해, 데이터베이스를 사용하기 시작하고, 종료하기까지의 작업 상태를 저장하는 반영구적인 컨테이너라고 할 수 있습니다. 따라서 세션 내에서 사용자의 트랜잭션, 쿼리 등의 작업이 이루어지며, 로그아웃을 할 경우, 세션도 종료됩니다. 또한, 세션은 로그인 된 캐시 데이터, 트랜잭션 격리 수준 데이터 등을 저장합니다.커넥션과 세션의 차이점은? 커넥션은 사용자와 DB 서버가 통신하기 위해 필요한 물리적인 연결 상태를 의미합니다. 신뢰성을 보장하는 TCP 기반이기 때문에 DB에 요청을 보내기 전후로 커넥션이 열고 닫혀야 합니다. 따라서 세션은 커넥션을 통해 생성되며, 커넥션이 물리적인 연결을, 세션은 ..
1. 이상현상정규화란, 릴레이션이 연관된 속성만을 갖도록 분리시키는 것을 말합니다. 이 정규화 작업의 필요성을 알기 위해서는 먼저, 이상현상에 대해 알아둘 필요가 있습니다. 이상현상은 릴레이션이 잘못 설계되어, 불필요한 중복 데이터가 존재할 때 발생하는 현상입니다. 대표적으로 삽입 이상, 갱신 이상, 삭제 이상이 있습니다. 이러한 이상현상을 해결하는 방법이 정규화입니다.1) 삽입 이상고객 ID거래 ID고객 이름거래 날짜고객 등급111T1오영일2025-01-17VIP131T2성기훈2025-01-17SILVER111T3오영일2025-01-17VIP141T4조상우2025-01-18GOLD111T5오영일2025-01-20VIP 다음과 같이, 고객과 거래 정보를 함께 저장하는 릴레이션이 존재한다고 가정하겠습니다...
1. 자바에서 compareTo란?compareTo 메서드는 Comparable 인터페이스가 제공하는 메서드로 두 객체를 비교할 때 사용하는 메서드입니다.public class Jewel implements Comparable { int weight; int value; public Jewel(int weight, int value) { this.weight = weight; this.value = value; } @Override public int compareTo(Jewel o) { return this.weight - o.weight; }} 다음과 같이..
1. 인덱스란?인덱스는 관계형 DBMS가 관리하는 테이블에 존재하는 데이터를 빠르게 조회할 수 있도록 데이터를 저장하는 데이터베이스 객체입니다. 인덱스는 테이블의 특정 컬럼을 기준으로 만들 수 있기 때문에 특정 컬럼을 기준으로 정렬된 일종의 표라고 할 수 있습니다. 특정 컬럼을 기준으로 정렬되어 있기 때문에 인덱스가 걸려있는 컬럼을 기준으로 검색했을 때, 인덱스를 활용하여 데이터를 빠르게 조회할 수 있습니다. 1) 인덱스는 항상 정렬된 상태를 유지해야 한다.인덱스를 사용했을 때, 조회 상황에서 유리한 이유는 인덱스가 특정 컬럼을 기준으로 내림차순 혹은 오름차순으로 정렬되어 있기 때문입니다. 실제로 DBMS가 관리하는 데이터는 HDD 또는 SSD에 저장될텐데요. 내가 저장하는 데이터들이 항상 순서대로 저장..