db 11

챕터02. 데이터 모델과 성능 - 2.4 대량 데이터에 따른 성능

대량 데이터발생에 따른 테이블 분할 개요 테이블을 조회할 떄 대량의 데이터가 존재하는 테이블에 많은 트랜잭션이 발생하여 성능이 저하되는 테이블 구조에 대해 수평/ 수직 분할 설계를 통해 성능 저하를 예방할 수 있습니다. 2. 오라클 테이블의 데이터는 Block(8Kb) 단위로 디스크에 저장됩니다. - 컬럼이 많아지게 되면 하나의 로우를 저장 시 물리적인 디스크에 여러 블록에 데이터가 저장될 가능성이 높아집니다. - 그래서 하나의 행(로우)을 읽더라도 여러 개의 블록을 읽어야 하기 때문에 SQL문의 Block I/O 가 많아집니다. - 오라클 DB는 데이터를 저장하는 Disk와 사용자 사이에 자주 사용하는 데이터에 대한 버퍼 캐시를 두어 Block I/O 횟수를 줄여 속도를 향상 시킵니다. 하지만 이 때,..

프로그래머스/MySQL - GROUP BY 07. 동명 동물 수 찾기

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59041 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 코드 및 문제 풀이 SELECT NAME, COUNT(NAME) AS COUNT FROM ANIMAL_INS WHERE NAME IS NOT NULL GROUP BY NAME HAVING COUNT > 1 ORDER BY NAME ASC - 두 번 이상 쓰인 이름을 조회하기 위해 NAME을 COUNT하고, COUNT가 1초과인 이름 별로 그룹을 나눴습니다. - 이름이 없는 동물..

프로그래머스/MySQL - SELECT 10. 12세 이하인 여자 환자 목록 출력하기

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/132201 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 문제 및 예시 코드 및 문제 풀이 SELECT PT_NAME, PT_NO, GEND_CD, AGE, IFNULL(TLNO,'NONE') AS TLNO FROM PATIENT WHERE AGE < 13 AND GEND_CD = 'W' ORDER BY AGE DESC, PT_NAME ASC; - TLNO가 NULL이면 NONE으로 바꿔서 출력해야 하기 때문에 IFNULL()..

프로그래머스/MySQL - SELECT 05. 어린 동물 찾기

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59037#fn1 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 예시 코드 및 문제 풀이 SELECT ANIMAL_ID, NAME FROM ANIMAL_INS WHERE INTAKE_CONDITION != 'Aged' ORDER BY ANIMAL_ID ASC; - 설명에 젊은 동물은 INTAKE_CONDITION이 Aged가 아닌 동물이라고 나와있기 때문에 WHERE 절에서 INTAKE_CONDTION이 Aged가 아닌 동물들을..

프로그래머스/MySQL - SELECT 03. 여러 기준으로 정렬하기

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59404 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 예시 코드 및 문제 풀이 SELECT ANIMAL_ID, NAME, DATETIME FROM ANIMAL_INS ORDER BY NAME ASC, DATETIME DESC - 문제에서 제시한 이름이 같은 경우 보호를 나중에 시작한 동물을 먼저 보여주기 위해서는 ORDER BY를 사용해서 NAME 순으로 ASC(오름차순)정렬을 하고, 그 뒤 DATETIME은 DESC(내림차..

프로그래머스/MySQL - SELECT 02. 상위 n개 레코드

문제 출처 : https://school.programmers.co.kr/learn/courses/30/lessons/59405 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 예시 코드 및 문제 풀이 SELECT NAME FROM ANIMAL_INS WHERE DATETIME = (SELECT MIN(DATETIME) FROM ANIMAL_INS) - 가장 먼저 보호소에 들어온 동물의 이름을 출력하기 위해서 WHERE 절에서 DATETIME이 MIN(), 들어온 시간이 가장 빠른 동물의 날짜를 가져오고 그 동물의 이름을 출력하면 된다. MIN(..

[SW 코딩] Express.js와 MongoDB - 04. Mongoose 활용하기

01 Express.js + Mongoose ODM Express.js에서 Mongoose ODM 사용하기 - Express.js는 프로젝트 구조를 자유롭게 구성할 수 있기 때문에 어느 부분에 Mongoose ODM을 위치시키면 좋을지 적절한 위치를 결정하는 것이 중요하다. - 일반적으로 models 디렉터리에 Schmea와 Model을 같이 위치 시킨다. - app 객체는 어플리케이션 시작을 의미하는 부분이므로 해당 부분 (app 객체)에 데이터베이스 연결을 명시하는 mongoose.connect를 위치하는 것이 좋다. Mongoose ODM 위치 정하기 예시 Mongoose ODM 커넥션 이벤트 - Express.js 어플리케이션은 종료되지 않고 동작하기 때문에 계속해서 데이터베이스가 정상적으로 동작..

챕터02. 데이터 모델과 성능 - 2.3 반정규화와 성능

반정규화의 정의 정규화된 엔터티, 속성, 관계에 대해 시스템의 성능향상과 개발과 운영의 단순화를 위해 중복, 통합, 분리 등을 수행하는 데이터 모델링의 기법을 의미한다. 협의의 반정규화는 데이터를 중복하여 성능을 향상시키기 위한 기법이라고 정의할 수 있고 좀 더 넓은 의미의 반정규화는 성능을 향상시키기 위해 정규화된 데이터 모델에서 중복, 통합, 분리 등을 수행하는 모든 과정을 의미한다. 데이터 무결성이 깨질 수 있는 위험을 무릅쓰고 데이터를 중복하여 반정규화를 적용하는 이유는 데이터를 조회할 때 디스크 I/O량이 많아서 성능이 저하되거나 경로가 너무 멀어 조인으로 인한 성능저하가 예상되거나, 칼럼을 계산하여 읽을 때 성능이 저하될 것이 예상되는 경우 반정규화를 수행하게 된다. 반정규화 절차 반정규화도 ..

챕터01. 데이터 모델링의 이해 - 1.2 Entity의 특징과 분류

엔터티의 개념 엔터티는 사람, 장소, 물건, 사건, 개념 등의 명사에 해당한다 엔터티는 업무상 관리가 필요한 관심사에 해당한다. 엔터티는 저장이 되기 위한 어떤 것 (Thing)이다. 엔터티와 인스턴스 : 엔터티는 인스턴스의 집합이라고 할 수 있다. 엔터티 표기법 (Barker 표기법) 엔터티를 표기하는 방법은 둥근 사각형 내 엔터티의 이름을 쓰고, # 과 인스턴스를 식별할 수 있는 식별자 이름을 써준다. 엔터티의 특징 반드시 해당 업무에서 필요하고 관리하고자 하는 정보이어야 한다. 유일한 식별자에 의해 식별이 가능해야 한다. 영속적으로 존재하는 인스턴스의 집합이어야 한다. 엔터티는 업무 프로세스에 의해 이용되어야 한다. 엔터티는 반드시 속성이 있어야 한다. 엔터티는 다른 엔터티와 최소 한 개 이상의 관..

챕터01. 데이터 모델링의 이해 - 1.1 데이터 모델의 이해(2)

데이터독립성의 필요성 1. 지속적으로 증가하는 유지보수 비용을 절감하고 데이터 복잡도를 낮추며 중복된 데이터를 줄이기 위한 목적이 있음 2. 끊임없이 요구되는 사용자 요구사항에 대해 화면과 DB 간에 서로 독립성을 유지하기 위한 목적으로 데이터 독립성 개념이 나오게 되었음 데이터 독립성 확보 - 각 VIEW의 독립성을 유지하고 계층별 VIEW에 영향을 주지 않고 변경이 가능함 - 단계별 Schema에 따라 DDL과 DML이 다르게 제공 데이터베이스 3단계 구조 : ANSI/SPARC의 3단계 구성의 데이터독립성 모델은 외부, 개념, 내부 단계로 구성 - 외부 단계와 개념적 단계는 논리적 데이터 독립성에 의해 독립성을 유지하고, 내부 단계와 개념적 단계는 물리적 데이터 독립성에 의해 독립성을 유지한다. 단..