본문 바로가기

내가 만드는 개발자 교안/Computer Science

Every CS - 데이터베이스 06 - NoSQL

728x90

DB 06 - NoSQL

1. 개요

NoSQL (Not Only SQL): 테이블 형태가 아닌 다양한 형태로 데이터를 저장할 수 있는 데이터베이스 유형이다.

NoSQL은 높은 부하를 감당하거나 대용량 데이터를 다루는 분산 환경에서 빛을 발한다.
NoSQL의 주요 장점은 확장성, 유연성, 가용성, 성능이다.

2. NoSQL의 유형

1. 키-값 데이터베이스

키-값 데이터베이스는 데이터를 키와 값의 쌍으로 저장한다. 이는 NoSQL의 가장 간단한 형태다.
대표적으로 Redis, Memcached 등이 있으며, 이들은 주로 메모리에 데이터를 저장한다.
이런 데이터베이스는 가벼운 정보를 저장하거나 다른 주요 데이터베이스를 보조하는 용도로 활용된다.

2. 문서지향 데이터베이스

문서지향 데이터베이스는 데이터를 도큐먼트 형식으로 저장하며, 주로 JSON이나 XML 형식을 사용한다.
MongoDB가 이 유형의 대표적인 예시다.
MongoDB는 고정된 스키마가 없어 유연한 데이터 구조를 가능하게 한다.
도큐먼트가 모여 컬렉션을 형성하고, 이 컬렉션이 모여 데이터베이스를 구성한다.

3. 그래프 데이터베이스

그래프 데이터베이스는 데이터를 노드 형태로 저장하며, 노드 간의 연결과 방향을 표현할 수 있다.
이는 주로 SNS의 친구 관계나 교통망 등의 데이터에 사용된다.
대표적인 예로 neo4j가 있다.

4. 칼럼 패밀리 데이터베이스

칼럼 패밀리 데이터베이스는 행과 열의 개념을 가지며, 로우키를 통해 행을 식별한다.
이 데이터베이스는 정규화나 조인 없이 열을 자유롭게 추가할 수 있다.
칼럼 패밀리는 키스페이스라는 단위로 모인다.

3. MongoDB 사용법

MongoDB를 사용하기 위한 기본적인 절차는 다음과 같다:

설치 및 실행

  • 설치: MongoDB의 공식 웹사이트에서 MongoDB 서버와 커맨드 라인 도구를 다운로드하고 설치한다.
  • 서버 시작: 명령 프롬프트나 터미널에서 mongod 명령을 실행하여 MongoDB 서버를 시작한다.

데이터베이스 및 컬렉션 관리

  • 데이터베이스 생성 및 선택: use newDB
  • 컬렉션 생성: db.createCollection('newCollection')
  • 컬렉션 목록 확인: show collections

데이터 삽입 및 조회

  • 도큐먼트 삽입: db.newCollection.insert({name: 'John', age: 30})
  • 단일 도큐먼트 조회: db.newCollection.findOne({name: 'John'})
  • 조건에 맞는 도큐먼트들 조회: db.newCollection.find({age: {$gt: 20}})

데이터 수정 및 삭제

  • 도큐먼트 수정: db.newCollection.update({name: 'John'}, {$set: {age: 31}})
  • 도큐먼트 삭제: db.newCollection.remove({name: 'John'})

4. Redis 사용법

Redis를 효과적으로 사용하는 방법은 다음과 같다:

설치 및 실행

  1. 설치: Redis의 공식 웹사이트에서 Redis 서버를 다운로드하고 설치한다.
  2. 서버 시작: Redis 서버를 시작하려면, 설치된 디렉터리에서 redis-server 명령을 실행한다.

키-값 데이터 저장 및 조회

  • 데이터 저장: SET user:name "John"
  • 데이터 조회: GET user:name

리스트와 세트 관리

  • 리스트에 데이터 추가: RPUSH users "John"
  • 리스트에서 데이터 제거: LPOP users
  • 세트에 데이터 추가: SADD user:tags "admin"
  • 세트에서 데이터 조회: SMEMBERS user:tags

고급 기능

  • 키의 만료 시간 설정: EXPIRE user:name 300 (300초 후에 만료)
  • 트랜잭션 실행: MULTI -> SET user:name "John" -> SET user:age "30" -> EXEC
반응형