렉시컬 스코프, 네트워크 7계층, 트랜잭션

업데이트:

렉시컬 스코프

렉시컬 스코프란??

렉시컬 스코프는 함수를 어디에서 호출하는지가 아닌 어디에 선언하였는지에 따라 결정되는 것을 말한다.

즉 함수를 어디에 선언(호출 x) 했는지에 따라 상위 스코프를 결정하는 것입니다.

let x = 1;

function first() {
  let x = 10;
  second();
}

function second() {
  console.log(x)
}

first();
second();

// 1
// 1

예를 들어 위와같이 있을 때 second()함수first()함수 내부에서 호출이 되었습니다.
실행 결과만 보면 전역에 존재하는 x=1의 값이 나오게 되는데 렉시컬 스코프의 특징에 의해 호출에 의해 상위 스코프를 결정하는게 아닌 선언된 곳을 기준으로 상위스코프가 정해지기 때문에 값은 1이 나오는 것 입니다.

조금더 자세히 설명하자면 실행컨텍스트가 실행이 될 때 LexicalEnvironment내에 있는 outerEnvironmentReferenc에 의해 일어나는 현상인데 outerEnvironmentReferenc는 자신이 호출 및 선언될 당시의 LexicalEnvironment를 참조하기 때문입니다.

네트워크 7계층

봐도봐도 어렵지만 이러한 것들이 있구나 하고 이해만 해보자..

OSI 7계층

OSI 계층으로는 물리, 데이터링크, 네트워크, 전송, 세션, 표현, 응용 계층이 있습니다.

  • 물리 - 물리적 장치와 인터페이스 사이에서 전송을 위해 필요한 기능과 처리절차
  • 데이터 링크 - 노드와 노드 사이의 데이터 전달
  • 네트워크 - 송신 측에서 최종목적지까지 패킷 전달
  • 전송 - 네트워크 계층에서 패킷을 종단까지 전달하면, 전송층은 종단 내에서 최종 수신 프로세스로의 전달(포트주소)을 담당
  • 세션 - 통신중인 프로세스 사이의 대화제어 및 동기화를 담당
  • 표현 - 데이터의 변환, 압축, 암호화를 담당
  • 응용 - 사용자에게 서비스 제공 역할, FTP, HTTP 등 사용자가 원하는 최종목표에 해당

물리계층에서 네트워크 장치를 통해 데이터 전송 및 수신을 한다.

1계층인 물리 계층은 하드웨어, 2계층인 데이터링크 계층은 하드에워+소프트웨어, 3계층부터는 소프트웨어 입니다.

트랜잭션

트랜잭션이란?

트랜잭션은 데이터베이스에서 상태를 변화시키기 위해 수행하는 작업의 단위를 뜻한다.
즉 SQL 질의어를 통해 데이터베이스에 접근하여 조회, 삽입, 삭제, 수정등을 한다.

작업의 단위는 질의어 하나만 사용하는 것이 아닌 어떠한 데이터를 조회하고 수정 또는 조회하고 삭제와 같이 이러한 일련의 과정들을 합친 것을 하나의 트랜잭션이라고 한다.

트랜잭션의 특징

ACID

  • 원자성(Atomicity) - DB에 모두 반영되거나 안되거나
  • 일관성(Consistency) - 트랜잭션이 진행되는 도중에 DB가 변경되더라도 처음 트랜잭션이 수행되기 위해 참조한 DB로 진행이 되어야한다.
  • 독립성(Isolation) - 어떠한 트랜잭션이 진행되고 있을 때 다른 트랜잭션이 끼어들 수 없는 특징
  • 지속성(Durability) - 트랜잭션이 완료되었을 경우 그 결과는 영구적으로 반영이 되어야 하는 특징

Commit, Rollback 연산

  • Commit - 하나의 트랜잭션이 성공적으로 끝났을 경우 남기는 기록, 즉 수행했던 기록이 로그에 저장된다.
  • Rollback - 트랜잭션 수행 중 원자성이 깨졌을 경우 트랜잭션을 다시 시도하거나, 부분적으로 연산된 결과를 다시 취소시킨다.



참고
위키
MDN

댓글남기기