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 값을 데이터 타입 표현 범위만큼 사용할 수 있다는 제한이 있다.
멘토링 복습
추상화란
- 추상화란 복잡한 것을 이해하기 쉬운 수준으로 만들기 위해 단순화 하는 것이다.
- 공통점은 취하고 차이점은 제거
- 중요한 부분을 강조하기 위해 불필요한 것 제거
캡슐화란
- 객체와 객체는 메세지로 통신한다. 객체가 외부에 노출하는 것은 오직 메세지를 처리할 메서드이며 상태는 숨기는 것을 캡슐화라 한다.
- 캡슐화의 장점은 객체가 자신의 상태를 스스로 변경함으로써 객체의 자율성을 높인다
- 자율성이 높아지면 객체간 결합도가 단순해진다.
객체지향 구성 요소
메세지란?
- 메세지란 객체가 다른 객체에게 협력을 요청하는 것이다.
객체지향 프로그래밍이란
객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다.
각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다.
출처 : 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
객체?
객체란 식별 가능한 독립적인 실체다.