meong_j
기록하는 습관.
meong_j
전체 방문자
오늘
어제
  • 분류 전체보기 (176)
    • 개인 공부 정리 (0)
    • 서버 운영 (37)
      • Linux (36)
    • Frontend (11)
      • Vue.js (10)
    • Backend (70)
      • Java (4)
      • Python (22)
      • Django (38)
      • Spring (6)
    • Database (5)
      • Oracle (4)
      • MySQL (1)
      • MariaDB (0)
    • Android (14)
      • Kotlin (6)
    • 배포 (9)
      • Docker (8)
      • AWS (1)
    • IT_study (29)
      • Coding test (17)
      • 알고리즘 (5)
      • 스터디 (6)

블로그 메뉴

  • 홈
  • 태그
  • 방명록
  • github

인기 글

반응형

태그

  • 개발자도서
  • 안드로이드adaptor
  • 중첩라우트
  • django
  • 이차원배열정렬
  • 테크커리어
  • dockersecret
  • SASS Variables
  • dp #알고리즘
  • docker
  • DHCP
  • 리눅스방화벽
  • 코틀린자료형
  • gabagecollecter
  • Kotlin
  • 배포인프라
  • 리눅스인증
  • router-link
  • Proxy
  • cpu사용률

최근 댓글

최근 글

250x250
hELLO · Designed By 정상우.
meong_j

기록하는 습관.

IT_study/스터디

Rest api, 클러스터형 vs Non클러스터형, 가비지콜렉터

2022. 8. 4. 20:17
728x90
반응형

Rest api 설명

 

  • 다른 사람들이 이해하기 어렵다 
  • 명확한 패턴이 없다
  • URL 에는 동사를 쓸 수없다 -> 명사로 구분해야함(add, create, delete...CRUD)

 

 

uniform interface 스타일

1. 자원에 대한 식별

- 자원은 객체 (자원 = URI)

  • 상태는 변화 가능 -> 변하지 않는 식별자 필요
    • 고유한 식별자로 URI를 통해 자원을 식별해야한다
    • 식별자를 통해 특정한 데이터를 지정할 수 있다

(영화에 대한 정보면 movies로 자원을 지정)

 

2.  표현을 통한 자원에 대한 조작

 - 특정한 상태의 자원에 대한 표현

  • 자원은 다양한 방식으로 표현 가능
    • 자원 : 해당 소프트웨어가 관리하는 모든 것
      • 문서, 그림, 데이터 ... 등등

 

클라이언트 <-> 서버 자원의 상태 정보를 전달한다

- 보통 json, xml 등으로 데이터를 주고 받는 게 일반적

 

 

3. 자기 서술적 메시지

- 메세지는 스스로에게 설명해야 한다

4. 

 

 

 

HTTP methods

  • GET : 읽기, 조회
  • POST : 생성
  • PUT : UPDATE
  • DELETE : 삭제

client <-> Server  사이 http 프로토콜로 통신 (여러 방법 중 하나)

 

 

/movies로 get요청 : 영화(명사)를 불러와라 요청

/movies로 post요청 :  영화(명사)를 생성해라 요청 

...

=> 같은 URL로 http methods을 다르게 요청할 수 있다 

  • 코드 단축 
  • 사용하기 쉬움
  • 구분 쉬움, 훨씬 더 이해하기 쉽다
  • 다양한 클라이언트에도 통신 가능..

 

HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미한다.

 

 

출처 :

https://www.youtube.com/watch?v=Nxi8Ur89Akw 

https://www.youtube.com/watch?v=4DxHX95Lq2U 

https://gmlwjd9405.github.io/2018/09/21/rest-and-restful.html

 


인덱스의 내부구조 클러스터형 DB vs Non클러스트형 DB 

 

인덱스 란?

  • 일반적으로 책의 색인이라고 생각하면 됨
  • 인덱스가 없다면 하나 하나 찾아야함 -> 오래걸림
  • 하지만 반드시 필요한 것은 아니다! 
    • 인덱스가 필요한 상황에 적절히 쓴다 -> 꼭 사용한다고 좋은 건 아니다
    • 데이터 양이 많을 경우 유리

장점

  • 엄청 빨리 찾는다 (SELECT문 검색 속도 향상 -> 전체 시스템 성능 향상)

단점

  • 인덱스도 공간차지 해서 데이터베이스 안에 추가적인 공간 필요함
  • 처음에 만들 때 시간 오래걸림

 

 

인덱스의 종류

 

1) 클러스터형 인덱스(Clustered Index) 

  • 영어 사전, 국어 사전 책 자체가 클러스터형 인덱스 
    • A ~Z , ㄱ~ㅎ 정렬
    ex) member_id 를 primary key 지정하는 순간에 자동으로 클러스터형 인덱스가 생성된다
    • KEY_NAME = PRIMARY KEY
    • 한 테이블 당 1개만 지정
  • 알아서 정렬되어서 들어가짐
  • PRIMARY KEY, UNIQUE NOT NULL  생성시 알아서 생성됨 -> PRIMARY KEY가 더 우선시 됨

 

2) 보조 인덱스 , 넌클러스터드 인덱스(Secondary Index, NonClustered Index )

  • 일반적 책 뒤의 찾아보기
  • 인덱스 페이지를 포함하여 찾는다
  • UNIQUE KEY(고유키) 로 지정하면 자동으로 보조 인덱스가 된다
    • UNIQUE 또는 UNIQUE NULL로 지정한 열에 보조 인덱스 생성
  • 테이블 당 여러개 생성 가능
  • 데이터와 인덱스를 각각 다른 위치에 저장
  • 인덱스는 해당 데이터의 위치에 대한 포인터를 포함하고 있다
  • 클러스터드 인덱스 보다 검색 속도는 더 느리지만, 데이터 입력, 수정, 삭제는 더 빠르다

 

 

 

출처 :

https://www.youtube.com/watch?v=KZmW6VaY5BU

 

 


가비지콜렉터(Gabage Collecter)

 

  • 프로그램 개발시 유효하지 않은 메모리 낭비되는 문제 발생 -> Gabage 
  • C언어 사용시 개발자가 직접 메모리 해제를 해줘야 했지만, Java 나 Kotlin 의 경우 JVM(자바 가상머신)에 의해 자동 메모리 정리해준다
    • 자바가상머신이란 시스템 메모리 관리해주면서 자바 기반 프로그램이 어느 환경에서도 (어느기기, 어느 운영체제 등) 실행될 수 있게 해준다

순서

1. 프로그램 실행시 메모리 관리하는 OS에 의해 프로그램 실행에 필요한 메모리 요청

2. 메모리를 어디에 저장할껀지 그 주소를 할당함

    (그 주소를 offset 주소라고 함)

3. 사용중인 메모리 인식

4. 사용하지 않은 메모리 인식
5. 가비지 메모리로 사용하고 있던 것을 다른 목적으로 사용하기 위해 메모리 해제함

 

한계

  • 실행 시간에 작업시 성능 하락 피할 수 없음
  • 메모리 누수 발생 가능성

 

 

 

> 참고하면 좋을 만한 곳

https://www.youtube.com/watch?v=24f2-eJAeII

반응형
저작자표시 비영리 변경금지 (새창열림)

'IT_study > 스터디' 카테고리의 다른 글

객체지향 설계 원칙, 트랜잭션 격리, 해쉬테이블  (0) 2022.08.24
공인ip, 사설ip, nat, 프록시서버, DHCP  (1) 2022.08.18
CDN, CORS, 배포 인프라  (0) 2022.08.11
TCP vs UDP, 라우터 vs 스위치  (0) 2022.07.28
가상메모리, Redis vs Memcached  (0) 2022.07.28
    'IT_study/스터디' 카테고리의 다른 글
    • 공인ip, 사설ip, nat, 프록시서버, DHCP
    • CDN, CORS, 배포 인프라
    • TCP vs UDP, 라우터 vs 스위치
    • 가상메모리, Redis vs Memcached
    meong_j
    meong_j
    #it #개발일기 #개발공부 #개발자 #백앤드 #생각정리 #시간은 실력에 비례한다 #뭐든지 꾸준히 열심히 #오늘의 내가 내일의 나를 만든다

    티스토리툴바