01. 데이터베이스
● 데이터베이스 (Database)
- 공동의 목적을 지닌 다수의 사람이 공유하고 관리하는 데이터의 집합
- 정형 데이터
-- 일정한 체계를 가지고 있는 데이터
-- 사용자가 쉽게 이해하고 시스템에 바로 적용할 수 있음
-- SQL 기반 관계형 데이터베이스에 사용되는 데이터
- 비정형 데이터
-- 일정한 체계가 없는 데이터
-- 사진, 비디오, 오디오 등이 해당됨
-- 체계가 없기 때문에 검색이나 분석이 매우 어렵지만, 정형 데이터에 비해 유연함
-- 특정한 틀이 없는 NoSQL 데이터베이스에 사용됨
● 관계형 데이터베이스 관리 시스템 (RDBMS, Relational DataBase Management System, SQL)
- 정형화된 데이터를 분석하기 위해 표 (테이블) 로 데이터를 표현하는 소프트웨어
- SQL 시스템 이라고도 함
- ex. Oracle IBM DB2, MS-SQL, MySQL
- 특징
-- 무결성 (Integrity) : 중복 데이터가 서로 다른 값을 가지고 있다면 실제 값으로 반영해 데이터를 정확하게 유지해야 함
-- 일관성 (Consistency) : 모든 데이터가 일정한 형식을 갖춰 일관성을 가짐
-- 경제성 (economic efficiency) : 데이터의 중복을 제거해 기억 공간이 절약됨
-- 보안성 (Security) : 데이터를 암호화하여 보호 가능
● 비관계형 데이터베이스 관리 시스템 (Non-RDBMS, Non-Relational DataBase Management System, NoSQL)
- NoSQL (Not Only SQL) : SQL 만을 사용하지 않는 소프트웨어
- 정형 데이터와 비정형 데이터를 통틀어 분석하기 위한 데이터베이스 관리 시스템
- ex. MongoDB, neo4j, Redis, Cassandra
- 특징
-- 스키마 리스 (Schema-less) : 데이터 구조를 미리 정의할 필요가 없어 비형식적인 데이터를 저장할 때 용이
-- 대용량성 (Capacity) : 비디오나 사진과 같은 대용량 데이터를 저장할 때 용이
-- 분산 저장 (Distributed data storage) : 데이터 용량이 커지면 이를 처리하기 위해 여러 서버에 분산 저장하고 데이터를 복제함
-- 경제성 (economic efficiency) : 데이터 용량이 커지면 RDBMS 는 성능이 더 좋은 단일 서버가 필요해져 비용이 많이 들지만, Non-RDBMS 는 여러 대의 저렴한 서버를 이용하기 때문에 비용이 훨씬 저렴
02. 샤딩
● 샤딩 (Sharding)
- 데이터베이스 테이블을 조각내어 각각 새로운 노드에 저장하는 데이터 관리 방법
- 하나의 DB 에서 다루기에는 데이터의 양이 너무 많을 때, 여러 노드에 데이터를 나누어 속도 향상 가능
- 데이터를 여러 노드에 분산해 두기 때문에 한 장소로 트래픽이 몰리는 것을 방지할 뿐만 아니라, 더 많은 양의 정보 수용 가능
- 수평적 분할 (Horizontal partitioning) 이라고도 부름
-- 데이터를 테이블의 행을 기준으로 나누는 것
-- 샤드마다 스키마는 동일하지만, 담고 있는 정보는 상이함
● 종류
- 범위에 따른 샤딩
-- 데이터를 분할할 때 일정한 범위 기준을 두고 나누는 방식
- 해시 샤딩
-- 샤드 키에 해당하는 정보의 해시값을 기준으로 데이터를 나누는 방법
-- 데이터가 들어오면 먼저 해시 함수를 통해 데이터를 변환한 다음 해시 값이 일치하는 데이터까리 하나의 샤드로 분류해 관리
- 디렉터리 샤딩
-- 참조표를 이용해 데이터를 분류하는 방식
-- 참조표 : 정보를 나누는 기준 샤드 키를 정하고 데이터가 어느 샤드로 배정될지를 지정해 둔 표
- 수직적 샤딩
-- 속성별로 데이터 테이블을 나누는 방식
● 장점
- 데이터 공간 확장 가능
- 데이터의 양에 비해 쿼리 속도가 빠름
● 단점
- 데이터의 양이 불균형하게 증감하면 문제가 발생함
03. ERD / UML
● ERD (Entity Relationship Diagram)
- 개체 (Entity) 들의 관계를 시각적으로 보기 편하게 해 놓은 것
- DB 에서 테이블들의 관계도를 도식화해서 보여줌
● UML (Unified Modeling Language)
- 시각적으로 보여주는 설계 다이어그램
- 시각적인 모델을 만들어서 서비스의 흐름, 실제 코드에 사용되는 객체들의 구조, 일부 로직을 처리하는 과정 등을 보여줌
● ERD 예시
● UML 클래스 다이어그램 예시
- 각 객체들이 가진 메소드나 속성들을 파악할 때 사용
● UML 시퀀스 다이어그램 예시
- 일부 처리 과정에서 객체들 사이에 메시지나 데이터들이 어떻게 시간 순서대로 이동하는지 보여줌
04. 데이터 마이닝
● 데이터 마이닝 (Data mining)
- 많은 양의 데이터 중에서 의미 있거나 유용한 정보를 추출하는 과정
● KDD (Knowledge Discovery in Databases)
- 정제되지 않은 데이터에 적절한 방법이나 기술을 활용해 데이터를 정제하고 해당 데이터에서 통계적인 패턴이나 유용한 인사이트를 발견할 수 있게 정리하는 프로세스를 제시한 데이터 분석 방법론 중 하나
- 데이터 선택 ▶ 데이터 전처리 ▶ 데이터 변환 ▶ 데이터 마이닝 ▶ 결과 평가 및 반복
- 데이터 선택
-- 분석하려는 도메인 내에서 주제와 분석 목표를 설정한 후 데이터베이스 혹은 정제되지 않은 데이터에서 분석에 요구되는 데이터를 식별하고 선택하는 단계
- 데이터 전처리
-- 데이터 선택 단계에서 선택한 데이터에 포함되어 있을 수 있는 데이터의 이상값이나 결측값, 노이즈를 탐지하고 필요에 따라 삭제 및 변환, 대체와 같은 전처리 과정을 거쳐 데이터를 정제하는 과정
- 데이터 변환
-- 분석 목적이나 의도에 따라 필요한 데이터 항목을 선택하고 전체적인 데이터의 차원을 축소해 데이터 마이닝을 진행할 수 있게 변환
- 데이터 마이닝
-- 학습 데이터를 기반으로 분석 목적과 방향에 맞는 알고리즘을 선택해 데이터에 대한 마이닝을 진행
- 해석 및 평가
-- 데이터를 분석한 결과로 해석과 평가를 진행
● 데이터 마이닝 기술
- 연관 분석
-- 데이터 간의 연관된 특징을 설명하는 패턴을 찾기 위해 활용하는 방법
-- 각 데이터의 유사도를 찾아내는 분석 방법
- 분류 분석
-- 원하는 카테고리에 따라 기존 데이터를 분류하고, 분류된 데이터를 학습한 다음 이를 토대로 새로운 데이터가 들어왔을 때 지정한 카테고리에 따라 분류하는 분석 방법
- 군집 분석
-- 데이터를 그룹화하는 분석 방법
-- 기존 데이터에 카테고리가 부여되어 있는 분류 분석과 다르게 카테고리가 정해지지 않은 상태에서 데이터 간 유사도를 정의하고 그에 따라 데이터를 그룹화함
- 예측 분석
-- 미래에 특정 사건이 발생할 가능성이나 미래 추세를 예측하는 분석 방법
-- 현재와 과거의 데이터를 분석하고 이를 기반으로 새로운 데이터 케이스들을 예측
05. 스택 / 큐
● 스택
- FILO (First In Last Out)
● 큐
- FIFO (First In First Out)
06. 해시
● 해시 (Hash)
- 데이터를 저장하고 검색할 때 사용하는 자료구조
- 특정한 함수를 사용하여 추출한 값을 활용
-- 여기서 말하는 함수는 입력되는 데이터들끼리 충돌이 발생하지 않게 정리하는 알고리즘
- 주로 양이 많은 데이터를 저장하거나 검색할 때, 해시를 암호처럼 활용해서 데이터를 보호
- 해시는 입력 데이터를 고정된 길이의 데이터로 변환한 값
- 해시값, 해시코드, 체크섬 이라고도 부름
- 해시 함수에 의해서 얻어지는 결과값
● 해시 함수 (Hash function)
- 입력받은 데이터를 해시 값으로 출력시키는 알고리즘
● 해시 테이블 (Hash Table)
- 키와 값을 함께 저장해 둔 데이터 구조
- 신속한 저장 및 검색을 위해 만들어짐
- 해시값을 인덱스 (index) 로 환산해서 저장하는 것이 기본 원리
- 필요한 데이터를 찾을 때 순서를 지킬 필요 없이 저장 위치를 즉시 알아낼 수 있음
● 해싱 (Hashing)
- 해시 함수를 통해서 해시 값을 출력하고, 해시 테이블에 저장하고 검색하는 모든 과정
- 자료구조 중 배열 (array) 과 연결리스트 (linked list) 의 단점을 보완하기 위해 두 가지를 조합한 형태
● 해시 충돌
- 두 개 이상의 같은 해시값을 출력해서 한 버킷에 데이터가 집중되는 경우
- 해결 : 체이닝 방식, 개방 주소법 방식
참고문헌
● 개발자가 되기 위해 꼭 알아야 하는 IT 용어 : https://product.kyobobook.co.kr/detail/S000061352646