Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: 20240820_NoSQL_김영래 #75

Merged
merged 2 commits into from
Sep 10, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
110 changes: 110 additions & 0 deletions 기술세미나/_posts/2024-08-20-nosql.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
layout: post
title: NoSQL
author: 김영래
categories: 기술세미나
banner:
image: assets/images/post/2023-11-05.webp
background: "#000"
height: "100vh"
min_height: "38vh"
heading_style: "font-size: 4.25em; font-weight: bold; text-decoration: underline"
tags: [NoSQL, 기술 세미나]
---


# NoSQL이란?
![nosql1](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql1.jpg)

### 1. 비관계형 데이터 모델
- 유연한 스키마 : RDBMS 처럼 정해진 스키마를 바탕으로 데이터를 입출력 할 때 형태가 정해지지 않는다.
- 다양한 데이터 모델 : JSON, XML 등의 데이터 형식으로 저장할 수 있다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nosql 예시 이미지, 혹은 다이어그램 등을 첨부 부탁드려요

### 2. 확장성
- 수평 확장 : 샤딩을 통한 분산 저장을 하는 NoSQL 특성 상 성능 확장을 위해 단순히 서버 컴퓨터의 수를 늘리는 방식이 가능하다.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

scale out, scale up, 샤딩 등에 대한 다이어그램 이미지를 첨부 부탁드립니다.

- 샤딩 : 데이터를 조각내 분산 저장하는 데이터 처리 기법

![nosql2](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql2.png)
![nosql3](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql3.png)

### 3. 고가용성 및 장애 복구
- 자동 복제 : 데이터 복제 및 분산 저장을 통해 높은 가용성과 장애 복구가 가능하다.
- 고가용성 : 시스템이 지속적으로 안정적인 동작을 할 수 있도록 보장하는 것
- CAP 이론에서 분산 시스템은 Consistency, Availability, Partition Tolerance 중 두 가지 특성을 만족 가능 -> NoSQL은 Consistency를 포기
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cap 다이어그램 이미지를 추가 부탁드립니다.


![nosql4](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql4.png)

### 4. 높은 성능
- Key-Value 에 기반한 DB이기 때문에 기본적으로 읽기와 쓰기에 빠른 속도를 가진다.
- 디스크 기반인 RDBMS와 달리 NoSQL은 메모리 기반이기 때문에 빠른 속도를 가질 수 있다.


# NoSQL 종류
### 1. Key-Value DB
- Key, Value의 쌍인 배열 구조의 데이터가 저장되는 가장 기본적인 형태
- Key-Value Store는 단순한 조회 질의를 이용한 대량의 데이터 추출에 적합
- ex. Redis, Oracle NoSQL DB
### 2. Wide Column Store
- Big Table DB라고도 하며, Key Value에서 발전된 형태의 Clumn Family 데이터 모델로, 테이블 안에 테이블을 포함할 수 있으며, 데이터를 수직적으로 쌓아가는 방식
- Key-Value Store의 확장으로, Row Key와 Column Name의 조합으로 값을 저장
- ex. Hbase, Cassandra, GoogleBigTable, Vertica
### 3. Document DB
- Key Value 에서 확장된 형태로 Document라는 구조화된 데이터 타입(JSON, XML)인 Collection 데이터 모델
- Document DB는 내부 구조에 의존하여 데이터를 처리하며, 추가 최적화를 위해 메타 데이터 추출을 사용
- ex. MongoDB, CouchDB, Riak, Azure Cosmos DB
### 4. Graph DB
- Nodes, Relationship 데이터 모델
- 데이터를 그래프 구조로 저장하며, 노드와 엣지를 사용하여 데이터 간의 관계를 표현
- 그래프 데이터베이스는 연결된 데이터 간의 관계 분석 및 탐색에 적합
- ex. Sones, AllegroGraph, neo4j, BlazeGraph, Orient DB

![nosql5](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql5.png)


# NoSQL 장단점
### 1. 장점
- 확장성
- NoSQL 데이터베이스는 수평적 확장을 지원하여, 데이터베이스의 용량 증가 용이
- 클라우드 환경에서 NoSQL 데이터베이스는 추가 서버를 쉽게 추가하여 확장 가능
- 가용성
- NoSQL 데이터베이스는 분산 아키텍처를 사용하여, 일부 서버가 오프라인 상태가 되어도 데이터베이스의 나머지 부분 계속 작동 가능
- 고가용성 기능을 통해 데이터베이스의 신뢰성 보장
- 고성능
- NoSQL 데이터베이스는 대량의 데이터를 빠르게 처리할 수 있으며, 실시간 응답이 필요한 애플리케이션에 적합
- 다양한 데이터 형식을 지원하여, 구조화되지 않은 데이터를 효율적으로 처리
- 유연성
- NoSQL 데이터베이스는 동적 스키마를 사용하여, 데이터 구조를 유연하게 변경
- 다양한 데이터 모델을 지원하여, 애플리케이션의 요구 사항에 맞게 데이터를 저장
- 비정형 데이터
- 설계 비용 감소
- 정의된 구조가 없어 정형화되지 않은 데이터
- ex. 동영상, 오디오 ,사진, 보고서, 문서 등
- 분산 시스템
- RDBMS에 비해 저렴한 비용으로 분산 처리 및 병렬 처리 가능
- 빅데이터 처리에 효율적

![nosql6](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql6.png)

### 2. 단점
- 데이터 업데이트 중 장애가 발생하면 데이터 손실 발생 가능성
- 많은 인덱스를 쓰려면 충분한 추가 메모리가 필요하다.
- 인덱스 구조가 메모리에 저장되기 때문이다.
- 데이터 일관성이 항상 보장되지 않는다.
- 최종적 일관성 지향
- 모든 업데이트가 시간이 지나면서 모든 노드에 전파되어 결과적으로 모든 노드가 일관된 상태가 되는 것을 보장하는 개념
- 특정 시간에는 데이터가 일관되지 않을 수도 있다.
- 가용성, 분할용인, 속도 를 위해 희생


# NoSQL 사용 분야
### - 실시간 빅데이터 처리
- Amazon
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

예시 이미지나, 칼럼 캡쳐 이미지 등이 추가되면 졸을 것 같습니다.

- DynamoDB : 전자 상거래 플랫폼 등을 위해 실시간 빅데이터 처리\

![nosql7](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql7.png)
### - 소셜 네트워크 서비스
- Instagram
- Cassandra : 대규모 데이터에 대한 빠른 쓰기와 확장성이 요구되는 피드 데이터, 시간에 따른 데이터 저장 등에 사용, 데이터 고가용성 및 장애 복구가 큰 장점

![nosql8](https://github.com/Kernel360/blog-image/blob/main/2024/0820/nosql8.png)