본문 바로가기

CS 백엔드/데이터베이스

(7)
[DB] INDEX 인덱스 1. 데이터베이스에 있어서 인덱스란? 데이터베이스의 모든 테이블을 검색해서 원하는 결과를 가져오려면 시간이 오래 걸린다. 그래서 컬럼의 값과 해당 레코드가 저장된 주소를 키와 값의 쌍으로 인덱스를 만들어서 검색 및 정렬 속도를 향상시키는 목적으로 만든다. 인덱스는 항상 정렬된 상태를 유지하기 때문에 원하는 값을 탐색하는데는 빠르지만 새로운 값을 추가하거나 수정, 삭제하는 경우에는 쿼리문 실행 속도가 느려지는 문제가 있다. 즉, 인덱스는 DB에서 데이터의 저장 성능을 희생하고 그 대신 데이터의 읽기 속도를 높이는 기능이다. 인덱스의 장점 테이블의 검색 및 정렬 속도 향상 그룹화 작업의 속도 향상 인덱스의 단점 파일 크기가 늘어난다 데이터의 CUD 성능 감소 인덱스 생성 후 데이터 변형이 계속 이루어지면, ..
[DB] SQL과 NoSQL 데이터 베이스란 간단하게 말하면 데이터의 모음을 의미한다. 우리는 데이터를 체계적으로 관리하고 싶을 때, 이러한 데이터베이스를 활용하게 된다. 데이터를 조직화하여서 관리하게 되면, 대량의 데이터도 효율적으로 관리할 수 있는 장점이 생긴다. 그렇다면 데이터베이스는 어떤 것들이 있으며, 어떤 형태들이 있을까? 대표적으로 관계형 데이터베이스와 비관계형 데이터베이스가 있을 것이다... 1. 관계형 데이터베이스 RDB 엑셀과 유사한 2차원의 테이블 형식으로 구성되며 속성과 값을 이용하여 데이터를 정의하고 저장, 관리하는 데이터베이스다. 관계형 데이터베이스는 테이블의 구조와 데이터 타입 등을 사전에 정의하고 그에 맞는 형태를 가진 데이터만 삽입할 수 있다. 관계형 데이터베이스 관리 시스템 (RDBMS) 종류 MyS..
[DB] 트랜잭션의 격리수준 1. 트랜잭션 격리 수준 동시에 DB에 접근할 때 그 접근을 어떻게 제어할지에 대한 설정 레벨(고립도)이 높아질수록 고립도가 올라가서 더 확실한 처리가 가능해지지만 동시에 수행될 수 있는 트랜잭션을 순서대로 처리하게 되어 속도가 느려지게 된다. 2. 트랜잭션의 격리 수준 단계 (1) Read Uncommitted 트랜잭션에서 처리 중인 아직 커밋되지 않은 데이터를 다른 트랜잭션이 읽는 것을 허용한다. SELECT 문장이 수행되는 동안 해당 데이터에 Shared Lock이 걸리지 않는다. 발생할 수 있는 문제점 Dirty Read Non-Repeatable Read Phantom Read (2) Read Committed 트랜잭션이 커밋되어 확정된 데이터만 다른 트랜잭션이 읽도록 허용한다. 발생할 수 있는..
[DB] 트랜잭션 1.트랜잭션 데이터베이스가 데이터를 읽거나 쓰는 최소 단위 데이터베이스의 상태를 변화시키기 위해 수행하는 작업 단위 데이터베이스에 접근하는 방법은 장고의 ORM을 이용한 쿼리가 있는데, 이 쿼리들이 하나로 묶인 단위 2. 트랜잭션 특징 (1) 원자성(Atomicity) 트랜잭션 연산은 데이터베이스에 모두 반영되든지 아니면 전혀 반영되지 않아야 함 트랜잭션 내의 모든 명령은 반드시 완벽히 수행되어야 하며, 어느 하나라도 오류가 발생하면 트랜잭션 전부가 취소되어야 함 (2) 일관성(Consistency) 트랜잭션이 실행을 성공적으로 완료시 언제나 일관성 있는 데이터베이스 상태로 변환됨 시스템이 가지고 있는 고정 요소는 트랜잭션 수행 전과 트랜잭션 수행 완료 후의 상태가 같아야 함 (3) 독립성, 격리성(Is..
[DB] 데이터 베이스 정규화 1. 정규화(Normalization) 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성을 유지할 수 있으며, DB 저장용량 역시 줄일 수 있다. 이러한 정규화는 테이블을 분해하는 단계가 있는데, 테이블을 어떻게 분해되는지에 따라 정규화 단계가 달라진다. 디비의 정규화가 진행되면 기존의 릴레이션이 분해가 된다. 하지만 분해된 릴레이션은 무손실 조인을 무조건적으로 보장해야한다. 여기서 무손실 조인은 분해된 릴레이션은 다시 결합하더라도 분해 전 결과랑 같아야 한다. (1) 제 1 정규화 테이블의 컬럼이 원자값(Atomic Vlue, 하나의 값)을 갖도록 테이블을 분리하는 것. 취미 테이블에서 추신수와 박세리는 여러 개의 취미를 가지고 있기 때문에 제 1정규형을..
[DB] 데이터 베이스(Database)의 기본 1. 데이터 베이스 데이터 혹은 정보를 체계적으로 관리하기 위해 저장되어있는 데이터의 집합이다. 2. 데이터 베이스의 특징 독립성 물리적 독립성 : 데이터베이스 사이즈를 늘리거나 성능 향상을 위해 데이터 파일을 늘리거나 새롭게 추가하더라도 관련된 응용 프로그램을 수정할 필요가 없다. 논리적 독립성 : 데이터베이스는 논리적인 구조로 다양한 응용 프로그램의 논리적 요구를 만족시켜줄 수 있다. 무결성 여러 경로를 통해 잘못된 데이터가 발생하는 경우의 수를 방지하는 기능으로 데이터의 유효성 검사를 통해 데이터의 무결성을 구현하게 된다 보안성 인가된 사용자들만 데이터베이스나 데이터베이스 내의 자원에 접근할 수 있도록 계정 관리 또는 접근 권한을 설정함으로써 모든 데이터에 보안을 구현할 수 있다. 일관성 연관된 정..
[데이터베이스] RDB에 하지 말아야 할 것들 우연히 좋은 좋은 글을 발견해서 공유하고자 한다. 1. DB에 일 시키지 말자. DB랑 서버랑 요금을 비교해보면 서버가 훨씬 저렴할 것이다. 또한, 서버는 증설해도 DB 보다는 부담이 덜하다. 이 말은 즉, 서버가 연산을 해서 DB에 질의를 하는 것이 좋지, DB에 일 시켜서 버티지 못해 스펙을 높여야 하거나 클러스터링이나 샤딩 등으로 늘려야 하는 대가는 굉장히 비싸다. 2. RDB에 로그를 넣으면 안된다. 로그 전용 DB 라면 로그를 넣어도 된다. 하지만 로그는 계속해서 발생할 것이고, 유저가 몰리게 된다면 짧은 시간에 로그는 대량으로 발생할 것이다. 그렇게 발생한 대량의 로그 때문에 서버의 DB가 터질 수 있다. 아니 터진다. 3. 컬럼을 추가하기 전에 생각해야한다. 필요한게 생겨서 컬럼을 추가하는건..