CS자료 28

[DB] 파티셔닝

파티셔닝 큰 데이터 셋을 여러 개로 나누는 것 데이터 규모가 대용량화되며 용량의 한계와 성능의 저하에 따른 보완 방법 데이터베이스를 분산 처리해 성능 저하를 막는다. 장점 성능: 쿼리 성능 향상, 대용량 WRITE 환경, 데이터 Access 범위를 줄여 성능 향상 가용성: 데이터 훼손 가능성이 줄고 가용성이 좋아짐, 독립적으로 백업 및 복구가 가능 관리 용이 단점 나눠진 테이블에 대한 JOIN에 대한 비용 증가 파티셔닝의 종류 수평 파티셔닝 - 샤딩 수직 파티셔닝 - 테이블에서 큰 데이터를 가지는 컬럼만 따로 빼는 방식 파티셔닝을 할때 테이블이 2GB 이상일때 History Table처럼 write만 하는 경우 또는 write가 필요없는 데이터가 있는 경우 파티셔닝 분할 기준 4가지 범위 분할: prod..

[DB] 트랜잭션 격리수준

트랜잭션 격리 수준 트랜잭션 격리 수준 동시에 여러 트랜잭션이 처리될 때, 다른 트랜잭션에서 변경하거나 조회한 데이터를 볼 수 있도록 허용 여부를 결정하는 것 격리 수준이 필요한 이유 데이터 베이스는 ACID 특징과 같이 독립적인 수행을 해야합니다. 그래서 아예 접근이 불가능게 하면 독립적인 수행을 할수 있지만 성능은 떨어지게 되고 접근을 느슨하게 하면 잘못된 값 처리가 될수 있습니다. 따라서 최대한 효율적인 잠구기(Locking)가 필요하다. 트랜잭션 격리 수준의 종류 READ UNCOMMITTED(1단계) READ COMMITTED(2단계) REPEATABLE READ(3단계) SELIALIZABLE(4단계) 아래로 갈수록 고립도가 올라가고 성능이 떨어집니다. READ UNCOMMITTED (트렌젝션..

[DB] 클러스터링

클러스터링 여러 개 DB를 수평적인 구조로 구축하는 방식 분산 환경 구성으로 Single Point Of Failure 문제를 해결하는 FailOver(장애 대응) 시스템을 구축하기 위해 사용 동기 방식으로 노드 간 데이터 동기화 클러스터링 처리 방식 쓰기 트랜잭션 수행 후 커밋 실행 디스크에 쓰기 전에 다른 노드에 데이터 복제 요청 확인 메시지가 오면 디스크에 쓰기 시작 및 저장 장점 데이터 정합성을 높일 수 있다. 노드가 죽어도 장애 없이 운영 가능 단점 노드 간 데이터 동기화가 필요 → 쓰기 성능이 Replication에 비해 좋지 못함 장애 전파 시 처리가 어렵고 데이터 동기화때문에 스케일링 한계가 있다. 레플리케이션과 클러스터링의 차이? 레플리케이션은 Master-Slave 클러스터링은 수평적인 구

[DB] 정규화

정규화 정규화란? 여러 규칙을 사용해 데이터베이스를 완벽하게(이상현상 없게) 설계하는 방법이고 이를 통해 데이터베이스에 저장된 데이터의 무결성을 향상시키고 저장공간을 절약 합니다. 정규화 방법은 문제가 있는 테이블은 문제가 없는 작은 테이블로 쪼개는 방법입니다. 나누는 정도에 따라 규칙(제약조건)이 있고 그 정도를 정규형(Normal Form)이라고 부른다. 정규형은 1NF, 2NF, 3NF, BCNF, 4NF, 5NF, 6NF가 있는데 차수가 높아질수록 규칙(제약조건)이 까다로워진다. (정보처리기사 대비용으로 도부이결다조 (두부이겨다줘) 일반적으로는 1~3NF(또는 ~BCNF)까지만 사용하고 나머지 정규형은 학문적 용도(전공, 수업, 논문 등)로 사용된다. 1차 정규화 테이블(릴레이션)에 각 도메인은 ..

[DB] 인덱스를 사용하는 이유

인덱스를 사용하는 이유 인덱스란 무엇인가?? 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조입니다. 실생활에 인덱스 백과사전이나 책들을 보면 색인(인덱스)라는 페이지를 앞쪽 혹은 뒤쪽에서 볼수있다. 인덱스 관리 인덱스는 항상 최신 상태를 유지해야 원하는 값을 빠르게 탐색할수있다. 하지만 인덱스에서는 DB와 달리 Insert, Delete, Update가 달라서 추가적인 작업이 필요하다. INSERT: 새로운 데이터에 대한 인덱스를 추가합니다. DELETE: 삭제하는 데이터의 인덱스를 사용하지 않는다는 작업을 진행합니다. UPDATE: 기존의 인덱스를 사용하지 않음 처리하고, 갱신된 데이터에 대해 인덱스를 추가합니다. 이러한 이유로 빈번한 DELETE와..

[DB] 옵티마이저

옵티마이저란? 가장 효율적인 방법으로 SQL을 처리할 경로를 생성해주는 DBMS의 핵심 엔진 컴퓨터의 CPU처럼 DBMS는 옵티마이저가 있다. 개발자가 SQL을 실행해도 바로 실행하는 것이 아닌 옵티마이저를 거쳐 계획을 여러 가지 세운 후 최적의 계획을 실행합니다. 옵티마이저의 종류 규칙 기반 옵티마이저 일정한 규칙을 가지고 실행 계획을 생성 우선순위가 높은 규칙이 적은 계획으로 작업을 수행 비용 기반 옵티마이저 대부분의 DBMS가 비용 기반 옵티마이저로 수행된다. 규칙 기반 옵티마이저의 단점을 보완 SQL문을 처리할때 필요한 비용이 적은 계획을 선태 비용 기반 옵티마이저의 구성 요소 질의 변환기 대안 계획 생성기 비용 예측기 옵티마이저 동작 방식 Parser : SQL 문장을 분석하여 문법 검사와 구성..

[DB] 샤딩

샤딩 데이터 파티셔닝의 종류 물리적으로 다른 데이터베이스에 데이터를 수평 분할 방식으로 분산 저장 및 조회하는 방법 샤드: 전체 중 작은 부분 데이터를 샤드 키에 따라서 다른 서버에 분할 분산 테이블은 하나의 샤드 키만 가지고 있어야 한다. 샤드 키란? 어떤 샤드에 저장되어야 할지 결정하는 키 샤드 키 결정 방법 3가지 해시 샤딩: 해시 알고리즘을 사용. 해시 크기는 몇 개의 샤드를 구성하냐에 따라 결정. 구현이 간단하지만 확장성이 좋지 못하다. 샤드가 늘어날때 해시 함수가 바뀌어야 하기 때문에 데이터 정합성이 깨지게 된다. 다이나믹 샤딩: 해시 샤딩을 보완하기 위한 방법. Locator service로 샤드 키를 얻는데 테이블 형식 데이터로 샤드를 결정해 저장하는 방식. 확장성이 좋다. Entity G..

[DB] Replication

Replication 데이터베이스 서버의 복제화를 가진다는 뜻 Master와 Slave DB가 있고 Master에서 Slave DB로 데이터 동기화 Master는 쓰기 작업만을 처리 Slave는 읽기 작업만을 처리 Log 종류 Binary Log: DB 변경 내용을 기록하는 Log Relay Log: Slave DB에 위치, Binary Log를 복사, 저장, 이용하는 Log 복제화를 하는 이유 데이터 손실을 막기위해 Slave DB가 Master DB 장애 시 Master Db로 승격될 수 있다. 지연을 줄일 수 있다. 복제본을 지리적으로 가까운 곳에 두어 빠르게 접속할 수 있다. Replication Lag master에서 slave로 복사되는 시간을 말함 수행 시간이 길어지게 되면 데이터 일관성에 ..

[DB] ORM

ORM(객체 관계 매핑) ORM이란? ORM은 Object Relational Mapping의 약자로, 객체 관계 매핑이라고도 한다. 객체는 객체 지향 프로그래밍(OOP)에서 사용하는 객체를 의미한다. 관계는 관계형 데이터베이스를 의미한다. 따라서, 객체와 관계형 데이터베이스를 매핑해주는 개념이다. ORM Idea 원래 관계형 DB를 사용하기 위해선 SQL을 사용했어야 했다. 따라서, 개발자는 코드 뿐만 아니라 Query까지 작성하고 신경써야하는 불편함이 있었다. ORM은 이러한 불편함을 해소했다. 이러한 ORM 기술은 자바, 파이썬과 같은 프로그래밍 언어 별로 기술이 구축되어 있다. 즉, ORM 기술은 개발자로 하여금 코드만 집중할 수 있게 도와주는 친구다 ORM 장점과 단점 장점 직관적이고, 로직에 ..