NoSQL은 비정형 데이터의 저장 필요성 및 빅 데이터의 발달으로 인해 매우 큰 대량의 데이터를 처리하기 위해 등장 했습니다. NoSQL은 단순 검색 및 추가 작업에 있어서 매우 최적화된 키-값 저장 기법을 사용하여, 응답속도나, 처리 효율 등에 있어서 매우 뛰어난 성능을 나타냅니다.
RDBMS와는 달리 키-값을 사용해 데이터를 사용하며, 여기에서도 RDBMS와 마찬가지로 Injection 공격이 발생할 수 있습니다.
MongoDB
MongoDB는 JSON 형태인 Document를 저장하며 아래와 같은 특징을 가지고 있습니다.
스키마를 따로 정의하지 않아 각 콜렉션(Collection)에 대한 정의가 필요하지 않습니다.
JSON 형식으로 쿼리를 작성할 수 있습니다.
_id 필드가 Primary Key 역할을 합니다.
다음은 RDBMS의 Query와 MongoDB의 Query입니다 둘다 status값이 "TEST"이고 qty 값이 "1"보다 작은 데이터를 조회하는 Query입니다.
RDBMS
SELECT * FROM inventory WHERE status = "TEST" and qty < 1;
Redis는 키-값(Key-Value)의 쌍을 가진 데이터를 저장합니다. 제일 큰 특징은 다른 데이터베이스와 다르게 메모리 기반의 DBMS입니다. 메모리를 사용해 데이터를 저장하고 접근하기 때문에 읽고 쓰는 작업을 다른 DBMS보다 훨씬 빠르게 수행합니다. 따라서 다양한 서비스에서 임시 데이터를 캐싱하는 용도로 주로 사용하고 있습니다.
아래는 Redis의 사용 예시 입니다.
$ redis-cli
127.0.0.1:6379> SET test 1234 # SET key value
OK
127.0.0.1:6379> GET test # GET key
"1234"
데이터 조회 및 조작 명령어
명령어
구조
설명
GET
GET key
데이터 조회
MGET
MGET key [key ...]
여러 데이터를 조회
SET
SET key value
새로운 데이터 추가
MSET
MSET key value [key value]
여러 데이터를 추가
DEL
DEL key [key ...]
데이터 삭제
EXISTS
EXISTS key [key ...]
데이터 유무 확인
INCR
INCR key
데이터 값에 1 더함
DECR
DECR key
데이터 값에 1 뺌
관리 명령어
명령어
구조
설명
INFO
INFO [section]
DBMS 정보 조회
CONFIG GET
CONFIG GET parameter
설정 조회
CONFIG SET
CONFIG SET parameter value
새로운 설정을 입력
CounchDB
CouchDB 또한 MongoDB와 같이 JSON 형태인 도큐먼트(Document)를 저장합니다. 이는 웹 기반의 DBMS로, REST API 형식으로 요청을 처리합니다.
다음은 각 메소드에 따른 기능 설명이며, HTTP 요청으로 레코드를 업데이트하고, 조회하는 예시입니다.