GET과 POST는 HTTP 프로토콜에서 서버와 클라이언트 간 통신에 활용되는 요청(Request) 메소드이다.

 

GET과 POST의 차이

  • GET은 URL의 뒤에 ?를 붙여 전달한다. 전송량에 제한이 있고, 사용자에게 데이터가 노출됩니다.
  • POST는 HTTP body에 포함하여 전달합니다. 전송량에 제한이 없고, 사용자에게 데이터가 보이지 않습니다. (암호화는 안됨)
  • 둘 다 암호화가 따로 없어서 보안에는 둘 다 취약하다.
  • 서버의 값이나 상태를 변경하는 경우에는 POST로, SQL 쿼리의 SELECT와 같은 단순 조회의 경우 GET을 사용

 

GET

  • GET 가져오는 , 서버로부터 정보를 요청하기 위해 사용
  • URL에 데이터를 포함시켜 요청한다. (기존의 URL 뒤에 ?를 붙여 구분)
  • 전송하는 길이에 제한이 있다. 
  • URL에 데이터가 노출되어 보안에 취약하다.
  • URL 형식에 맞지 않는 데이터는 인코딩(Encoding)이 반드시 필요하다.(한글이나 특수문자를 전송할 경우)
  • 캐싱할 수 있다.

→ 만약 웹 페이지 게시판 수정, 삭제 기능을 GET으로 구현한다면 캐싱으로 의도치않게 글이 수정, 삭제 될 수 있다. 때문에 주로 서버에 데이터를 요청(Select)할 때 사용

ex) 게시판 게시물 조회 

 

+ 캐싱(Caching)이란

캐싱이란 한번 접근 후, 또 요청할 시 빠르게 접근하기 위해 레지스터에 데이터를 저장시켜 놓는 것입니다.

 

POST

  • POST 수행하는 ,  데이터 추가/수정하기 위해 사용
  • 데이터를 HTTP body에 담아 전달한다.
  • GET과 달리 URL에 데이터가 노출되지 않는다. BUT 암호화가 되지는 않음
  • 전송하는 길이에 제한이 없다.
  • 캐싱할 수 없다.

→ 주로 서버에 데이터를 전달하기 위해 사용

반응형

'cs지식 > CS' 카테고리의 다른 글

[CS] 쿠키(Cookie)와 세션(Session) 차이  (0) 2021.05.26

▶ 쿠키와 세션을 사용하는 이유

  • HTTP의 비연결성(Connectionless)과 비상태성(Stateless)을 보완하여 서버가 클라이언트를 식별하기 위해 사용합니다.
  • HTTP는 서버의 자원을 절약하기 위해 모든 사용자의 요청마다 연결과 해제의 과정을 거치기 때문에 연결 상태를 유지하지 않고(비연결성), 연결 해체 후에도 상태 정보를 저장하지 않습니다.(비상태성)  → 사용자를 식별할 수 없어 매번 새로운 사용자로 인식하게 됩니다. ex) 페이지를 이동할 때마다 로그인을 다시 해야 됨.

+ 비연결성(Connectionless) : 클라이언트가 요청(request) 한 후 응답(response)을 받으면 연결을 끊는다

+ 비상태성(Stateless) : 통신이 끝나면 상태를 유지하지 않는다.

 

 쿠키와 세션의 차이 -> 저장 위치, 보안, 속도

  • 가장 큰 차이점은 정보의 저장 위치입니다. 쿠키는 클라이언트에, 세션은 서버에 저장됩니다.
  • 보안면에서는 세션이 더 우수하며, 요청 속도는 쿠키가 세션보다 더 빠릅니다. 그 이유는 세션은 서버의 처리가 필요하기 때문입니다.
  • 쿠키는 클라이언트 로컬에 저장되기 때문에 변질되거나 스니핑 당할 우려가 있어 보안에 취약하지만 세션은 쿠키를 이용하여 sessionid만 저장하고 그것으로 구분해서 서버에서 처리하기 때문에 비교적 보안성이 좋습니다.
  • 쿠키와 세션은 비슷한 역할을 하며 동작 원리도 비슷합니다. 그 이유는 세션도 쿠키를 사용하기 때문입니다.

+ 세션을 사용하면 좋은데 왜 쿠키를 사용하는가?

-> 세션은 서버의 자원을 사용하기 때문에 사용자가 많을 경우 소모되는 자원이 상당합니다. 때문에 자원관리 차원에서 쿠키와 세션을 적절히 사용하여 서버 자원의 낭비를 방지하고 속도를 높일 수 있습니다.

 

▶ 쿠키(Cookie)

쿠키란

  • 클라이언트(브라우저) 로컬에 저장되는 Key와 Value로 구성된 String형태의 작은 데이터 파일
  • 쿠키의 구성요소 : 이름, 값, 유효시간, 도메인, 경로
  • 세션 관리 : 로그인, 접속 시간, 장바구니 등 서버가 알아야 할 정보들을 저장
  • 개인화 : 사용자마다 다르게 그 사람에 적절한 페이지를 보여줄 수 있다.
  • 트래킹 : 사용자의 행동과 패턴을 분석하고 기록한다

 

쿠키 사용 예

-> 사용자 편의를 위한 것, 지워져도 되고, 가로채이더라도 큰 지장이 없는 수준의 정보

  • 쇼핑몰의 장바구니 기능
  • ID 저장, 자동 로그인
  • 자동 완성, 팝업창 일주일간 다시 보지 않기
  • 최근 검색한 상품들을 광고에서 추천

 

▶ 세션(Session)

세션이란

  • 세션은 쿠키를 기반으로 하고 있지만, 사용자 정보 파일을 브라우저에 저장하는 쿠키와 달리 세션은 서버 측에서 관리합니다.
  • 각 클라이언트에게 고유 세션 ID를 부여한다.
  • 보안면에서 쿠키보다 우수하다. -> 사용자에 대한 정보를 서버에 두기 때문에
  • 사용자가 많아질수록 서버 메모리를 많이 차지하게 된다
  • 동접자 수가 많은 웹 사이트의 경우 서버에 과부하를 주게 되므로 성능 저하의 요인이 됩니다.

 

세션 사용 예

-> 사용자나 다른 누군가에게 노출되면 안 되는 중요한 정보

  • 로그인 유지
  • 보안상 중요한 작업을 수행할 경우

 

  쿠키(Cookie) 세션(Session)
저장위치 클라이언트 서버
저장형식 text Object
리소스(사용하는 자원) 클라이언트의 리소스 서버의 리소스
용량제한 클라이언트에 300개 쿠키 저장 가능
하나의 도메인 당 20개,
하나의 쿠키 당 4KB
제한없음
만료시점 쿠키 저장 시 설정
(설정 없을 시에는 브라우저 종료시 만료)
브라우저 종료 시 삭제
속도 세션보다 빠름 쿠키보다 느림
보안 세션보다 안좋음 쿠키보다 좋은
반응형

'cs지식 > CS' 카테고리의 다른 글

[CS] GET과 POST 비교  (0) 2021.05.26

HTTP(HyperText Transfer Protocol)

  • 인터넷 상에서 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약(80 포트 사용)
  • 서버에서부터 브라우저로 전송되는 정보가 암호화 되지 않아 보안 이슈가 존재합니다.

 

HTTPS(HyperText Transfer Protocol Secure)

  • HTTP에 데이터 암호화 SSL이 추가된 통신규약(443 포트 사용)
  • 인터넷 상에서 정보를 암호화하는 SSL 프로토콜을 사용해 클라이언트와 서버가 자원을 주고받을 때 쓰는 통신 규약으로 텍스트를 암호화합니다. (공개키 암호화 방식으로)

 

+ 공개키(Public Key) 암호화

  • 자신이 가지고 있는 비밀키로만 복호화할 수 있는 공개키를 대중에게 공개함
  • 공개키와 개인키는 서로를 위한 1쌍의 키이다
  • 공개키 : 모두에게 공개 가능한 키
  • 개인키 : 나만 가지고 알고 있어야 하는 키
  • 전달할 메시지를 공개키로 암호화하여 이를 전송하면 개인키로 이를 복호화하여 메시지를 확인할 수 있다.

 

+ HTTPS 통신 흐름

  1. 애플리케이션 서버(A)를 만드는 기업은 HTTPS를 적용하기 위해 공개키와 개인키를 만든다.
  2. 신뢰할 수 있는 CA 기업을 선택하고, 그 기업에게 내 공개키 관리를 부탁하며 계약을 한다.
    • CA란? : Certificate Authority로, 공개키를 저장해주는 신뢰성이 검증된 민간기업
  3.  계약 완료된 CA 기업은 해당 기업의 이름, A서버 공개키, 공개키 암호화 방법을 담은 인증서를 만들고, 해당 인증서를 CA 기업의 개인키로 암호화해서 A서버에게 제공한다.
  4. A서버는 암호화된 인증서를 갖게 되었다. 이제 A서버는 A서버의 공개키로 암호화된 HTTPS 요청이 아닌 요청이 오면, 이 암호화된 인증서를 클라이언트에게 건네준다.
  5. 클라이언트는 main.html 파일을 달라고 A서버에 요청했다고 가정하자. HTTPS 요청이 아니기 때문에 CA기업이 A서버의 정보를 CA 기업의 개인키로 암호화한 인증서를 받게 된다.
    • CA 기업의 공개키는 브라우저가 이미 알고 있다. (세계적으로 신뢰할 수 있는 기업으로 등록되어 있기 때문에, 브라우저가 인증서를 탐색하여 해독이 가능한 것)
  6. 브라우저는 해독한 뒤 A서버의 공개키를 얻게 되었다. 이제 A서버와 통신할 대는 얻은 A서버의 공개키로 암호화해서 요청을 날리게 된다.

 

-> HTTPS 적용해보기

  1. AWS EC2에서 public dns 발급
  2. freenom이라는 무료 도메인 발급 사이트에서 도메인 발급
  3. AWS Route 53에서 EC2에서 발급받은 public dns와 발급받은 도메인 연결 (SSL 인증서를 발급받기 위해서는 도메인 이름을 소유하고 있어야 되기 때문에)
  4. Let's Encrypt라는 무료 SSL 인증서 발급 기관에서 인증서를 발급받아 서버에 적용
반응형

'cs지식 > Network' 카테고리의 다른 글

[Network] OSI 7계층 정리, 각 계층별 설명  (0) 2021.05.21

OSI(Open Systems Interconnection) 7 계층

  • 통신이 일어나는 과정을 7단계로 정의한 국제 통신 표준 규약이다.
  • 계급, 상하구조가 존재한다.  ex) 물리적 회선 연결이 있어야 데이터를 보내고 소프트웨어가 동작한다.
  • 각 계층은 독립되어있다. -> 용이성, 유지관리의 수월성
  • 암기 TIP : 모든 사람은 데이터 처리가 필요한 듯하다(All-People-Seem-To-Need-Data-Processing)
  1. 물리(Physical Layer) : 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간. 장비로는 통신 케이블, 허브가 존재한다.
  2. 데이터 링크(Data Link Layer) : 물리계층으로 송/수신되는 정보 확인하고 오류 없는 통신을 위해 여러 역할을 수행한다. MAC 주소를 통해 통신함. 장비로는 브릿지와 스위치가 존재한다.
  3. 네트워크(Network) : 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능. 라우터를 통해 경로를 선택하여 IP주소를 지정하고 경로에 따라 패킷을 전달해준다. 장비로는 라우터가 존재한다.
  4. 전송(Transport) : 두 호스트 시스템으로부터 발생하는 데이터의 흐름을 제공한다. 
  5. 세션(Session) : 통신 시스템 사용자 간의 연결을 유지 및 설정한다.
  6. 표현(Presentation) : 세션 계층 간의 주고받는 인터페이스를 일관성 있게 제공한다.
  7. 응용(Application) : 사용자가 네트워크에 접근할 수 있도록 서비스를 제공한다.

ex) 미국에 있는 친구에게 편지를 보낸다

  • 응용(Layer 7) : 편지를 쓴다
  • 표현(Layer 6) : 한글로 작성한 편지를 미국 친구가 알아볼 수 있게 번역한다.
  • 세션(Layer 5) : 미국 친구의 집 주소를 기입한다.
  • 전송(Layer 4) : 우체국에 편지를 접수시키기 위한 절차, 즉 배 또는 비행기 등의 운송수단 결정
  • 네트워크(Layer 3) : 우체국에 있는 여러 편지들을 같은 목적지별로 분류한다.
  • 데이터링크(Layer 2) : 해당되는 목적지와 운송 방법에 따라 분류하며, 해당되는 목적지와 직접 연결이 되지 않는 경우 중간 경유지를 선택하여 분류하는 작업이다.
  • 물리계층(Layer 1) : 실제적으로 편지가 배, 비행기, 자동차 등의 운송수단에 의해서 운송되는 것을 의미한다.

 

ex) 이메일 전송을 한다 ( 참고자료 )

  • 응용(Layer 7) : 이메일 프로그램을 통해 이메일을 작성한다.
  • 표현(Layer 6) : 공통된 표현 형식으로 데이터를 변환하거나, 암호화, 압축을 수행한다.
  • 세션(Layer 5) : 데이터의 동기화를 위해 일정한 길이마다 sync를 삽입하여 전송 계층으로 데이터를 전달한다.
  • 전송(Layer 4) : 발신지와 목적지의 주소를 지정하고, 연결 방식, 흐름제어, 오류제어를 한다. 그리고, 데이터를 전송할 수 있는 세그먼트 단위로 나눈다.
  • 네트워크(Layer 3) : 발신지와 목적지의 주소가 아닌 라우팅에 필요한 논리 주소를 설정하고, 패킷에 대한 라우팅 정보를 삽입한다.
  • 데이터링크(Layer 2) : 프레인 단위로 데이터를 나눈다. 그리고 MAC 주소를 지정하고, 각 양 끝단의 속도차이에 대해 원활하게 해주기 위한 흐름제어를 한다. 또한 데이터의 오류를 막기 위해 CRC방법이나 체크썸 방식을 사용해 데이터를 받는 쪽에서 데이터의 오류를 검사할 수 있도록 설정한다.
  • 물리계층(Layer 1) : 전송 매체가 일반 케이블인지, 광 케이블인지 등의 설정을 한다. 그리고 전송 방식과 데이터를 회선으로 보내기 위한 전기적인 변환을 담당한다.

 


1. 물리계층(Physical Layer)

ex) 해리포터는 부엉이, 편지는 우편부, 통신에도 매체가 필요하다 -> 유선은 UTP, STP 케이블이나 광케이블, 무선은 공기

  • 데이터를 전기적인 신호로 변환해서 주고받는 기능을 진행하는 공간
  • 장비 : 통신 케이블, 리피터, 허브, 모뎀 등
  • 데이터 단위 : 데이터는 0과 1의 비트열, 즉 On, Off 전기적 신호 상태로 이루어진다.
  • 데이터를 전달하기만 한다. 어떤 에러가 있는지 등에는 전혀 관여하지 않는다.
  • 이진 데이터를 어떤 시그마로 만드느냐 -> 인코딩 기술
  • 신호를 주고받기 위한 전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송
  • 대역폭과 전송효율이 중요

 

2. 데이터 링크 계층(Data Link Layer) 

  • 물리계층으로 송/수신되는 정보를 확인하고 오류 없는 통신을 위해 여러 역할을 수행한다.
  • MAC 주소를 통해 통신한다. 프레임에 Mac 주소를 부여하고 에러 검출, 재전송, 흐름 제어를 진행한다.
  • 장비 : 브릿지, 스위치
  • 데이터 단위 : 프레임(Frame)
  • 하드웨어와 소프트웨어 특성을 둘 다 가진다 (물리계층은 하드웨어적 특성을 가지고, 네트워크 계층부터는 소프트웨어적인 특성을 가진다. 연결다리 역할)

( + 심화 )

ex) 한국에서 미국IP로 전달해줘 -> 각 노드를 타고 메세지가 전달된다

  • 데이터 링크 계층은 직접 연결된 서로 다른 2개의 네트워킹 장치 간의 데이터 전송을 담당하는 계층
  • 이 계층에서 전송되는 데이터를 프레임(Frame)이라고 한다.
  • 이 계층에서 사용되는 다양한 프로토콜은 용도에 따라 프레임의 종류, 길이 등의 정보를 정의한다.
  • MAC(Media Access Control)이라고 하는 매체 접근 제어 기능
  • 48비트 길이의 주소를 가짐
  • 주요 역할 -> 오류 없는 통신을 위한 역할
    • 프레이밍(Framing) : 물리 계층을 통해 수신한 신호를 조합하여 프레임 단위의 정해진 크기의 데이터 유닛으로 만들어 처리
    • 흐름 제어(Flow Control) : 송신 측과 수신 측 간에 데이터를 주고받을 때, 너무 많거나 너무 적게 데이터를 송수신하지 않도록 데이터 흐름을 적절히 제어)
    • 오류 제어(Error Control) : 프레임 전송 시에 발생한 오류를 복원하거나 재전송
    • 접근 제어(Access Control) : 매체 상에 통신 주체가 여럿 존재할 때, 데이터 전송 여부를 결정
    • 동기화(Synchronization) : 프레임 구분자

 

(+ MAC 주소란 )

  • 컴퓨터 간 데이터를 전송하기 위해 있는 컴퓨터의 물리적 주소, 하드웨어 주소
  • 그 기계의 고유번호, 그 하드웨어만 가지고 있는 식별변호 (= 주민번호)
  • IP는 변할 수 있지만 MAC은 변하지 않는다
  • MAC 주소는 데이터링크 계층에 사용되고, IP주소는 네트워크 계층에서 사용된다

ex) '서울특별시 ~~~(IP)'에 사는 '00(MAC 주소)'에게 편지를 보내줘 // 00이 변하지 않은 이름이라 가정

 

3. 네트워크 계층 (Network Layer)

  • 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능(라우팅)을 담당한다.
  • 라우터를 통해 이동할 경로를 선택하여 IP주소를 지정하고, 해당 경로에 따라 패킷을 전달해준다. (= 패킷을 네트워크 간의 IP를 통하여 데이터를 전달한다)
  • 라우팅, 흐름제어, 오류제어, 세그먼테이션 등을 수행한다.
  • 장비 : 라우터
  • 데이터 단위 : 패킷(Packet)

 

4. 전송 계층(Transport Layer)

  • 두 호스트 시스템으로부터 발생하는 데이터의 흐름을 제공한다. 
  • TCP와 UDP 프로토콜을 통해 통신을 활성화한다. Port를 열어두고, 프로그램들이 전송할 수 있도록 제공해준다.
  • 데이터 단위 : 세그먼트(Segment)

+ TCP : 신뢰성, 연결지향적 / UCP : 비신뢰선, 비연결성, 실시간

5. 세션 계층(Session Layer)

  • 통신 시스템 사용자 간의 연결을 유지 및 설정한다.
  • 데이터가 통신하기 위한 논리적 연결을 담당한다. 세션을 만들고 없애는 책임을 지니고 있다.
  • API, Socket

 

6. 표현 계층(Presentation Layer)

  • 세션 계층 간의 주고받는 인터페이스를 일관성 있게 제공한다.
  • 데이터 표현에 대한 독립성을 제공하고, 암호화하는 역할을 담당한다.
  • 파일 인코딩, 명령어를 포장, 압축, 암호화 한다.
  • JPEG, MPEG 등

 

7. 응용 계층(Application Layer)

  • 사용자가 네트워크에 접근할 수 있도록 서비스를 제공한다.
  • 최종 목적지로, 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
  • 사용자 인터페이스, 전자우편, 데이터베이스 관리 등의 서비스를 제공한다.
  • HTTP(HyperText Transfer Protocol), SMTP(Simple Mail Transfer Protocol), FTP(File Transfer Protocol), DNS 등

 

반응형

'cs지식 > Network' 카테고리의 다른 글

[Network] HTTP / HTTPS 비교  (0) 2021.05.21

Q. SQL과 NoSQL의 차이점은 무엇인가요?

 -> SQL은 테이블 구조를 갖고, 스키마를 준수하며, 수직적 확장만 가능하지만, NoSQL은 Document구조로서 테이블을 유연하게 변경할 수 있으며, 수직적, 수평적 확장이 모두 가능합니다. 대표적인 SQL은 MySQL이 존재하고 NoSQL은 MongoDB가 존재합니다.

 -> 꼬리 질문

  • SQL과 NoSQ의 장점은 무엇인가요?
  • SQL과 NoSQL의 단점은 무엇인가요?
  • SQL과 NoSQL 중에 어떤 것이 더 좋나요?
  • 수직적, 수평적 확장이 무엇인가요?

 


 

더 자세히 알아보자.

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

  • SQL(Structured Query Language : 구조화된 쿼리 언어)
  • 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색할 수 있습니다.
  • 데이터는 정해진 데이터 스키마에 따라 테이블에 저장됩니다.
  • 데이터는 관계를 통해서 여러 테이블에 분산됩니다.
  • 수직적 확장만 지원

 

NoSQL ( 비관계형 데이터베이스 )

  • 스키마도 없고, 관계도 없습니다.
  • 레코드를 문서(documnets)라고 부르고 JSON 데이터와 비슷한 형태를 가지고 있습니다.
  • 수직적, 수평적 확장 가능

+ NoSQL에는 조인이라는 개념이 존재하지 않는다. 그러면 조인하고 싶을 때 NoSQL은 어떻게 할까?

-> 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 산출하도록 합니다. 하지만 이러면 데이터가 중복되어 서로 영향을 줄 위험이 있습니다. 따라서 조인을 잘 사용하지 않고 자주 변경되지 않는 데이터일 때 NoSQL을 사용하면 효율적입니다.

 

수직적(Vertical) vs 수평적(Horizontal) 확장(Scaling) -> 데이터베이스의 서버의 확장성

  • 수직적(Vertical) 확장 : 데이터베이스 서버의 성능 향상 ex) CPU 업그레이드
  • 수평적(Horizontal) 확장 : 더 많은 서버가 추가되고 데이터베이스가 전체적으로 분산됨 (하나의 데이터베이스에서 작동하지만 여러 호스트에서 작동)

 

Q. SQL과 NoSQL의 장점

  • SQL 장점
    • 명확하게 정의된 스키마, 데이터 무결성 보장
    • 관계는 각 데이터를 중복없이 한 번만 저장
  • NoSQL 장점
    • 스키마가 없기 때문에 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드를 추가 가능
    • 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터를 읽어오는 속도가 빨라짐
    • 수직 및 수평 확장이 가능하므로 애플리케이션에서 발생시키는 모든 읽기/쓰기 요청을 처리 가능

 

Q. SQL과 NoSQL의 단점

  • SQL 단점
    • 상대적으로 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (수정이 번거롭거나 불가능할 수 있음)
    • 관계를 맺고 있기 때문에, JOIN문이 많은 복잡한 쿼리가 만들어질 수 있음
    • 수평적 확장이 어렵고, 대체로 수직적 확장만 가능함
  • NoSQL 단점
    • 유연성 때문에 데이터 구조 결정을 하지 못하고 미루게 될 수 있음
    • 데이터 중복은 여러 컬렉션과 문서가 여러 개의 레코드가 변경된 경우 업데이트해야 함.
    • 데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정 시 모든 컬렉션에서 수행해야 함 (SQL은 중복된 데이터가 없기 때문에 한 번만 수행하면 됨.)

 

Q. SQL과 NoSQL 중에 어떤것이 더 좋나요?

-> 어떤 데이터를 다루는지에 따라 선택해야 합니다.

  • SQL의 경우 관계를 맺고 데이터가 자주 변경되는 애플리케이션의 경우, 변경될 여지가 없고, 명확한 스키마가 사용자와 데이터에게 중요한 경우에 사용하는 것이 좋습니다.
  • NoSQL의 경우 정확한 데이터 구조를 알 수 없거나 변경/확장될 수 있는 경우, 읽기(read) 처리를 자주 하지만, 데이터를 자주 변경(update) 하지 않는 경우, 데이터를 수평적으로 확장해야 하는 경우(즉, 막대한 양의 데이터를 다뤄야 하는 경우)에 사용하는 것이 좋습니다.
반응형

조인이란

  • 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법

 

JOIN 종류

  • 내부 조인( INNER JOIN ) : 교집합
  • 교차 조인 ( CROSS JOIN - CARTESIN PRODUCT, 카디션 곱 ) : 곱집합, 두 개 이상의 테이블에 대해 연결 가능한 행을 모두 결합
  • 외부 조인 ( OUTER JOIN ) : 두 개 이상의 테이블 조인 시 한쪽 테이블의 행에 대해 다른쪽 테이블에 일치하는 행이 없더라도 다른쪽 테이블의 행을 NULL로 하여 행을 Return 하는 것
    • 완전 외부 조인 ( FULL OUTER JOIN ) : 합집합
    • 왼쪽 ( LEFT OUTER JOIN )
    • 오른쪽 ( RIGHT OUTER JOIN )
  • 셀프 조인 ( SELF JOIN ) : 자기자신과 자기자신을 조인하는 것

 + 등가 조인( EQUI JOIN ) , 비등가 조인 ( NON-EQUI JOIN )

 

 

Q. JOIN에 대하여 설명해 보세요

-> JOIN은 두 개 이상의 테이블이나 데이터베이스를 연결하여 데이터를 검색하는 방법으로 크게 INNER JOIN, CROSS JOIN, OUTER JOIN, SELF JOIN 이 있습니다.

 

+ SQL JOIN 문제 

2021.03.11 - [알고리즘/SQL] - 프로그래머스 SQL 고득점 Kit 풀이 - JOIN

 

프로그래머스 SQL 고득점 Kit 풀이 - JOIN

# 없어진 기록 찾기 천재지변으로 인해 일부 데이터가 유실되었습니다. 입양을 간 기록은 있는데, 보호소에 들어온 기록이 없는 동물의 ID와 이름을 ID 순으로 조회하는 SQL문을 작성해주세요. SELE

jungeun960.tistory.com

 

반응형

키(Key)란 

  • 데이터베이스에서 검색, 정렬 시 다른 튜플들과 구별할 수 있는 기준이 되는 Attribute(속성)입니다.

+ 튜플(Tuple) : 릴레이션을 구성하는 각각의 행, 속성의 모임으로 구성된다.

 

  1. 후보키 (Candidate Key)
    • Tuple을 유일하게 식별하기 위해 사용하는 속성들의 부분집합 (기본키로 사용할 수 있는 속성들)
    • 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야 한다.
    • 유일성과 최소성 만족
      • 유일성 : Key로 하나의 Tuple을 유일하게 식별할 수 있음
      • 최소성 : 꼭 필요한 속성으로만 구성
    • ex) 학번이나 주민번호
  2. 기본키 (Primary Key) = 주 키, 프라이머리 키, PK
    • 후보키 중 선택한 주키(Main Key)
    • Null 값을 가질 수 없음 (개체 무결성의 첫 번째 조건)
    • 동일한 값이 중복될 수 없음 (개체 무결성의 두 번째 조건)
    • ex) 학번이나 주민번호
  3. 대체키 (Alternate Key) = 보조키
    • 후보키 중 기본키를 제외한 나머지 키
    • ex) 학번을 기본키로 정의하면 주민번호는 대체키가 된다
  4. 슈퍼키 (Super Key)
    • 유일성은 만족하지만, 최소성은 만족하지 못하는 키 -> 뭉쳤을 경우 유일성이 생기고, 흩어지지만 몇몇 속성들은 독단적으로 유일성 있는 키로 사용할 수 없음
    • ex) 학번 + 주민번호 + 성명으로 슈퍼키 구성 -> 성명은 단독적으로 사용 못함
  5. 외래키 (Foreign Key)
    • 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는 중요한 도구이다
    • 외래키로 지정 시 참조 테이블의 기본키에 없는 값은 입력할 수 없다 (참조 무결성 조건)

 

반응형

Q. 외부단편화와 내부 단편화란?

  • 외부단편화란 총 메모리 공간은 충분하지만 실제로 할당할 수 없는 경우(메모리 배치에 따라 발생하는 문제)
  • 내부단편화란 메모리 할당 시 프로세스가 필요한 양보다 더 큰 메모리가 할당되어 메모리 공간이 낭비는 되는 현상

+ 메모리 단편화란

  • RAM에서 메모리 공간이 작은 조각으로 나뉘어져 사용가능한 메모리가 충분히 존재하지만 할당(사용)이 불가능한 상태를 보고 메모리 단편화가 발생했다고 한다.

 

Q. 페이징과 세그먼테이션의 차이점은?

  • 페이징은 고정 크기를 가지고, 세그먼테이션은 가변 크기를 가집니다.
  • 페이징은 내부 단편화가 발생할 수 있고, 세그먼테이션은 외부 단편화가 발생할 수 있습니다.

+ 페이징(Paging)이란 (참고)

  • 페이지 단위의 논리-물리 주소 관리 기법
  • 논리(가상)메모리는 페이지(Page)라 불리는 고정 크기의 블록으로 나누어지고, 물리 메모리는 프레임(Frame)라 불리는 페이지와 같은 크기의 블록들로 나누어진다.
  • 가상메모리 사용, 외부 단편화를 해결, 내부 단편화 존재 (페이지가 클수록 내부 단편화도 커진다.)

+ 세그먼테이션(Segmentation)이란

  • 사용자/프로그래머 관점의 메모리 관리 기법
  • 같은 크기의 페이지를 갖는 페이징 기법과 달리 서로 다른 크기의 논리적 단위인 세그먼트(Segment)로 분할 한다.
  • 가상메모리 사용, 내부 단편화는 해결, 외부 단편화는 존재

 

Q. 페이징과 세그먼테이션을 쓰는 이유

  • 다중 프로그래밍 시스템에서 여러 프로세스를 수용하기 위해 주기억장치를 동적분할하는 메모리 관리 작업이 필요하기 때문입니다.
반응형

+ Recent posts