본문 바로가기
목차훔치기/면접을 위한 CS 전공지식 노트

NoSQL 데이터베이스(면접을 위한 CS 전공지식 노트)

by 해삼2 2023. 10. 10.
728x90
반응형
NoSQL 데이터베이스

NoSQL데이터베이스

NoSQL 데이터베이스(Not Only SQL 또는 Non-relational database)는 관계형 데이터베이스 관리 시스템(RDBMS)과는 다른 데이터 저장 및 관리 방식을 제공하는 데이터베이스 유형입니다. 

NoSQL 데이터베이스는 다양한 종류의 데이터를 저장하고 검색하는 데 사용되며, 

주로 대규모 및 고속 데이터 처리를 지원하며 유연한 데이터 모델을 제공합니다.

 

NoSQL데이터베이스 주요 특징과 유형

비정형 데이터 저장: 

NoSQL 데이터베이스는 정형 데이터뿐만 아니라 반정형 데이터와 

비정형 데이터를 저장하는 데 적합합니다. 

이러한 데이터 종류는 관계형 데이터베이스의 테이블 구조에 저장하기 어려운 데이터 형식입니다. 

예를 들어, JSON, XML, 그래프 데이터 등을 처리할 수 있습니다.

스키마 유연성: 

NoSQL 데이터베이스는 고정된 스키마를 강제하지 않습니다. 

이는 데이터 모델을 필요에 따라 유연하게 조정할 수 있다는 것을 의미합니다. 

새로운 필드를 동적으로 추가하거나 삭제할 수 있으므로 데이터 스키마 변경이 용이합니다.

분산 데이터베이스: 

대부분의 NoSQL 데이터베이스는 데이터를 여러 노드에 분산하여 저장하고 처리합니다. 

를 통해 고가용성, 확장성 및 성능 향상을 달성할 수 있습니다. 

NoSQL 데이터베이스는 분산 시스템에서 작동하는 데 적합하도록 설계되었습니다.

다양한 유형: 

NoSQL 데이터베이스는 여러 가지 유형으로 분류됩니다. 주요 유형에는 다음과 같은 것들이 있습니다:

문서 데이터베이스: 

JSON 또는 XML과 같은 문서 형식으로 데이터를 저장하며, MongoDB가 대표적인 예입니다.


키-값 스토어: 

간단한 키와 연결된 값을 저장하는 데이터베이스로, Redis와 Riak이 예입니다.

 

열 지향 데이터베이스: 

대량의 데이터를 효율적으로 저장하고 검색하는 데 사용되며, HBase와 Cassandra가 대표적인 예입니다.

 

그래프 데이터베이스: 

그래프 형식의 데이터를 저장하고 쿼리 하는 데 사용되며, Neo4j가 대표적인 예입니다.


고성능 및 확장성: 

NoSQL 데이터베이스는 대규모 데이터 처리 및 고속 데이터 읽기/쓰기를 위해 최적화되어 있습니다. 

이러한 데이터베이스는 필요에 따라 클러스터를 확장하여 추가 부하를 처리할 수 있습니다.

주로 웹 및 모바일 애플리케이션에서 사용: 

NoSQL 데이터베이스는 웹 및 모바일 애플리케이션과 같이 대량의 데이터를 처리하고 빠른 응답 시간을 

요구하는 환경에서 널리 사용됩니다.

ACID 대신 BASE: 

관계형 데이터베이스의 ACID (원자성, 일관성, 고립성, 지속성) 

트랜잭션 속성 대신 NoSQL 데이터베이스는 BASE (기본적인 가용성, 유연한 일관성, 복제된 상태) 

모델을 따릅니다. 

이로 인해 데이터 일관성과 가용성을 조정할 수 있게 됩니다.

요약하면, NoSQL 데이터베이스는 다양한 유형의 데이터를 저장하고 관리할 수 있으며, 

대규모 및 분산 환경에서 성능 및 확장성을 제공하는 데이터베이스 유형입니다. 

데이터 모델의 유연성과 데이터베이스 유형 간의 선택을 통해 애플리케이션의 요구 사항에 맞게 최적의 

데이터베이스를 선택할 수 있습니다.

NoSQL 데이터베이스 언제 사용 되는지

웹 애플리케이션: 

웹 애플리케이션은 대규모 데이터를 처리하고 실시간으로 데이터를 읽고 쓰는 요구 사항이 있습니다.

NoSQL 데이터베이스는 이러한 요구 사항에 적합하며,

사용자 프로필, 로그, 세션 관리 등을 저장하는 데 많이 사용됩니다.

소셜 미디어 플랫폼: 

소셜 미디어 사이트는 대규모의 사용자 데이터와 연결된 활동을 처리합니다. 

NoSQL 데이터베이스는 사용자의 게시물, 친구 목록, 관계, 뉴스 피드 등을 저장하는 데 효과적입니다.

인터넷 또는 사물 인터넷(IoT) 애플리케이션: 

IoT 디바이스는 대량의 센서 데이터를 생성하며, 이 데이터를 실시간으로 수집하고 저장해야 합니다.

NoSQL 데이터베이스는 이러한 대용량 데이터를 효율적으로 저장하고 분석하는 데 사용됩니다.

게임 애플리케이션: 

온라인 게임은 많은 플레이어 상호작용과 게임 상태 관리가 필요합니다. 

NoSQL 데이터베이스는 게임 이벤트 및 플레이어 상태를 신속하게 처리하는 데 적합합니다.

리얼타임 분석 및 로깅: 

로그 데이터를 수집하고 분석하는 데 NoSQL 데이터베이스가 사용됩니다. 

특히 분산 로그 분석 시스템에 적합한 경우가 많습니다.

그래프 데이터: 

그래프 데이터베이스는 소셜 네트워크, 추천 시스템, 지리 정보 시스템(GIS) 등과 같이 관계를 

중요시하는 애플리케이션에서 사용됩니다.

콘텐츠 관리 시스템(CMS): 

CMS는 다양한 형식의 콘텐츠를 저장하고 관리해야 합니다. 

문서 데이터베이스는 이러한 요구 사항을 처리하는 데 적합합니다.

분산 데이터베이스: 

대규모 분산 환경에서 데이터를 저장하고 처리해야 하는 경우 NoSQL 데이터베이스는 

확장성과 가용성을 제공합니다.

Oracle과 같은 관계형 데이터베이스는 정형 데이터와 트랜잭션 처리에 중점을 두며, 

복잡한 관계를 정의하는 경우에 사용됩니다. 

그러나 NoSQL 데이터베이스는 비정형 데이터, 대규모 데이터 처리, 실시간 처리 등 다양한 요구 사항을 

처리하는 데 적합하며, 이러한 특성은 웹 및 모바일 애플리케이션, 빅 데이터 환경 및 IoT 애플리케이션과 

같은 현대적인 응용 프로그램에 많이 사용됩니다.

 

 

*바쁜 사람을 위한 깜찍한 정리

관계형 데이터 베이스와 다른 형태로 데이터 저장 및 관리 방식을 제공하는 데이터베이스이며 주로 대규모 및 고속 데이터 처리를 지원하고 유연한 데이터 모델을 제공하는 게 특징이며 NoSQL데이터베이스는 간단한 키와 연결된 값을 저장하여 데이터를 효율적으로 저장하고 검색하는 데 많이 사용됩니다. 또한 데이터의 저장 형식이 JSON, XML 형태이며 주로 웹 및 모바일 애플리케이션에서 많이 사용됩니다. 쉽게 말해 회원 가입으로 치면 관계형 데이터베이스는 회원아이디, 회원이름등 모든 내용을 칼럼으로 구분하여 저장하고 관계를 따져 연산을 시키는데 NoSQL은 회원 아이디부터 모든 것을 하나의 키-값으로 저장하여 간단하게 만드는 것이 특징이라고 생각하면 이해하기 쉬울 거 같습니다.
728x90
반응형