테이블은 관계형 데이터베이스에서 데이터를 관리 및 저장하는 장소다. 데이터의효율적인 관리 및 적절한 조작이 매우 중요하고 현실 세계를 반영하는 형식으로 존재한다.
테이블은 집합을 나누는 방법에 따라 한 개 혹은 여러 개의 테이블이 될 수 있다. 기본키는 특정 해을 유일하게 식별할 수 있는 속성의 집합이므로 중복되면 안 된다.
정규형은 제대로 된 형태를 갖춘 테이블이다. 테이블을 쪼갤대로 쪼개는 게 정규형이라고도 부른다. 제1정규형 위반은 하나의 셀에 여러 개의 값을 포함하는 것이다. 보통 테이블에서 하나 추가하여 제1정규형 만족하게 한다. 제2정규형 위반은 부분함수 종속성을 하용하지 않아 열의 일부에 함수 종속이 일어나는 것이다. 전체 열이 기본키만으로 함수 종속을 가지게 테이블을 나누면 해소된다. 제3정규형 위반은 기본 키를 제외한 일반 컬럼끼리 함수 종속이 발생하는 것이다. 제4, 5 정규형은 실무에서 거의 쓰이지 않는다.
er 다이어그램은 개체-관계 모델을 구조화된 데이터로 설계하는 것을 개체-관계 모델링이라고 한다. ERM 프로세스의 산출물을 가리켜 개체-관계 다이어그램이라 한다. 바커 표기법은 테이블과 유사하고 오라클 사에서도 기본 표기법으로 채택하고 사용한다. 릴레이션십은 엔터티와 엔터티 사이의 관계를 말한다.
로그 선행 기입 기법은 시스템에서의 모든 수정 적용 이전에 로그에 기록되는 것을 말한다. 데이터베이스 버퍼는 데이터 파일로의 입력을 데이터베이스 버퍼 경유로 일원화해 데이터 일관성을 유지시키는 것을 말한다. Crash 복구에 필요한 항목은 WAL, 데이터베이스 버퍼, 데이터베이스 파일이 있다.
백업은 세가지 관점이 있다. 핫 백업과 콜드 백업, 논리 백업과 물리 백업, 풀 백업과 부분백업이다. 핫 백업은 백업 대상의 데이터베이스를 정지하지 않고 가동한 상태로 백업 데이터를 얻는 것이고 콜드 백업은 데이터 디렉터리의 파일 전부를 OS 명령으로 복사하는 것을 말한다. 논리 백업은 SQL 기반 텍스트 형식으로 백업 데이터를 기록하는 것이고, 물리 백업은 데이터 영역을 그대로 덤프하는 이미지로 바이너리 형식 기록이다. 논리 백업은 이식성이 우수하고 이기종간의 DB 이행이 유리하지만 백업과 복원 속도가 느리다. 물리 백업은 최소 크기로 데이터를 얻지만 일부 데이터의 내용 수정은 불가능하다. 풀 백업은 전체 데이터를 매일 백업하는 것을 말하고, 부분 백업은 나눠서 갱신되는 부분만(차등백업), 혹은 전일 대비 바뀐 부분만(증분백업) 백업하는 것을 말한다.
데이터베이스 성능이란 클라이언트 요청에 대한 응답시간과 시간당 처리할 수 있는 처리량이다. Concurrent User = Active User(서버에 부하를 발생시키고 있는) + Inactive User(서버에 요청을 보내지 않는), TPS(Transaction Per Second), Response Time, Resource(한정된 값을 가진 시스템의 구성 요소를 의미). 경합부하 구간에서 Response Time이 급격하게 늘어난다. 성능 측정은 목표 TPS를 산정하고 정해진 응답시간 이내에 모든 요청이 처리되는지 확인하는 것이다.
데이터베이스 병목의 원인은 취급하는 데이터 양이 많아지는 것이다. DBMS 성능의 원인 대부분은 I/O에서 발생한다. 그러므로 절대적인 I/O 횟수를 줄이는 것이 성능 개선의 핵심이다.
SQL은 기본적으로 구조적이고 집합적이고 선언적인 언어이고 옵티마이저가 프로시저를 만든다. SQL문의 실행 과정은 SQL파싱, SQL 최적화, 로우 소스 생성으로 나뉜다. 옵티마이저는 최적의 데이터 액세스 경로를 선택해주는 DBMS의 핵심 엔진이다.
데이터베이스 비용은 쿼리를 수행하는 동안 발생될 것으로 예상하는 I/O 횟수 또는 예상소요시간을 표현한 값이다. Table Full Scan은 테이블 전체를 조회한다., Index Range Scan은 큰 테이블에서 소량의 데이터를 검색할 떄 사용한다. 인덱스의 구조는 루트, 브랜치, 리프로 나뉜다. 데이터 인덱스는 일반적인 성능 향상 수단이다. 테이블 데이터에 영향을 주지 않지만 비효율적인 인덱스인 경우 풀 스캔보다 느릴 수 있어서 무조건적인 사용은 안 된다. 인덱스는 BTree 의 데이터 구조를 가진다. 효율적이고 빠른 탐색이 가능하고 데이터가 정렬된 상태로 유지한다. 인덱스의 역효과는 갱신 오버헤드, 의도한 것과 다른 인덱스가 사용되거나 저장소 용량 차지, 느린 성능 등의 역효과가 생길 수 있다. 테이블 크기가 커야하고 선택도가 낮은 칼럼, 기본키는 적용하지 않는 생성 원칙이 있다.
'AI > K-Digital Training' 카테고리의 다른 글
015. K-Digital Training 7-8월 월간 리뷰 (0) | 2021.08.19 |
---|---|
014. EDA프로젝트 Insatacart 고객 데이터 분석하기 (0) | 2021.08.18 |
012. 데이터베이스 개념 요약1 (0) | 2021.08.09 |
011. 네이버 증권에서 내 주식 뉴스 데이터크롤링 (0) | 2021.08.07 |
010. 네이버 증권에서 달러 환율과 내 주식 데이터 크롤링 (0) | 2021.08.06 |