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 쿼리에 해당하는 모든 도큐먼트를 반환한다.
'Web Hacking > Information' 카테고리의 다른 글
SQL Injection 팁 정리 (0) | 2024.04.15 |
---|---|
NoSQL Injection - MongoDB (0) | 2024.04.10 |
Cross Site Request Forgery (CSRF) 취약점 (0) | 2024.04.04 |
Cross Site Scripting (XSS) 취약점 (0) | 2024.04.04 |
xss bypass html인코딩 (0) | 2024.04.03 |