동시성제어? 왜 두번해야함?
·
DB/RDBMS
DB가 다 해준다며? 그런데 왜 스프링에서도 동시성 제어를 해야 하지? 📚 시작하며 요즘 DB 스터디에서 『Real MySQL 8.0』을 읽으면서 MySQL에 대한 이해를 깊게 하고 있는데, 진짜 놀란 게 하나 있었다.“MySQL… 얘 동시성 제어에 진심이구나?” 정말 생각보다 정교하게 락(Lock)을 걸고,MVCC, 세마포어, Undo 로그, 트랜잭션 격리 수준 같은 기능으로동시에 발생하는 수많은 쿼리를 정확하게 처리하고 있었다. 그러던 중, 내가 참여 중이던 해커톤 프로젝트에서스프링 애플리케이션 쪽에서도 동시성 제어가 필요한 상황이 생겼다. 그래서 의문이 들었다.   ❓ 궁금했다 “DB에서 이렇게 철저하게 동시성 제어를 해주는데,왜 굳이 스프링에서도 락을 걸어야 하지?” 처음엔 이게 잘 이해되지 않..
JDBC로 배우는 단계별 프로젝트 개발: Ver 3과 Ver 4를 통해 얻은 깨달음 🚀
·
DB
프로젝트 개요: NewShophttps://github.com/GEISHAz/NewShop-jdbc-jpa-compare GitHub - GEISHAz/NewShop-jdbc-jpa-compare: 👀 JDBC와 JPA성능을 비교하기위한 간단 쇼핑몰 프로젝트 : A projec👀 JDBC와 JPA성능을 비교하기위한 간단 쇼핑몰 프로젝트 : A project to compare CRUD performance between JDBC and JPA using MySQL. - GEISHAz/NewShop-jdbc-jpa-comparegithub.com이번 프로젝트는 옷 쇼핑몰 시스템인 NewShop을 단계적으로 구현하며,JDBC와 JPA의 특징과 차이를 학습하는 데 초점을 맞췄습니다. Ver 1과 Ver 2..
JDBC로 배우는 단계별 프로젝트 개발: Ver 1과 Ver 2를 통해 얻은 깨달음 🚀
·
DB
프로젝트 개요: NewShophttps://github.com/GEISHAz/NewShop-jdbc-jpa-compare GitHub - GEISHAz/NewShop-jdbc-jpa-compare: 👀 JDBC와 JPA성능을 비교하기위한 간단 쇼핑몰 프로젝트 : A projec👀 JDBC와 JPA성능을 비교하기위한 간단 쇼핑몰 프로젝트 : A project to compare CRUD performance between JDBC and JPA using MySQL. - GEISHAz/NewShop-jdbc-jpa-comparegithub.com 이번 프로젝트는 옷 쇼핑몰 시스템인 NewShop을 단계적으로 구현하며,JDBC와 JPA의 특징과 차이를 학습하는 데 초점을 맞췄습니다.특히 Ver 1과 Ve..
관계형 데이터베이스 RDBMS 란?
·
DB/RDBMS
DBMS란?   관계형 데이터베이스 (RDBMS, Relational Database Management System)란 데이터베이스 관리시스템 (DBMS) 중 한가지다.  DBMS부터 알아보자. DBMS란 데이터를 관리하기 위한 시스템으로, 데이터의 생성, 검색, 갱신 및 관리를 도와준다. DBMS는 사용자와 데이터베이스 사이에서 데이터를 안전하게 저장하고, 효율적으로 액세스할 수 있게 하는 인터페이스 역할을 한다. DBMS의 주요 기능에는 데이터의 무결성, 보안, 백업 및 복구, 동시성 제어 등이 포함된다.    DBMS의 종류는 크게 4가지로 분류된다. 1. RDBMS 가장 흔히 사용되는 데이터베이스 유형으로, 데이터를 테이블 형태로 저장한다.각 테이블은 열(속성)과 행(데이터 레코드)으로 구성된다..
SQL 20241005
·
DB/SQL
20241005===========================================# Lv 1. 조건에 맞는 도서 리스트 출력하기SELECT BOOK_ID, DATE_FORMAT(PUBLISHED_DATE,"%Y-%m-%d") AS PUBLISHED_DATEFROM BOOKWHERE CATEGORY = '인문'AND (PUBLISHED_DATE BETWEEN '2021-01-01' AND '2021-12-31')ORDER BY BOOK_ID,PUBLISHED_DATE;# Lv 2. 3월에 태어난 여성 회원 목록 출력하기SELECT MEMBER_ID, MEMBER_NAME, GENDER, DATE_FORMAT(DATE_OF_BIRTH,'%Y-%m-%d') AS DATE_OF_BIRTHFROM ME..
SQL 20241003
·
DB/SQL
20241003===========================================# Lv 3. 대여기록이 존재하는 자동차 리스트 구하기SELECT DISTINCT A.CAR_ID FROM CAR_RENTAL_COMPANY_CAR ALEFT JOIN CAR_RENTAL_COMPANY_RENTAL_HISTORY BON A.CAR_ID = B.CAR_IDWHERE A.CAR_TYPE = '세단'AND B.START_DATE BETWEEN '2022-10-01' AND '2022-10-31' ORDER BY CAR_ID DESC;# Lv. 3 조건에 맞는 사용자와 총 거래금액 조회하기SELECT B.USER_ID,B.NICKNAME,SUM(PRICE) AS TOTAL_SALESFROM USED_GOO..
SQL 20241002
·
DB/SQL
IN 연산자에 대해서 좀더 깊이 알 수 있었다.%와 같은 와일드카드를 사용하여 유사한 문자를 판별할때는IN연산자를 사용할 수 없다는 것을 알았다.IN 연산자는 열거형과 같이 정확한 문자를 찾기 위해 사용하는 연산자였다.쿼리가 길어져 보기싫어 IN을 써보려고 했지만 실패함으로써좋은 지식을 하나 더 얻을 수 있었다.  20241002===========================================# Lv 3. 오랜기간 보호한 동물(2)SELECT B.ANIMAL_ID, B.NAMEFROM ANIMAL_INS A, ANIMAL_OUTS BWHERE A.ANIMAL_ID = B.ANIMAL_IDORDER BY DATEDIFF(B.DATETIME,A.DATETIME) DESCLIMIT 2;# Lv 2..
SQL 20241001
·
DB/SQL
20241001===========================================-- Lv 2. 성분으로 구분한 아이스크림 총 주문량SELECT INGREDIENT_TYPE, SUM(TOTAL_ORDER) AS TOTAL_ORDERFROM FIRST_HALF ALEFT JOIN ICECREAM_INFO BON A.FLAVOR = B.FLAVORGROUP BY B.INGREDIENT_TYPEORDER BY TOTAL_ORDER;-- Lv 3. 오랜기간 보호한 동물 (1)SELECT A.NAME,A.DATETIMEFROM ANIMAL_INS ALEFT JOIN ANIMAL_OUTS BON A.ANIMAL_ID = B.ANIMAL_IDWHERE B.ANIMAL_ID IS NULLORDER BY A...
SQL 20240929
·
DB/SQL
20240929===========================================-- SQL Lv 3. 카테고리별 도서 판매량 집계하기SELECT CATEGORY, SUM(SALES) AS TOTAL_SALESFROM BOOK ARIGHT JOIN BOOK_SALES B ON A.BOOK_ID = B.BOOK_IDWHERE B.SALES_DATE BETWEEN DATE '2022-01-01' AND DATE '2022-01-31'GROUP BY A.CATEGORYORDER BY 1;-- LV 2. 상품별 오프라인 매출 구하기SELECT P.PRODUCT_CODE, SUM(SALES_AMOUNT * P.PRICE) AS SALESFROM PRODUCT P RIGHT JOIN OFFLINE_SAL..
SQL 20240924
·
DB/SQL
20240924===========================================-- SQL Lv 1. 인기있는 아이스크림SELECT FLAVOR FROM FIRST_HALFORDER BY TOTAL_ORDER DESC, SHIPMENT_ID;-- SQL Lv 1. 12세 이하인 여자 환자 목록 출력하기SELECT PT_NAME, PT_NO, GEND_CD, AGE, COALESCE(TLNO,'NONE')FROM PATIENTWHERE AGE