[F-Lab 챌린지 22일차] UUID 와 Sequential ID

성수데브리·2023년 7월 20일
0

f-lab_java

목록 보기
19/73
post-thumbnail

UUID 와 Sequential ID

[UUID]

  • RFC 4122 표준에 정의된 UUID (Universally Unique IDentifier) 는 128 bit 크기를 갖는 값이다
  • RDB 에서 UUID 생성 함수나 타입을 제공한다.
    • Oracle – the RAW(16) type
    • SQL Server – the NEWID() function
    • PostgreSQL – the UUID type
    • MySQL – the BINARY(16) type or the UUID() function

장점

  • UUID 의 목적은 분산 시스템간 PK 를 공유하기 위함이다. 시퀀스 ID보다 PK 생성시 중복값이 발생하는 경우를 일컫는 충돌 발생확률이 낮다.
  • UUID를 키로 사용하는 NoSQL 과 통합시 문제가 덜 발생한다. (ex MongoDB, CouchDB)
  • 보안상 장점은 brute force attack 등으로 ID 를 알아내기 어렵다.

단점

  • 메모리 사용이 크다. UUID 는 크기가 128 bit로 BIGINT의 2배 INTEGER 타입의 4배다.
    select 쿼리나 인덱싱 과정에서 성능 저하가 발생할 수 있다.
  • natural order 로 정렬할 수 없기 때문에 다른 컬럼으로 정렬을 해야한다.

[Sequential ID]

장점

  • 인덱싱
  • 배치 작업이 필요할 경우 유리함

단점

  • 분산 시스템 환경이면 시퀀스 값의 gap 이 발생할 수 있다.
  • DB가 next value 를 확인해야 하므로 분산 노드에서 동시에 insert 를 수행하면 동시성 이슈 발생할 수 있다.
  • PK 값을 데이터 타입 표현 범위만큼 사용할 수 있다는 제한이 있다.

멘토링 복습

추상화란

  • 추상화란 복잡한 것을 이해하기 쉬운 수준으로 만들기 위해 단순화 하는 것이다.
    1. 공통점은 취하고 차이점은 제거
    2. 중요한 부분을 강조하기 위해 불필요한 것 제거

캡슐화란

  • 객체와 객체는 메세지로 통신한다. 객체가 외부에 노출하는 것은 오직 메세지를 처리할 메서드이며 상태는 숨기는 것을 캡슐화라 한다.
  • 캡슐화의 장점은 객체가 자신의 상태를 스스로 변경함으로써 객체의 자율성을 높인다
  • 자율성이 높아지면 객체간 결합도가 단순해진다.

객체지향 구성 요소

  • 클래스, 객체, 메세지

메세지란?

  • 메세지란 객체가 다른 객체에게 협력을 요청하는 것이다.

객체지향 프로그래밍이란

객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.
각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.

출처 : https://ko.wikipedia.org/wiki/%EA%B0%9D%EC%B2%B4_%EC%A7%80%ED%96%A5_%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

객체?

객체란 식별 가능한 독립적인 실체다.

0개의 댓글