본문 바로가기

분류 전체보기

(313)
[DB] 계정계, 정보계란? / OLPT, OLAP 비교 계정계 정의 - OLTP와 매핑되는 개념 - 은행의 전통적인 핵심 업무는 통장이 중심이 된다. 통장을 계좌, 계정이라고 한다. 계정을 관리하는 시스템이 모여있어서 계정계라고 부른다. - 금융권 영업점에서 실시간으로 고객의 거래를 처리하기 위한 업무 정보. 그래서 트랜잭션 단위로 발생. 예) 고객의 통장 정보(계좌번호, 입출금, 이체, 펀드, 주식 등) 계정계 특징 - 기본 데이터가 1억 건이 넘는다. 시스템장애는 곧 금전적 피해로 이어지기 때문에, 데이터를 2~3중으로 백업하는 등 매우 보수적으로 운영된다. - 기본적으로 원장(근원이 되는 장부)에 트랜잭션이 집중되는 구조이기 때문에, 안정적으로 트랜잭션을 처리하기 위한 미들웨어가 발달해있음. - 초기에는 IBM Mainframe을 사용했고, 2000년대..
[DB] OLTP, OLAP 비교 OLTP(Online Transaction Processing) 온라인 트랜잭션 처리. 즉, 네트워크 상의 여러 이용자가 실시간으로 데이터베이스의 데이터를 갱신하거나 조회하는 등의 단위 작업을 처리하는 방식을 말함. OLTP 특징 1. 주로 신용카드 조회 업무나 자동 현금 지급 등 금융 전산 관련 부문에서 많이 발생하기 때문에 '온라인 거래처리'라고도 함. 2. 기존 온라인 방식과 달리, 다수의 이용자가 거의 동시에 이용할 수 있도록 송수신 자료를 트랜잭션 단위로 압축한다. 3. 건 바이 건 트랜잭션 단위로 처리함. 주로 금융권에서 사용. 영업 시간 내에 내역 조회 등등의 업무가 이에 해당하는 듯. --- batch(묶음) 처리와는 반대의 개념이다. OLAP(Online Analytical Process..
[DB] 식별자의 정의와 특징 & 시퀀스(Sequence) 와의 관계 식별자의 정의 식별자란 하나의 엔티티 내에서 각각의 인스턴스를 유일하게 구분해낼 수 있는 속성 또는 속성그룹을 말한다. 하나의 엔티티는 반드시 하나 이상의 식별자를 보유하고 있어야 한다. 식별자의 특징(최불유존) 식별자의 유형 식별자 예시 부서번호 - 주식별자: 엔터티 내에서 대표성을 가지며, 각 어커런스를 구분할 수 있다. 또한, 타 엔터티와 참조관계를 연결할 수 있음. - 내부식별자: 부서라는 엔터티 내에서 스스로 만들어지는 식별자. - 단일식별자: '부서번호'라는 하나의 속성으로만 구성된 식별자. - 원조식별자(본질식별자?): 업무에 의해 만들어지는 식별자. 사번 - 주식별자: 엔터티 내에서 대표성을 가지며, 각 어커런스를 구분할 수 있다. 또한, 타 엔터티와 참조관계를 연결할 수 있음. - 내부식..
[ORACLE] 'GROUP BY 구 없이 그룹 함수가 내포되었습니다' 에러 에러나는 상황 SELECT SUM(DECODE(DEPTNO, 10, COUNT(JOB), 0)) AS "10번부서", SUM(DECODE(DEPTNO, 20, COUNT(JOB), 0)) AS "20번부서", SUM(DECODE(DEPTNO, 30, COUNT(JOB), 0)) AS "30번부서" FROM EMP; 원인 - COUNT 함수는 그룹행 함수다. 여러 행이 한번에 들어가야하는데, DEPTNO가 10인 행의 데이터가 각각 인자로 들어가는 상황이다. - 여기서 GROUP BY가 필요한 이유는, DEPTNO가 10, 20, 30인 데이터를 각각 하나로 모우는 임시 테이블을 만들기 위해서다(뇌피셜) - 만들어진 임시 테이블에서는 전체 행이 각각 10, 20, 30일테니까 COUNT 함수를 사용할 수 ..
[ORACLE] 부서별 컬럼을 만들고, 직원 수를 나타내기(GROUP BY or 조건문 활용) 문제 다음과 같은 결과를 생성하는 SQL 작성 10번부서 20번부서 30번부서 3 5 6 정답1 SELECT SUM(DECODE(DEPTNO, 10, COUNT(DEPTNO), 0)) AS "10번부서", SUM(DECODE(DEPTNO, 20, COUNT(DEPTNO), 0)) AS "20번부서", SUM(DECODE(DEPTNO, 30, COUNT(DEPTNO), 0)) AS "30번부서" FROM EMP GROUP BY DEPTNO; 정답2 SELECT COUNT(CASE WHEN DEPTNO = 10 THEN 1 END) AS "10번부서", COUNT(CASE WHEN DEPTNO = 20 THEN 1 END) AS "20번부서", COUNT(CASE WHEN DEPTNO = 30 THEN 1 ..
[ORACLE] 82년도에 입사한 직원 찾기(LIKE 활용) SELECT HIREDATE FROM EMP WHERE TO_CHAR(HIREDATE,'YY-MM-DD') LIKE '82%';
[ORACLE] DISTINCT 함수의 알고리즘 차이(9i VS 10g) ORACLE 9i - SORT 알고리즘 사용 ORACLE 10g - HASH 알고리즘 사용 - 대용량 데이터 처리가 이슈가 됐다. 대용량 데이터를 SORT 할 때 굉장히 속도가 느려진다. CPU, MEMORY 등을 많이 쓰기 때문에 비효율적임. - HASH 알고리즘을 써서 병렬처리를 함.
[ORACLE] 해당 월의 마지막 법정 영업일자를 구하기(SYSDATE, 조건문 활용) 문제 아래 SQL을 참고하여 해당월의 마지막 법정 영업일자를 구하는 SQL을 작성(법정 영업일은 월~금요일) SELECT TO_CHAR(SYSDATE,'DDD'), TO_CHAR(SYSDATE,'DD'), TO_CHAR(SYSDATE,'D') FROM DUAL; SELECT LAST_DAY(SYSDATE) FROM DUAL; 정답1 (CASE 활용) SELECT CASE WHEN TO_CHAR(LAST_DAY(SYSDATE), 'DAY') = '일요일' THEN TO_CHAR(LAST_DAY(SYSDATE)-2) WHEN TO_CHAR(LAST_DAY(SYSDATE), 'DAY') = '토요일' THEN TO_CHAR(LAST_DAY(SYSDATE)-1) ELSE TO_CHAR(LAST_DAY(SYSDA..