Web Hacking/Information

Non-Relational DBMS (비관계형 데이터베이스)

프레딕 2024. 4. 10. 20:38
728x90

1. NoSQL (비관계형 데이터베이스)

NoSQL은 SQL을 사용하지 않고 복잡하지 않은 데이터를 저장해 단순 검색 및 추가 검색 작업을 위해 매우 최적화된 저장 공간인 것이 큰 특징이자  RDBMS와의 차이점이다.

 

NoSQL의 종류로는 Redis, Dynamo, CouchDB, MongoDB 등 다양한 DBMS가 존재한다.

 

2. MongoDB

MongoDB는 아래와 같은 특징을 가진다.

 

1. 스키마를 따로 정의하지 않아 컬렉션에 대한 정의가 필요없다.

2. JSON형식으로 쿼리를 작성할 수 있다.

3. _id 필드가 Primary Key 역할을 한다.

 

[SQL]

SELECT * FROM inventory WHERE status = "A" and qty < 30;

 

[MongoDB]

db.inventory.find(
  { $and: [
    { status: "A" },
    { qty: { $lt: 30 } }
  ]}
)

MongoDB는 $문자를 통해 연산자를 사용할 수 있다.

 

$eq : 지정된 값과 같은 값을 찾는다 (equal)

$in : 배열 안의 값들과 일치하는 값을 찾는다 (in)

$ne : 지정된 값과 같지 않은 값을 찾는다 (not equal)

$and : 논리적 AND, 각각의 쿼리를 모두 만족하는 문서가 반환된다.

$not : 쿼리식의 효과를 반전시킨다.

$nor : 논리적 NOR, 각각의 쿼리를 모두 만족하지 않는 문서가 반환된다.

$or : 논리적 OR, 각각의 쿼리 중 하나 이상 만족하는 문서가 반환된다.

$exists : 지정된 필드가 있는 문서를 찾는다.

$expr : 쿼리 언어 내에서 집계 식을 사용할 수 있다.

$regex : 지정된 정규식과 일치하는 문서를 선택한다.

 

3. Redis

Redis는 키-값의 쌍을 가진 데이터를 저장한다.

제일 큰 특징은 다른 데이터베이스와 다르게 메모리 기반의 DBMS이다.

메모리를 사용하기 때문에 읽고 쓰는 작업이 빠르고 서비스에서 임시 데이터를 캐싱하는 용도로 쓰인다.

 

GET : 데이터 조회

MGET : 여러 데이터를 조회

SET : 새로운 데이터 추가

MSET : 여러 데이터를 추가

DEL : 데이터 삭제

EXITS : 데이터 유무 확인

INCR : 1 더함

DECR : 1 뺌

INFO : DBMS 정보 조회

CONFIG GET : 설정 조회

CONFIG SET : 새로운 설정 입력

 

4. Couch DB

Couch DB는 MongoDB와 같이 JSON형태인 도큐먼트를 저장한다.  

이는 웹 기반의 DBMS로, REST API 형식으로 요청을 처리한다.

$ curl -X PUT http://{username}:{password}@localhost:5984/users/guest -d '{"upw":"guest"}'
{"ok":true,"id":"guest","rev":"1-22a458e50cf189b17d50eeb295231896"}

$ curl http://{username}:{password}@localhost:5984/users/guest
{"_id":"guest","_rev":"1-22a458e50cf189b17d50eeb295231896","upw":"guest"}

위 예시는 레코드를 업데이트하고, 조회하는 예시이다.

 

CouchDB에서 _문자로 시작하는 URL, 필드는 특수 구성 요성을 나타낸다.

 

/ : 인스턴스에 대한 메타 정보를 반환한다.

/_all_dbs : 인스턴스의 데이터베이스 목록을 반환한다.

/_utils : 관리자페이지로 이동한다.

/db : 지정된 데이터베이스에 대한 정보를 반환한다.

/{db}/_all_docs : 지정된 데이터베이스에 포함된 모든 도큐먼트를 반환한다.

/{db}/_find : 지정된 데이터베이스에서 JSON 쿼리에 해당하는 모든 도큐먼트를 반환한다.

728x90
반응형