분류 전체보기 87

[Task Scheduler] 불규칙적인 task 처리 (동적 스케줄링) + 영속성 처리

불규칙적 상황? 동적 스케줄링?    개발을 진행하다 보면 특정 시점에 기능이 동작해야 하는 경우가 존재한다.trigger가 존재한다면 단순하게 trigger 메서드에서 target 메서드를 실행하면 되지만, trigger가 시간인 경우 어떻게 처리할 수 있을까?  예를 들어 '예약 서비스'에서 사용자가 특정 시간에 예약을 했을 때, 예약 시간 10분 전에 알림을 보내는 기능을 생각해 보자.사용자의 예약 시간은 정기적인 것이 아니라 랜덤 하기 때문에 'cron 식'을 사용한 단순 scheduler'를 사용한다면 상당히 비효율적일 것이다.  사용자 예약 시간을 다음처럼 가정해 보자예약 시간-> 10:30, 12:00, 17:00  이 경우 cron 식을 사용해서 처리하려면 30분 단위로 계속해서 예약이 존..

[SQLD] JOIN

JOIN   JOIN여러 테이블의 데이터를 동시에 출력하거나 참조할 때 사용하는 방법으로, 여러 테이블의 데이터를 결합하여 하나의 조합 결과로 만드는 기능이다일반적으로 'PK'나 'FK'의 연관에 의해 JOIN이 성립된다단, 'PK'나 'FK' 관계가 없더라도 '논리적인 값들의 연관'만으로도 JOIN이 성립되기도 한다JOIN 할 테이블이 여러 개더라도, 데이터 처리 과정에서는 한 번에 최대 2개만 JOIN 된다ex) FROM A, B, C -> A JOIN B가 먼저 실행되고, 그 결과에 C가 JOIN 됨N개의 테이블 조인 시, 최소 N-1개의 조인 조건이 필요하다Standard Join은 [INNER, CROSS, NATURAL, OUTER] 이다순수 관계 연산자는 [SELECT, PROJECT, JO..

DataBase 2025.03.02

[SQLD] SQL절 (SELECT, FROM, WHERE, GRUOP BY, HAVING, ORDER BY)

SELECT  SELECT 문의 구조총 6개의 절로 구성되어있고, 각 절의 순서대로 작성해야 한다SELECT (DISTINC) * / 컬럼명 / 표현식FROM 테이블명/뷰명WHERE 조건GROUP BY 그룹화 기준 컬럼명HAVING 그룹핑 필터링 조건ORDER BY 정렬기준 컬럼명별칭을 만들기 위해 AS를 사용할 수 있다생략 가능하다별칭은 결과에만 적용되며, 실제 DB 테이블에는 영향이 없다HAVING이나 WHERE 절에서는 사용할 수 없다예약어를 사용할 수 없다'오라클'에서 테이블 별칭을 명시할 때 AS를 사용할 수 없다DISTINCT는 중복된 데이터가 있는 경우, 1건으로 처리해서 출력한다  SELECT 문의 내부 실행 순서SELECT 문의 내부 쿼리 실행 순서는 작성 순서와 다르다FROM      ..

DataBase 2025.02.25

[SQLD] 관계형 데이터베이스 개요, SQL, 데이터 무결성, 제약 조건

관계형 데이터베이스(Relational Database, RDB)   RDB 구성요소계정: 데이터의 접근 제한을 위해 업무별/시스템별로 존재테이블: DBMS의 데이터베이스 안에 데이터가 저장되는 형식스키마: 테이블이 어떠한 구성으로 이루어져 있는지를 말함. 즉, 테이블의 기본적인 구조 정의  RDB 특징데이터의 분류, 정렬, 탐색 속도가 빠르다신뢰성이 높고 데이터의 무결성이 보장된다기존의 작성된 스키마를 수정하기 '어렵다'DB의 부하를 분석하는 것이 '어렵다'   테이블(Table)테이블행/열의 2차원 구조랄 가진 데이터 저장 객체RDB의 기본 단위릴레이션이 곧 테이블이다컬럼/열(Column)필드(Field)라고도 한다테이블에서 세로 방향으로 이루어진 개별 속성더 이상 나눌 수 없다로우/행(Row)레코드..

DataBase 2025.02.24

[SQLD] 트랜잭션

트랜잭션   트랜잭션데이터베이스에서 하나의 논리적 작업 단위를 의미여러 개의 작업이 하나의 트랜잭션으로 묶여, 모두 성공하거나 모두 실패하도록 보장함이를 통해 데이터의 무결성과 일관성을 유지할 수 있다  트랜잭션의 4가지 특성(ACID)Atomicity(원자성)트랜잭션 내의 모든 작업이 '완전히 수행'되거나, '전혀 수행되지 않아야' 한다Consistency(일관성)트랜잭션이 완료된 후, 데이터베이스는 항상 일관된 상태를 유지해야한다즉, 트랜잭션 실행 전 데이터베이스에 문제가 없었다면, 실행 후에도 문제가 없어야 한다Isolation(격리성)트랜잭션은 독립적으로 수행되어야 한다따라서 동시에 실행되는 트랜잭션들은 서로의 작업에 영향을 주지 않아야 한다Durability(지속성)트랜잭션이 성공적으로 완료되면..

DataBase 2025.02.23

[SQLD] 식별자

식별자  식별자엔터티 내의 각 인스턴스를 고유하게 구분하기 위한 속성, 혹은 속성들의 집합을 의미식별자를 통해 데이터의 무결성과 효율적인 관리를 보장할 수 있다비식별자인스턴스를 식별하는데 사용되지 않는 속성으로, 인스턴스를 유일하게 식별하는데 영향을 미치지 않는다예를들어 '이름', '닉네임', '성별' 처럼 중복될 수 있는 속성은 인스턴스를 식별할 수 없기에 비식별자이다  주식별자의 주요 특징유일성주식별자에 의해 엔터티 내 모든 인스턴스가 유일하게 구분되어야 한다최소성주식별자를 구성하는 속성의 수는, 유일성을 만족하는 최소한의 수로 구성되어야 한다불변성주식별자가 한번 특정 엔터티에 지정되면, 그 식별자의 값은 변하지 않아야 한다존재성주식별자의 값은 반드시 존재해야 하며, NULL 값을 가질 수 없다  식..

DataBase 2025.02.13

[SQLD] 데이터모델링의 관계

관계   관계두 엔터티 간의 논리적인 연관성을 의미엔터티의 인스턴스들이 서로 어떻게 연관되어 있는지를 나타낸다  관계의 개념적 분류존재에 의한 관계한 엔터티가 다른 엔터티에 속하거나 포함되는 등, 존재 자체로 형성되는 관계ex) 학생 - 학과: '소속된다'라는 관계는 학생이 학과에 속하는 존재적 관계임행위에 의한 관계엔터티 간의 상호작용이나 행위를 통해 형성되는 관계ex) 고객 - 상품: '주문한다'라는 관계는 고객이 상품을 주문하는 행위에 의해 형성되는 관계임  ERD에서의 관계ERD에서는 '존재에 의한 관계'와 '행위에 의한 관계'를 구분짓지 않고 동일한 표기법을 사용한다(단일화된 방식) ERD에서 관계 표기법관계명두 엔터티 간의 관계를 나타내는 '동사(Verb)' 형태의 이름관계 차수1:1, 1:N..

DataBase 2025.02.11

[SQLD] 함수 종속성, 정규화, 반정규화

함수 종속성 (Functional Dependency)   함수 종속성(Functional Dependency)특정 속성이 다른 속성을 결정하는 관계를 의미X -> Y == X가 Y를 함수적으로 결정 == X의 값이 정해지면 Y의 값이 항상 고유하게 결정된다잘못 설계된 함수 종속성을 정규화를 통해 제거하면 데이터 무결성 보장, 중복 제거, 저장 공간 절약, 성능 개선 등의 이점이 있다ex) '사원' 테이블 == '사원번호' -> '이름' 의 함수 종속성이 존재: '사원번호'가 정해지면 그에 해당하는 고유한 '이름'이 정해지지만, '이름'은 여러 개가 존재할 수 있으므로 이에 대응하는 '사원번호'가 유일하지 않을 수 있기 때문  함수 종속성의 유형완전 함수 종속 (Full Functional Depende..

DataBase 2025.02.11

[SQLD] 엔터티, 속성, NULL 속성 및 관련 함수

Entity(엔터티)   엔터티업무에 필요하고 유용한 정보를 저장하고 관리하기 위한 집합적인 것업무 활동상 지속적인 관심을 가지고 있어야 하는 대상으로, 그 대상들 간에 동질성을 지닌 인스턴스들이나 그들이 행하는 행위의 집합1976년 '피터 첸'에 의해 Entity-Relationship Model이라는 표기법이 만들어짐  엔터티 조건반드시 해당 업무에서 필요하고 관리하고자 하는 정보여야 한다유일한 식별자와 유일한 이름을 가져야 한다두 개 이상의 영속성 인스턴스의 집합이어야 한다(싱글톤 제외)두 개 이상의 속성(attribute)을 가져야 한다다른 엔터티와 최소 한 개 이상의 관계를 가져야 한다엔터티는 업무 프로세스에 의해 이용되어야 한다  엔터티의 발생 시점에 따른 분류기본 엔터티(Fundamental..

DataBase 2025.02.05

[SQLD] 데이터 모델링, 데이터 독립성, 스키마

데이터 모델링   데이터 모델링정보시스템을 구축하기 위한 데이터 관점의 업무 분석 기법으로, 시스템 구현'만'을 위해 수행하는 테스크가 아니다현실 세계의 데이터를 약속된 표기법으로 표현하는 과정데이터베이스를 구축하기 위한 분석 및 설계의 과정데이터 모델링 자체로도 업무를 설명하고 분석할 수 있어야 한다 데이터 모델링 유의점중복데이터베이스가 여러 장소에 같은 정보를 저장하는 잘못을 하지 않도록 한다비유연성'데이터의 정의'를 '데이터의 사용 프로세스'와 분리이를 통해 '데이터나 프로세스의 작은 변화'가 '애플리케이션과 데이터베이스'에 중대한 변화를 일으킬 수 있는 가능성을 줄인다 비일관성데이터간의 연관된 정보가 있는데 이를 무시하고 데이터가 갱신되는 경우를 말한다데이터의 중복이 없더라도 비일관성은 발생할 수..

DataBase 2025.02.05