본문 바로가기

IT/기타

IT 기초 공부 (추가중)

반응형

IT 기초

자바 기초

자바 메모리 영역

  1. 메서드 영역 : static 변수, 전역변수, class정보
  2. 스택 : 지역변수, 함수(메서드), LIFO 방식
  3. 힙 : 동적할당 객체 gc가 관리함
    1. 메모리 상수풀 영역 : 힙영역에 생성, 프록세스 종료까지 계속 유지, 작성한 상수값을 가지고 있음

인터페이스 사용 이유

  1. 인터페이스 작성된 책임은 항상 구현되어 있다는 강제성을 가짐 -> 이를 통해 다형성 및 기타 유연한 작업이 가능해짐
  2. Mark 역할을 하여 특정 기능을 표시해줌(Serializable 등)

JDBC란?

  1. 자바에서 데이터베이스 접속할 수 있도록 하는 자바 api

직렬화란?

  1. 스트림을 통해 입출력이 가능할 수 있도록 전달할 수 있는 구조로 변경하는 것

serialVersionUID 선언 이유

  1. 직렬화/역직렬화 때 클레스 버전을 확인하기 위해

리플렉션이란

  1. 컴파일 시점이 아닌 런타임 시점에 메모리에 올라간 클래스나 메서드등을 동적으로 조작할 수 있도록 하는 행위

클래스 멤버 변수 초기화 순서

  1. Static 변수 : 클래스 로드 될 때
  2. 필드 변수 : 객체 생성 될 때 (heap)생성자 block보다 먼저
  3. 생성자 block : 객체 생성 될 때(heap)

Servlet vs JSP

  1. Servlet : 순수 자바 언어로만 이루어져있어서 Servlet 컨테이너가 이해할 수 있음
  2. JSP : html 기반에 java 코드를 블록화하여 삽입한 것으로 servlet 으로 변경됨

제너릭

  1. 선언시 타입을 결정하지 않고 객체를 생서할 때 유동적인 타입으로 재상용하기 위한 것
  2. 컴파일 시점에 자료형을 결정함으로 런타임시 자료형으로 인한 오류를 줄일 수 있다.

POJO

  1. Plain Old Java Object
  2. 특정 자바 모델이나 기능, 프레임워크에 영향을 받지 않는 자바 오브젝트

박식 & 언박싱

  1. 원시형 -> Wrapper Class 로 변환 : 박싱
  2. Wrapper Class -> 원시형 : 언박싱

상속과 컴포지션의 차이

  1. 상속은 확장의 목적으로 사용, 일반 클래스를 상속 받는 것은 위험
    1. 캡슐화 위배 : 슈퍼 클래스 구현에 의존 -> 변경에 취약
    2. 수퍼클래스에 함수가 추가되면 서브클래스 구현에 영향을 미침 -> 잘못된 오버라이딩 이슈
  2. 컴포지션을 통한 wrapper class 생성

JVM 역할 (상세 설명 보충 필요)

  1. Java Byte Code 를 OS에 맞게 해석

추상클래스와 인터페이스 차이

  1. 차이점은 목적
  2. 추상클래스는 공통적인 기능을 하는 객체들의 추상화(계층화)
  3. 인터페이스는 특정 메서드가 반드시 존재하도록 강제하는 역할 -> 해당 인터페이스를 구현한 객체는 같은 동작을 한다는 것을 보장함

다형성

  1. 하나의 메소드나 클래스가 있을때 이것들을 다양한 방법으로 동작한다는 것을 의미

java 동기화 기법 3가지

  1. 문제점
    1. 경쟁 상태 : 여러 스레드가 같은 시점에 변수를 읽는 상태
    2. 가시성 : 변수들이 사용 될 수 있는 영역의 범위
      • 변수 위치가 cpu 레지스트리 위치에 있는지 메인 메모리에 있는지 알 수가 없음
  2. Volatile
    1. volatile을 사용한다면 모든 읽기 쓰기 연산을 메인 메모리에서만 처리된다
    2. 변수의 가시성 문제를 해결
    3. 여전히 경쟁 상태 문제가 발생
    4. volatile의 경우는 하나의 스레드가 쓰기 연산을 하고, 다른 스레드에서는 읽기 연산을 통해 최신 값을 가져올 경우. 즉 다른 스레드에서는 업데이트를 행하지 않을 경우 이용할 수 있다.
  3. Atomic (CAS)
    1. AtomicInteger 클래스는 CAS(compare-and-swap) 기반으로 되어있다.
    2. CAS란 특정 메모리 위치의 값이 주어진 값을 비교하여 같으면 새로운 값으로 대체된다.
    3. 기본적으로 비교하는 과정에서 실패한다면 다시 읽고 비교하고 반복하는 과정을 가진다.
    4. Atomic*** 클래스의 경우는 여러 스레드에서 읽기 쓰기 모두이용할 수 있다
  4. Synchronized (LOCK)
    1. 하나의 스레드가 lock을 얻어 수행이 끝날때까지 다른 스레드들은 lock 풀릴때까지 대기하게 된다
    2. 여러 스레드에서 읽기 쓰기 모두 이용할 수 있다.

예외처리

  1. 에러 (error)
    • java.lang.Error 클래스의 서브 클래스
    • 메모리 부족, 스택오버플로우와 같이 일단 발생하면 복구할 수 없는 문제
    • 주로 vm에서 발생시키는 것
    • catch 블럭으로 잡아도 대응 방법이 없다. 시스템 레벨에서 특별한 작업을 하는게 아니면 에러에 대한 처리는 신경쓰지 않아도 된다.
  2. Exception
    1. Exception
      • Exception 클래스의 서브 클래스
      • 반드시 예외를 처리해야 함
      • 확인시점은 컴파일 단계
      • Checked Exception 이라고 불림
    2. Unchecked Exception
      • RuntimeException 클래스의 서브 클래스
      • 명시적인 처리를 강제하지 않음
      • 확인시점은 실행 단계
  3. 예외처리 방법
    1. 예외 복구
      • 예외가 발생하여도애플리케이션은 정상적인 흐름으로 진행됨
      • 예외가 발생하면 이를 미리 예측하여 다른 흐름으로 유도시키도록 구현함
    2. 예외 처리 회피
      • throws를 통해 호출한 곳으로 예외를 던지고 처리를 회피
      • 호출쪽에서 다시 예외를 받아 처리하도록 해야함
    3. 예외 전환
      • 예외 발생시 다른 예외를 던지는 것
      • 호출쪽에서 더 명확하게 인지 할 수 있도록 돕기 위한 방법
      • Checked Exception 중 복구가 불가능한 예외가 잡혔다면 이를 Unchecked Exception 으로 전환하여 다른 계층에서 예외를 선언할 필요가 없도록 할 수도 있다.
  4. Try-with-resources
    • Java7부터 제공
    • 할당된 자원을 Exception 발생시에 자동으로 해제할 수 있다.
      public class Main {
      public static void main(String[] args) {
        try(InputStream is = new FileInputStream("fileName");
         OutputStream os = new FileOutputStream("fileName")) {
        } catch (IOException e) {
            System.out.println("Exception 발생!");
        }
      }
      }
      ```java
      
      

String Class

  1. new String V.S. 리터럴 이용한 생성
    1. new를 활용한 방식
      • Heap 영역에 존재하게 됨
    2. 리터럴 방식
      • string constant pool 이라는 영역에 존재하게 됨

자바 컬렉션

SET

  1. 중복 요소가 없는 오브젝트 저장 방식
  2. HashSet : Hash 알고리즘으로 Set을 구현
    1. 접근시간 빠름
    2. 순서보장 X,
    3. 정렬시간은 TreeSet보다 느림
  3. TreeSet : 이진트리(red-black)형태로 자료 저장
    1. 정렬을 활용한 연산에는 HashSet보다 유리함
  4. LinkedHashSet : 해쉬 테이블형태로 데이터 접근이 가능
    1. 입력된 순서대로 데이터를 관리한다.

List

  1. 중복 가능, 저장 순서를 저장
  2. ArrayList : 색인을 사용한 List 구현
    1. 랜덤엑세스 성능이 뛰어남
    2. 데이터를 새로 저장하고 삭제할 때는 색인을 수정해야 함으로 불리함
  3. LinkedList : 순차적인 접근 방식으로 List 구현
    1. 데이터 접근시 head부터 차례로 노드를 찾는다.
    2. 데이터를 새로 저장하거나 삭제할때 포인터만 변경하면 됨으로 호율적임
  4. Vector : 모든 메소드 들이 동기화 되어 있는 List
    1. 모든 메서드들이 동기화 되어 있어 쓰레드에 안전함

Map

  1. Key-Value 형태 구조, key 중복 불허
  2. HashMap : Hash 알고리즘을 통하여 Map을 구현한 클래스
    1. null값을 허용함
    2. 동기화 되어있지 않음
  3. HashTable : 데이터를 Hash 테이블에 담음 (HashMap과 동일)
    1. null값을 허용 X
    2. Hash테이블 객체가 동기화 되어 있음
  4. TreeMap : red-black 트리에 데이터를 담음
    1. treeSet과 다른점은 Key에 의해서 순서가 정해짐
  5. LinkedHashMap : 이중연결 리스트 방식을 통해 데이터를 담음
    1. 저장 순서를 구분하는 Map
    2. Key 등록순을 기준으로 함

디자인 패턴

싱글톤

  1. 특정 클래스의 인스턴스 (스레드 풀, 데이터 소스, 네트워크 설정 등) 가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기 위한 패턴 -> 자원 낭비 최소화
  2. 단점
    1. 인스턴스가 호출되는 시점이 아닌 초기에 생성되어 있다면 리소스 낭비를 불러올 수 있다.
    2. 싱글톤 인스턴스가 너무 많은 책임을 가지고 있으면 의존도가 높아지고 객체지향 설계를 거스를 수 있다.
    3. 멀티 스레드 환경에서는 스레드 세이프한 설계가 필요하다.

전략 패턴

  1. 알고리즘군을 정의하고 각각을 캡슐화하여 교환하여 사용할 수 있도록한 패턴
  2. 다형성을 활용하여 독립적으로 유연한 알고리즘 선택이 가능하다.

스프링

스프링이란

  • 자바(JAVA) 플랫폼을 위한 오픈소스(Open Source) 애플리케이션 프레임워크(Framework)
  • 자바 엔터프라이즈 개발을 편하게 해주는 오픈 소스 경량급 애플리케이션 프레임워크

특징

  1. 경량 건테이터로서 자바 객체를 직접 관리
    • 각각의 객체 생성, 소멸과 같은 라이프 사이클을 관리하며 스프링으로부터 필요한 객체를 얻어올 수 있다.
  2. 스프링은 POJO(Plain Old Java Object) 방식의 프레임 워크
    • 일반적인 J2EE 프레임워크에 비해 구현을 위한 특정한 인터페이스를 구현하거나 상속을 받을 필요가 없어 기존에 존재하는 라이브러리 등을 지원하기에 용이하고 객체가 가볍다
  3. 스프링은 제어의 역행 (IoC : Inversion of Control) 을 지원
    • 컨트롤의 제어권이 사용자가 아니라 프레임워크에 있어서 필요에 따라 스프링에서 사용자의 코드를 호출한다.
    • 컨테이너에 의한 제어의 역행으로 인해 DI, AOP 등의 작업이 가능해졌다.
  4. 스프링은 의존성 주입 (DI : Dependency Injection) 을 지원
    • 각각의 계층이나 서비스들 간의 의존성이 존재할 경우 프레임워크가 서로 연결시켜준다.
  5. 스프링은 관점 지향 프로그래밍 (AOP: Aspect Oriented Programming) 을 지원
    • 트랜잭션, 로깅, 보안과 같이 여러 모듈에서 공통적으로 사용하는 경우 기능을 분리하여 개발 가능
    • 수평/횡단 적 관심사에 관련된 내용을 분리하여 개발가능
  6. 영속성과 관련된 다양한 서비스를 지원
    • iBatis 나 Hibernate 등 완성도가 높은 데이터베이스 처리 라이브러리 및 프레임워크와 연결 가능한 인터페이스를 제공한다.
  7. 확장성이 높음
    • 통합을 위해 기존 라이브러리를 감싸는 정도로 스프링에서 사용 가능

DispatcherServlet

  • Spring MVC Framework의 유일한 Front Controller
  • Controller로 향하는 모든 웹요청의 진입점, 웹요청을 처리하며, 결과 데이터를 Client에게 응답함
  • DispatcherServlet은 Spring MVC의 웹요청 Life Cycle을 주관

@MVC (Spring MVC)

  1. 특징
    1. SpringMVC는 모델2 아키텍쳐와 FrontController 패턴을 프레임워크 차원에서 제공
    2. SpringMVC프레임워크는 Spring을 기반으로 하고 있기 때문에 Spring이 제공하는 트랜잭션 처리나 DI 및 AOP등을 손쉽게 사용 가능
  2. 주요 구성 컴포넌트
    1. DispatcherServlet : 스프링 프레임워크의 Front Controller, 웹 요청과 응답의 라이프 사이클을 주관한다.
    2. HandlerMapping : 웹 요청시 URL을 기준으로 어던 핸들러 객체 (컨트롤러) 를 사용하여 처리할지 결정하여 DispatcherServlet에 알려준다.
    3. Controller : 클라이언트의 요청을 처리한 뒤, Model를 호출하고 그 결과를 DispatcherServlet에게 알려 준다.
    4. ModelAndView : Controller가 수행한 결과( Model 데이터) 와 이동할 페이지 (View) 에 대한 정보를 보유
    5. ViewResolver : Controller가 리턴한 뷰 이름을 기반으로 처리 결과를 생성할 뷰를 결정함
    6. View : Controller 처리 결과를 출력한다.

Filter,Interceptor,AOP 차이

  1. 실행 시점 : Filter -> Interceptor -> AOP
  2. 요청 중간에 가로채서 사전작업, 사후작업을 하는것은 공통점
  3. Filter
    1. 클라이언트 요청 정보 객체인 ServletRequest를 서블릿 컨테이너가 생성하고 Servlet의 service 메소드 인자로 전달함
    2. Servlet 앞에 존재함
    3. IP, hostname, 프로토콜 형식, 서버이름, 포트번호, ContentType 등을 가져올 수 있다.
    4. 일반적인 네트워크 통신 기반에 의해서 사용 되는 것들
    5. Servlet 의 web.xml에서 정의
    6. doFilter 메소드의 chain.doFilter(request,response) 를 기점으로 전/후 처리가능
  4. Interceptor
    1. Spring에서 실행될 컨트롤러 빈 오브젝트, 컨트롤러가 돌려 주는 ModelAndView, 발생한 예외 등을 제공받을 수 있음
    2. 요청 파라미터, HTTP 헤더, 세션 및 쿠키 데이터, 요청에 사용된 URL 등을 가져올 수 있다
    3. servlet-context.xml에서 정의한다.
  5. AOP
    1. AOP의 여러가지 기능들을 이용하여 메소드가 시행되기 전, 후 등에 처리
    2. 로깅, 트랜잭션, 에러처리 등 세밀한 요구가 필요한 곳에서 사용 가능

DB 기본

DBMS 언어

  1. DDL (데이터 정의어, Data Definition Language)
    • 데이터베이스 오브젝트가 정의 됨
    • 데이터베이스 메타로 등록
    • CREATE, ALTER, DROP, TRUNCATE
  2. DCL (데이터 제어어, Data Control Language)
    • 저장된 데이터를 올바르게 유지하기 위해 사용
    • 무결성, 보안과 관련한 작업을 수행함
    • GRANT, REVOKE
  3. DML (데이터 조작어, Data Manipulation Language)
    • 데이터를 입력, 수정, 삭제 등의 작업을 수행함
    • SELECT, UPDATE, INSERT, DELETE, MERGE

트랜잭션

  1. 트랜잭션이란
    1. 하나의 논리적 기능을 수행하기 위한 작업단위
    2. DB의 일괄된 상태를 또다른 일괄된 상태로 변화시키는 기능을 수행
  2. 트랜잭션 성질 (ACID)
    1. Atomicity (원자성)
      • 트랜잭션의 연산이 DB에 모두 반영되던지 전혀 반영이 되지 않던지
    2. Consistency (일관성)
      • 트랜잭션이 성공적으로 완료된 후에는 언제나 일관성 있는 DB 상태로 변환되어야 한다.
    3. Isolation (독립성)
      • 수행중인 트랜잭션이 완전히 완료되기전에는 다른 트랜잭션 수행 결과를 참조할 수 없다.
    4. Durablility (영속성)
      • 성공적으로 완료된 트랜잭션의 결과는 시스템이 고장나더라도 영구적으로 반영되어야 한다.
  3. 트랜잭션을 병행처리시 발생할 수 있는 문제
    1. 갱신 내용 손실
      • 동시에 하나의 데이터가 갱신될 때 하나의 갱신이 누락되는 경우
    2. 현황 파악 오류
      • 하나의 데이터 갱신이 끝나지 않은 시점에서 다른 트랜잭션이 해당 데이터를 조회 하는 경우
    3. 모순성
      • 두 트랜잭션이 동시에 실행 될 때 데이터베이스가 일관성이 없는 모순된 상태로 남는 문제
    4. 연쇄 복귀
      • 두 트랜잭션이 하나의 레코드를 갱신할 때 하나의 트랜잭션이 롤백하면 다른 하나의 트랜잭션 마져 롤백이 되는 문제
    5. 해결방법
      • 로킹 제어 기법을 사용
      • DB 일부분을 Lock 시키고 트랜잭션이 완료되면 Unlock 시키는 방법
      • 단위가 크면 관리가 쉽지만 병행성이 떨어짐, 단위가 작으면 관리가 어렵고 오버헤드가 증가함
      • 잘못된 로킹제어는 트랜잭션의 직렬화 가능성을 높임

Query

  1. 집합연산자
    1. UNION : 합집합을 구함 (중복자료 배제)
    2. UNION ALL : 합집합을 구함 (중복자료 포함, 성능 떨어짐)
    3. MINUS : 차집합
    4. INTERSECT : 교집합
  2. JOIN 이란?
    • 두개 이상의 테이블이나 DATASET을 서로 연결하여 데이터를 검색하고자 할때 사용하는 방법
    • 조인의 종류는 CARTESIAN PRODUCT, EQUI JOIN, NON-EQUI JOIN, OUTER JOIN, SELF JOIN 이 있음
  3. JOIN 상세
    1. 카티션 곱 (CARTESIAN PRODUCT)
      • CROSS JOIN (교차조인) 이라고도 불린다.
      • 두 테이블의 곱집합을 반한한다.
      • M개의 열을 가진 테이블과 N개의 열을 가진 테이블이 교차조인 되면 M*N 개의 열을 생성한다.
    2. INNER JOIN (내부조인)
      • 조건을 사용하여 두 테이블의 레코드를 결합한다.
      • EQUI JOIN, NON EQUI JOIN, NATURAL JOIN 등이 있다.
      1. EQUI JOIN
        • 공통 칼럼 값이 equal 일때 양 쪽 테이블의 값을 가져오는 조인
        • 두 테이블을 조인 시킬 조건은 WHERE 절에서 기술함
      2. NON EQUI JOIN
        • 두 테이블간 공통 컬럼 값이 일치하지 않을 때 사용하는 조인
    3. OUTER JOIN
      • OUTER JOIN 은 조인하는 여러 테이블에서 한 쪽에는 데이터가 있고 한 쪽에는 데이터가 없는 경우, 데이터가 있는 쪽 내용을 전부 출력하는 방법이다.
      • 조인 조건에 만족하지 않아도 해당 행을 출력하고 싶을 때 사용할 수 있다.
      • LEFT /RIGHT/FULL OUTER JOIN 이 있다.
      1. LEFT OUTER JOIN
        • 조인문의 왼쪽에 있는 테이블의 모든 결과를 가져온 후 오른쪽 테이블의 데이터를 매칭하고, 매칭되는 데이터가 없을 경우 NULL을 표시한다.
      2. RIGTH OUTER JOIN
        • 조인문 오른쪽에 있는 테이블의 모든 결과를 가져온 후 왼쪽의 테이블의 데이터를 매핑하고, 매핑되는 데이터가 없는 경우 NULL을 표시한다.
      3. FULL OUTER JOIN
        • LEFT OUTER JOIN 과 RIGHT OUTER JOIN 을 합친 것이다.
        • 양쪽 모두 일치하지 않는 것들까지 모두 결합하여 출력한다.
    4. SELF JOIN
      • 하나의 테이블에서 두개의 칼럼을 연결하여 조인 시키는 것이다.
  4. SUB QUERY
    • 하나의 SQL 명령문의 처리 결과를 다른 SQL 명령문에 전달하기 위해 사용
  5. 데이터 무결성 제약 조건
    1. NOT NULL
      • 해당 컬럼 값은 NULL 을 포함 할 수 없음
    2. Unique Key (고유키)
      • 테이블에서 해당 칼럼 값은 반드시 유일 해야 함
    3. Primary key (기본키)
      • 해당 칼럼 값은 반드시 존재해야 하며, 유일해야 함 (NOT NULL + Unique Key)
    4. Foreign Key (외래키)
      • 참조되는 테이블의 칼럼의 값이 존재하면 허용
      • 부모 키가 되기 위한 컬럼은 반드시 무보 테이블의 기본키나 유일키로 설정되어 있어야 함
    5. CHECK
      • 저장 가능한 데이터 값의 범위나 조건을 지정하여 설정한 값만을 허용한다.

DB 기타 (오라클 기준)

  1. OLTP, OLAP 차이점
    1. OLTP (Online Transaction Procession)
      • 다수의 사용자가 실시간으로 데이터베이스이 데이터를 생성하거나 조회한는 등의 단위 작업을 처리하는 방식
    2. OLAP (Online Analytical Processing)
      • OLTP 와 상대되는 개념으로 쌓여있는 데이터를 분석, 다차원적으로 활용 하는 방식
  2. Index 사용 이유
    1. 수 많은 데이터 중에서 원하는 데이터를 빨리 엑세스 할 수 있게 해주는 것이 인덱스
    2. 익덱스를 순서대로 정렬해서 각 로우를 바로 엑세스 할 수 있는 주소를 함께 저장함
  3. Index의 종류와 그 기능
    1. ROWID
      • 해당 로우를 엑세세스 할 수 있는 주소 값
      • 오브젝트 번호, 파일번호, Block 번호, 로우번호 구조로 되어 있음
    2. B + 트리 인덱스
      1. 특징
        1. 균형 트리 형태
        2. 각 노드는 서브트리 포인터, 키 값, 데이터 레코드 포인트로 구성
      2. 장점
        • 폭이 넓고 깊은 구조는 디스크 I/O를 줄여줌
        • 디스크 블록을 읽어오는 횟수가 적음으로 인덱스 순차 파일 구조보다 성능이 좋음
      3. 단점
        • 노드의 삽입과 삭제시 트리의 균형을 유지하기 위해 복잡한 연산이 필요함
        • 다중 키에 대한 질의를 처리하기 위해 많은 수의 탐색이 필요하게 됨
    3. 비트맵 인덱스
      1. 특징
        1. 인덱스를 구성하는 속성(열) 에 대해 각 값에 대해 하나의 비트캡을 구성
        2. 각 비트맵은 테이블의 행 수만큼 비트를 가짐
      2. 장점
        1. 각 속성값에 대한 비트맵을 AND 나 OR 연산을 취함 -> 교집합이나 합집합을 빠르게 구할 수 있음
        2. 행의 개수 계산시 비트 개수만 구하면 됨
      3. 단점
        1. 갱신 비용이 큼
        2. 큰 분포도를 가지는 속성에는 적합하지 않음
    4. 역 전환 키 인덱스
      1. 인덱스의 값이 실제 테이블에서는 반대로 되어 있음
      2. 좌측 리프 Block에 대한 경하 해소 (B+트리 인덱스에 유리)
      3. 범위 스캔시 인덱스 엑세스 불가
  4. 문장 실행 과정
    1. SELECT
      1. Parse -> Bind -> Execute -> Fetch
      2. User Process 는 사용자가 실행한 SQL Server Process 에 전달
      3. Shared Pool 에서 구문분석, 문법검사, 권한검사, 커서공유, 실행계획을 진행 -> 오라클에서는 Parse라 부름
      4. 값을 치환하여 변수 값을 적용, Bind 처리를 하지 않았다면 바로 Execute 단계로 넘어감
      5. Execute 단계는 Cash 에 데이터 Block를 적재하거나 있다면 재사용 함
      6. 최종적으로 Fetch 는 필요한 데이터만 골라서 User Process에 전달
    2. UPDATE
      1. Parse -> Bind -> Execute
      2. Select 문과 다르게 Fetch 문이 없음
      3. Execute 작업에서 변경된 내용을 redo 로그 버퍼에 기록하고 이전 데이터를 undo 세그먼트에 기록함
    3. COMMIT
      1. Redo 로그 버퍼 내용을 redo 로그 파일에 기록함
  5. 커서란
    • 쿼리문에 의해서 반환되는 결과값들을 저장하는 메모리 공간
  6. 동의어(Synonym)란
    • 데이터베이스 투명성을 위해 사용
    • 이전에 참조하던 오브젝트가 변경되어도 SQL문을 고칠 필요 없음
    • 객체의 이름이 길 경우 용이
  7. 시퀀스란
    • 유일한 값을 생성해주는 오라클 객체
    • 기본키와 같이 순차적으로 증가하는 컬럼을 자동 생성 가능
    • 테이블과 독립적으로 저장되고 생성됨
  8. 데이터베이스(스토리지) 엔진
    1. 개요
      • 물리적 저장장치에서 데이터를 다루는 역할을 담당
    2. InnoDB
      • MySql에서 기본 default 로 설정되는 스토리지 엔진
      • transaction safe 함
      • 커밋과 롤백, 그리고 복구 기능을 제공함
    3. MyISAM
      • 트랜잭션을 지원하지 않고 table-level locking 을 지원
      • multi-thread 환경에서는 성능이 저하됨
    4. Archive
      • 로그 수집에 적합한 엔진
      • 데이터가 메모리상에서 압축되고 압축된 상태로 디스크 저장됨
      • row-level locking 이 가능함
      • 트랜잭션 지원이 안됨
      • 한번 Insert 된 데이터는 Update, Delete가 어려움
  9. 데이터베이스 회복 기법
    1. 로그 기반 회복 기법
    2. 지연 갱신 회복 기법
      • write 연산 지연, 로그에 db변경 내역 저장
      • 트랜잭션 완료시 로그를 보고 write 연산 수행
      • 트랜잭션 완료시 장애 발생 -> redo 만 실행
      • 트랜잭션 미 완료시 장애발생 -> 로그 무시
    3. 즉시 갱신 회복 기법
      • 즉시 DB변경, 로그에 기록
      • 장애 발생 시 로그에 기반하며 undo 실행
    4. 체크포인트 회복기법
    5. 그림자 페이징 회복 기법

자료구조

반응형

'IT > 기타' 카테고리의 다른 글

2019년 회고  (0) 2019.12.30
내가 생각하는 소통이란  (0) 2019.05.05
Spring boot aws rds 로컬 연동 에러  (1) 2019.01.07
아이폰 XR, XS, XS MAX UDID 확인방법  (0) 2018.12.08
백준 11723 집합  (0) 2018.06.13