오늘의 느낀 점
더닝-크루거 효과를 제대로 느낀 날이다. 용어들이 너무나 낯설었다.
전공자보다는 당연히 모를지라도 어느정도는 알아들을 수 있겠다고 생각했는데, 큰 오산이었다.
말귀만 알아들어도 절반은 간다고 생각한다. OT에서 배운 개념들에 대해 누군가에게 설명한다는 느낌으로 간단히 정리해보자.
정형 데이터와 비정형 데이터
정형 데이터(Structured Data)
정형 데이터란 스키마에 따라 데이터 테이블(엑셀처럼 행과 열로 구분된 데이터의 모음)에 나열하기 적합한 데이터를 말한다.
숫자, 짧은 텍스트, 날짜 같은 이산형 데이터(소수점으로 표현될 수 없는 데이터)가 포함된다.
*스키마: 데이터 테이블에 데이터가 나열되는 규칙
비정형 데이터(Unstructured Data)
비정형 데이터란 용량, 특성 등으로 인해 데이터테이블에 나열하기 어려운 데이터를 말한다.
데이터테이블에 나열하는 것도 물론 불가능하지는 않지만, 효율적인 방법은 아닐 것이다.
오디오 및 비디오 파일, 대용량 텍스트 문서 등이 포함된다.
https://aws.amazon.com/ko/compare/the-difference-between-structured-data-and-unstructured-data/
정형 데이터와 비정형 데이터 비교 - 수집 가능한 데이터 간의 차이 - AWS
정형 데이터와 비정형 데이터는 모두 산업, 조직 및 애플리케이션 전반에서 광범위하게 수집되고 사용됩니다. 디지털 환경은 이 두 가지 형태의 데이터를 기반으로 운영되며, 이러한 데이터는
aws.amazon.com
샤딩(Sharding)
데이터를 분산 저장하는 기법이다.
단일 머신(데이터를 저장, 검색하는 컴퓨터나 특수한 하드웨어로, 데이터베이스 프로세서라고도 함)만으로는 제한된 양의 데이터만 저장하고 처리할 수 있다는 한계가 있다. 이 때, 데이터를 샤드라는 보다 작은 청크로 분할하여 서버에 저장하면 이러한 한계를 극복할 수 있다.
1. 샤딩의 장점 3가지
처리 속도 개선
특정 데이터를 검색하기 위해 데이터베이스 전체를 검색하지 않아도 되므로 처리 속도가 향상된다.
전체 서비스 중단 방지
호스팅 컴퓨터 (혹은 서버)에 장애가 발생하면 데이터베이스 전체를 사용할 수 없다. 샤딩을 통해 데이터베이스 일부를 분산 운영하면 하나의 컴퓨터에 장애가 발생하더라도 정상 샤드를 이용해 데이터베이스를 운용할 수 있다.
효율적인 크기 조정
데이터베이스가 확장되면 더 많은 컴퓨팅 리소스와 스토리지를 소비하게 된다. 이 때 샤딩을 통해 더 많은 컴퓨팅 리소스를 할당하여 데이터베이스를 확장할 수 있다.
2. 샤딩의 작동 방식
데이터베이스에 열과 행으로 구분되어 저장된 정보를 데이터세트라고 한다. 아래는 모든 정보가 하나의 데이터베이스에 저장되어 있는 상태다.
서버 A | ||
번호 | 이름 | 거주지 |
1 | 김씨 | 서울특별시 |
2 | 이씨 | 부산광역시 |
3 | 박씨 | 인천광역시 |
4 | 최씨 | 대구광역시 |
서버 A | ||
번호 | 이름 | 거주지 |
1 | 김씨 | 서울특별시 |
2 | 이씨 | 부산광역시 |
서버 B | ||
번호 | 이름 | 거주지 |
3 | 박씨 | 인천광역시 |
4 | 최씨 | 대구광역시 |
샤딩을 통해 정보 행을 분리하여 다른 시스템에 저장할 수 있다.
샤드는 다시 논리적 샤드와 물리적 샤드로 구분할 수 있다.
논리적 샤드: 번호 1,2행과 3,4행과 같이 분리된 데이터 세트
물리적 샤드: 논리적 샤드를 저장하는 시스템. 하나의 물리적 샤드에는 여러 개의 논리적 샤드가 포함될 수 있다.
각각의 물리적 샤드는 독립적으로 작동한다. 즉, 시스템에 데이터를 요청할 경우 해당 데이터가 저장된 샤드만 작동한다.
이를 비공유 아키텍처라고 부른다.
3. 샤드 키
개발자가 데이터세트를 분할하는 방법. 데이터세트의 열은 하나의 그룹이 되어 샤드를 구성하는 데이터 행이 된다. 기존 열에서 샤드 키를 선택하거나, 새로운 샤드 키를 만들 수 있다.
4. 샤딩 방식
4-1. 범위 기반 샤딩
정보를 특정 값의 범위에 따라 나누는 방식이다.
거주지 | 샤드 키 |
서울특별시 | A |
부산광역시 | B |
청송군 | C |
회원들을 거주지에 따라 구분한다고 했을 때, 각 지역에 따라 서로 다른 샤드 키가 배정된다.
위와 같은 데이터베이스에 정보를 저장하는 순서는 아래와 같다.
DB에 정보 입력 | > | 애플리케이션에서 정보 확인 후 샤드 키 배정 |
> | 샤드가 할당된 물리 노드에 정보 저장 |
*정보 불러오기는 저장의 역순
장점: 상대적으로 구현하기 쉽다.
단점: 특정 노드에만 정보가 과중될 수 있다. (전국을 대상으로 한 서비스라면 청송군보다 서울, 부산의 가입자가 압도적으로 많을 것)
4-2. 해시 샤딩
해시 함수를 사용하여 데이터베이스의 각 행에 샤드 키를 할당한다. 해시 함수는 행에서 정보를 불러와 해시 값을 산출한다.
애플리케이션은 해시 값을 샤드 키로 샤용하여 해당하는 물리적 샤드에 정보를 저장한다.
*해시 함수란 임의(랜덤)의 길이를 가진 데이터를 고정된 값으로 변환해주는 함수다.
길이가 모두 다른 브레이킹 배드 등장인물들의 이름을 A 또는 B라는 고정된 값으로 변환할 수 있다.
이름 | 해시 값 |
월터 하트웰 화이트 | A |
행크 슈레이더 | B |
제시 브루스 핑크맨 | A |
사울 굿맨 | B |
장점: 여러 노드에 균일하게 데이터를 분산 저장할 수 있다.
단점: 해시 값은 정보의 의미에 기초한 것이 아니므로, 물리적 샤드를 추가할 때 해시 값을 재할당하기 어려울 수 있다.
4-3. 디렉토리 샤딩
조회 테이블을 사용해 데이터베이스 정보를 노드와 매칭한다. 입력된 정보는 조회 테이블의 열에 따라 샤드 키가 배정되어 노드에 저장된다.
* 조회 테이블은 곱셈표 같은 개념
색상 | 샤드 키 | 노드 |
빨간색 | A | 1 |
초록색 | B | 2 |
파란색 | C | 3 |
참고 및 출처
https://aws.amazon.com/ko/what-is/database-sharding/
데이터베이스 샤딩이란 무엇인가요? - DB 샤딩 설명 - AWS
애플리케이션이 성장함에 따라 애플리케이션 사용자 수와 애플리케이션에 저장되는 데이터의 양도 시간이 갈수록 증가합니다. 데이터 볼륨이 너무 커지고 애플리케이션을 사용하여 동시에 정
aws.amazon.com
애노테이션(Annotation)
프로그램의 소스코드에 다른 프로그램을 위한 정보를 미리 약속된 형식으로 포함시킨 것이다.
사전적인 의미 그대로는 '주석'을 의미한다. 그러나 일반적인 주석과는 달리 애노테이션은 코드를 작성할 수 있다.
참고 및 출처
https://codingwell.tistory.com/79
[Java] 애노테이션(annotation)
애노테이션? 애노테이션(annotation)은 사전적 의미로는 주석을 의미한다. 그렇지만 우리가 원래 알던 일반적인 주석 //이나 /**/와는 다르다. 일반적인 주석과 다르게 애노테이션은 코드를 작성할
codingwell.tistory.com
몽고DB
https://tv.kakao.com/channel/3693125/cliplink/414072595