분류 전체보기 14

[DB] 가상 컬럼 (Virtual Columns - Generated Column)

개요많은 DBMS에서 가상 컬럼이라는 기능을 제공하고 있습니다. 가상 컬럼은 기존의 컬럼을 기반으로 특정 조건식에 의해 생성된 결과를 저장한 컬럼을 의미하는데요,이번 포스팅에서는 MySQL에서의 가상 컬럼(Generated Column)에 대해 알아보겠습니다.  MySQL Generated ColumnMySQL에서 Generated Column은 저장 방식에 따라 VIRTUAL과 STORED 타입으로 나눌 수 있습니다.VIRTUAL (기본값): VIRTUAL 타입은 값을 실제 저장 공간에 저장하지 않고, 행을 읽을 때 계산됩니다.STORED: STORED 타입은 행이 추가되거나 변경될 때 계산된 값이 실제로 저장됩니다.col_name data_type [GENERATED ALWAYS] AS (expr) ..

카테고리 없음 2024.07.06

[DB] 조건에 맞는 값 그룹 형태로 출력 (GROUP_CONCAT)

개요특정 컬럼의 목록을 하나의 그룹으로 조회해야 하는 상황이 종종 발생합니다. 아래는 가상의 테이블 스키마 구조로, 납품 업체와 제휴를 맺고 있는 파트너사의 가맹점들이 상품 발주 요청을 관리하는 테이블입니다.CREATE TABLE `order_form` ( `order_form_id` int NOT NULL AUTO_INCREMENT, `partner_name` varchar(50) NOT NULL, `partner_code` varchar(20) NOT NULL, `product_name` varchar(50) NOT NULL, `request_dt` datetime DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`order_form_id`) ) ENGINE=InnoDB; 동일..

카테고리 없음 2024.06.21

우당탕탕 주니어 개발자의 개선기 (1)

들어가기 전에이번 글에서는 제가 속한 팀에서 진행한 (작은) 아키텍처 변화와 코드 베이스 개선 경험을 공유하고자 합니다. 배경저희 팀의 대부분 프로젝트는 레이어드 아키텍처 기반의 싱글 모듈, 싱글 프로젝트로 구성되어 있습니다. 레이어드 아키텍처는 여러 레이어로 나누어 각 레이어가 특정한 역할을 수행하도록 설계된 아키텍처인데요, 일반적으로 레이어드 아키텍처는 다음의 4계층으로 구성됩니다.프레젠테이션 계층: 인터페이스와 애플리케이션간의 상호 작용애플리케이션 계층: 데이터 가공 및 비즈니스 로직 수행도메인 계층: 도메인 영역의 문제를 해결(도메인 모델, 도메인 서비스)인프라스트럭처 계층: 데이터베이스와의 상호 작용   대부분의 코드들은 트랜잭션 스크립트 패턴으로 되어있는데요, 이 구조는 복잡한 비즈니스에서 ..

카테고리 없음 2024.06.13

스프링 엑추에이터와 커스터마이징 (1)

서론애플리케이션을 프로덕션 환경에서 운영하기 위해서는 기능적인 것들 뿐만 아니라 비 기능적인 요소들도 구성되어 있어야 합니다. 이러한 비 기능적인 요소들은 서비스를 안정적이게 운영하고, 애플리케이션을 보호하고, 장애 상황에 문제를 탐지하고 분석하는데 용이한데요. 오늘은 이 중에서도 애플리케이션의 운영과 관리에 용이하게 하는 스프링 부트에서 제공하는 엑추에이터를 소개하려고 합니다. Spring Actuator엑추에이터는 애플리케이션이나 데이터베이스의 상태, 메트릭, 로그, 스레드 상태 등에 대한 애플리케이션을 관리하는데 도움이 되는 여러 기능들을 HTTP 엔드포인트나 JMX 형태로 제공합니다. 엑츄에이터가 제공해주는 기능을 사용하려면 두 가지 설정이 선행되어야 합니다.엔드포인트 활성화엔드포인트 노출엑추에이..

카테고리 없음 2024.03.17