StoryCode

디비별 SQL 비교

Database 관리
반응형

 

  Maria (RDB) MongoDB

Redis (메모리, NoSQL/Cache, 오픈 소스)

* 명령어 참조 : 

http://www.redisgate.com/redis/command/sets.php

 

* 기타 참조 :

https://codingmania.tistory.com/18

https://codingmania.tistory.com/25?category=563274

DJango

 

* 참조

https://brownbears.tistory.com/63

특징    

1. 리스트, 배열 데이터 처리

2. value 값으로 문자열, 리스트, Set, Sorted set, Hash 등  

3. 리스트형 데이터 입력과 삭제가 MySQL 대비 10배

( 초당 2만 ~ 10만회 수행 성능 )

4. 여러 프로세스에서 동시에 같은 key에 대한 갱신을 요청할 경우, Atomic 처리로 데이터 부정합 방지 Atomic처리 함수를 제공

5. 메모리를 활용하면서 영속적인 데이터 보존

- 명령어로 명시적으로 삭제, expires를 설정하지 않으면 데이터가 삭제되지 않는다.

 - 스냅샷(기억장치) 기능을 제공하여 메모리의 내용을 *.rdb 파일로 저장하여 해당 시점으로 복구할 수 있다.

6. Redis Server는 1개의 싱글 쓰레드로 수행되며, 따라서 서버 하나에 여러개의 서버를  띄우는 것이 가능하다.

- Master - Slave 형식으로 구성이 가능함

 

Server 실행     redis-server  
Clien 실행     redis-cli  
Server Alive Check     ping  
DATATYPE.String    

- String은 일반적인 Text문자열이며, key와 value가 각각 하나씩인 일대일 관계(유일)

- Text형태만 저장할 수 있는것이 아니라, binary safe string 이다.

- 이것이 의미하는 것은 JPEG 이미지나 숫자 알파벳 등을 사용할 수도 있다는 것이다.

- key와 value 모두 넣을 수 있는 최대 길이는 512MB이다.

- key는 너무 길면 찾기 어렵고, 불필요한 메모리 소모가 일어난다.

- key는 너무 짧으면 뭔지 해독하기 쉽지 않으므로 알맞게 하도록 하자.

- key를 구성할때 단어 사이에 구분자를 사용하는 것이 좋습니다. 

예를 들어 ':', '-' 등을 사용해서 key를 구성하면 쉽게 알아볼 수 있습니다. 

 

- set, get command

 

DATATYPE.Lists    

- 일반적인 배열로 생각하면 된다.

- List는 key 1개에 n개의 value를 갖는다. (단, 중복된 값 저장 가능함)

- 입력된 데이터값은 입력된 순서대로 순차적으로 저장 및 처리된다.

- 주로 큐(Queue)와 스택(Stack)으로 사용된다.

- 한 key에 담을 수 있는 최대 갯수는 4,294,967,295개(2^32 - 1개)
- LPUSH, LPOP, RPUSH, RPOP Command

 

DATATYPE.Sets      - Group 형태로 key 1개에 n개의 값을 갖는다. (단, 중복된 값 허용하지 않음)

 - 입력된 순서와 상관없이 저장되는 정렬되지 않은 집합형이다.

 - '집합'이기 때문에 한 key에 중복된 데이터는 존재할 수 없다.

 - 즉, 동일한 key에 같은 값 value A가 두 번 추가된다면 값은 하나만 존재하게 된다.

 - 한 key에 담을 수 있는 최대 갯수는 4,294,967,295개(2^32 - 1개)

 - Set의 경우 집합 연산을 제공한다. 합집합, 교집합, 차집합을 할 수 있다.

-  Sets에서는 집합이라는 의미에서 value를 member라 부른다.

   명령어 SADD : 데이터를 저장하기 위한 명령어.
 
DATATYPE.Sorted sets     - key 하나에 여러개의 score와 value로 구성된다.

- Sets과 마찮가지로 중복된 데이터는 허용하지 않는다.

  동일한 키에 값을 여러번 추가해도 하나만 존재하게 된다.

- Set에 'score'라는 필드가 추가된 데이터형이다.

- score로 데이터 값(value)의 순서를 정렬(sort)한다.

- score가 같다면 데이터 값(value)으로 정렬(sort)한다.

- 정렬된 데이터가 필요한 경우 Sorted Set 데이터형을 사용한다.

 
DATATYPE.Hashs    

- Hashes의 경우 key 하나에 여러개의 field와 value 쌍으로 구성된다.

Hashes VS Table 공통점
1. Hashes가 필드(field)와 값(value)로 구성된다는 점은 RDB의 table과 비슷하다.
2. Hash key는 table의 PK, field는 column, value는 value로 생각하면 비슷하다.
3. Key가 PK와 같은 역할을 하기떄문에 Key 하나는 table의 하나의 row와 같다.

Hashes VS Table차이점
1. Table의 column 수는 일반적으로 제한이 있다.
   하지만, Hashes의 field의 수는 40억개로 거의 무제한에 가깝다.

2. Table에서 column을 추가하려면 alter문으로 미리 table을 변경해야 하지만, 

   Hash에서는 그러한 사전 작업이 필요없다. 따라서, field의 추가/삭제가 자유롭다.

   field의 추가/삭제는 해당 key에서만 영향을 미친다.



출처: https://codingmania.tistory.com/25?category=563274 [괴발개발 개발새발 하는 개발자의 개발 블로그]

 

         
         
String set SET @KEY := VALUE   SET KEY = VALUE  
Value get SELECT @KEY   GET KEY  
CREATE TABLE        
SELECT 1 Row      

Syntax> model.objects.get(조건)

설명> 1 row 만 리턴해야 함.

Ex> key = model1.objects.get(pk=pk)

print(key.name)

SELECT Multi Row      

Syntax> model.objects.filter(조건)

설명> 조건에 맞는 Row 모두 가져옴

Ex> key= model.objects.filter(name='lee')

print(key[0]['name'])

SELECT ALL      

Syntax> model.objects.all()

Ex> key= model.objects.all()

print(key[0]['name']

INSERT        
UPDATE        
DELETE        
조건 키워드        
ORDER BY       Ex> value = model.objects.order_by('-pk') # 내림차순 정렬
value = model.objects.order_by('pk') # 오름차순 정렬
GROUP BY      

Syntax> Aggregate

Ex>

from django.db.models import Max
value = model.objects.aggregate(temp_name=Max('pk')) # temp_name은 사용자가 임의로 정할 수 있음
print(value['temp_name'])

 

 

 

 

Ex2>

from django.db.models import Max
from django.db.models.functions import Coalesce
value = model.objects.aggregate(temp_name=Coalesce(Max('pk'),10000)) # temp_name은 사용자가 임의로 정할 수 있음
print(value['temp_name'])

         
         
         
반응형

'Database 관리' 카테고리의 다른 글

데이타베이스 콘솔 기본 명령어 모음  (0) 2022.01.14