Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[데이터베이스] RDB #2

Open
Donggggg opened this issue Oct 1, 2021 · 0 comments
Open

[데이터베이스] RDB #2

Donggggg opened this issue Oct 1, 2021 · 0 comments
Assignees

Comments

@Donggggg
Copy link
Collaborator

Donggggg commented Oct 1, 2021

관계형 데이터베이스 (RDB)

  • 오늘의 꿀팁
    • 재질문을 통해 면접관의 질문을 재정의한 후 답변을 이어간다. <두괄식 활용>
    <예시>
    Q. RDB가 무엇인지 설명해주실래요? 
    A1. NOSQL와 비교하여 RDB를 설명드려봐도 될까요? 
    A2. 블라블라..
    

관계형 데이터베이스란?

특징

관계를 사용하는 데이터베이스

장점

실세계와 연관성이 있기에 보편적이다. (보편성)
확장성 있다. (확장성)
관계를 정의하기 좋다 (흐음.. **성..?ㅠ)

단점

구조로 표현은 가능하다해도 구현의 난도가 있는 경우가 있다.
(성능을 개선하는 방안이 있지만) 대용량을 처리하는 상황에서 비효율적이다.
설계에 많은 시간을 할애해야한다.

트랜잭션이란?

트랜잭션 Wiki
DB를 지탱하는 트랜잭션

정의

RDB에서 한 작업을 처리해야할 단위

성공

실패

4가지 특성 ACID

예시 - 각 회사의 결제 시스템을 예시를 들어보자.

DB에서의 트랜잭션과
서버 어플리케이션의 트랜잭션은 비슷한 기능이지만
각각 처리하는 곳이 다르다.
DB의 트랜잭션은 DB 내의 작업에 대한 단위이고
서버 어플리케이션의 트랜잭션은 서버 로직(가령 비즈니스 로직과 같은 것..?)을 처리하는 대한 단위
  1. Atomicity (원자성)
    페이 사용자가 결제를 시도할 때 성공을 한다면 성공 처리가 되어야 하고 실패를 한다면 실패 처리가 되야 한다. 중간에 성공이나 실패가 처리되다가 종료될 수 없다.
  2. Consistency (일관성)
    받은 금액 - 보낸 금액 = 0원이 되야한다. <제로썸 게임>
  3. Isolation (고립성)
    다른 트랜잭션 단위에 간섭을 받지 않는다.(MUTEX)
  4. Durability? (지속성)
    시스템 장애 시에도 트랜잭션 작업의 결과가 보장된다.
    이를 보장하려면 회복기능이 필요하다.

트랜잭션의 필요성

트랜잭션의 상태

커밋

롤백

인덱싱

인덱스란?

<정의>
데이터베이스의 색인 기능입니다.
데이터의 주소에 빠른 접근이 하도록 <키,포인터> 구조로 관리하는 파일이다.

<필요한 이유>

<인덱스가 안좋은 상황>
Problem :
유찬 - Update나 Delete 연산이 잦은 테이블에 인덱스 적용은 좋지 않다. 읽기/쓰기 측면으로 유리한 부분을 채택
Why? :
찬양 - 수정, 삭제가 자주 발생하면 계속해서 다시 인덱스를 수정해야하기 때문에 성능상 문제가 발생한다.
영범 - 파편화...? Row 별로 메모리에 Range 가 저장되어 있으면 중간에 빵꾸나서 파편화가 나려나 ㅋ
포스팅 - 인덱스 파일을 따로 두기에,
추가 - 애초에 RDB가 쓰기가 아닌 읽기를 주목적으로 둔 DB이기에 빠른 조회를 위해 설계된 인덱스를 사용하는 것은 장점을 더 부각하는 것, 쓰기 성능이 주목적이라면 NOSQL을 사용하는게 좋다.

Primary Index & Secondary Index

차트월드맨

  • Dense-index : DataFile에 있는 모든 레코드의 <key, pointer>정보를 저장하고 있는 인덱스
  • Sparse-index

B+ Tree

  • B-Tree
    B-Tree

  • B+Tree
    B+Tree

Hash Table

<동작 과정>

운영체제

페이징기법

  • Common(공통) 주제 질문 최소 5개 이상
  • 지엽적인 주제 질문 자유 0개 이상
@yuchanleeme yuchanleeme changed the title 트랜잭션 1 [데이터베이스] 트랜잭션 1 Oct 4, 2021
@Dev-Beom Dev-Beom changed the title [데이터베이스] 트랜잭션 1 [데이터베이스] RDB Oct 4, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants