'Database'에 해당되는 글 4건

  1. 2021.07.01 기본적인 SQL 쿼리들 - 3
  2. 2021.07.01 기본적인 SQL 쿼리들 - 2
  3. 2021.06.20 기본적인 SQL 쿼리들 - 1
  4. 2018.07.18 Redis 공부하기-1
반응형

알아두면 유용한 함수들

. ABS(`val`) : val의 절대값 출력

. CREATEST(`val1`, `val2`, ....`valN`) : 주어진 n개의 값들 중 가장 큰 값을 반환

. LEAST(`val1`, `val2`, ....`valN`) : 주어진 n개의 값들 중 가장 작은 값을 반환

. CONCAT('Str1', 'Str2', 'Str3',...) : 주어진 문자열들을 모두 연결한 후 반환

. SUBSTR('문자열', startPos, length) : 문자열의 startPos 부터 Length만큼을 반환

 

알아두면 좋은 함수들 (Group화 관련)

. COUNT(`columnName`) : 사용 시 해당 columnName에 속한 항목의 갯수를 반환

. SUM(`columnName`) : 해당 column들의 합계를 반환

. AVG(`columnName`) : 해당 Column들의 평균을 반환

. MAX(`columnName`) , MIN(`columnName`) : 각각 그룹화된 항목 중 최대값, 최소값을 반환

 

알아두면 좋은 함수들 (date 관련)

. CURRENT_TIMESTAMP : 해당 장비의 시간을 반환

. GET_UTCDATE() : 해당 장비의 UTC시간을 반환

. DATE_ADD(date1, deltaVal, `ValType`) : date1에 deltaVal만큼 추가 후 반환 (ValType은 시간, 분 초 등등)

. DATE_SUB(date1, deltaVal, `ValType`) : date1에 deltaVal만큼 감소 후 반환(ValType은 시간, 분 초 등등)

 

 

알아두면 좋은 함수들 (JOIN 관련)

쉽게 이해하기

옆의 그림의 경우 RIGHT JOIN을 표현한 그림이다.

RIGHT쪽으로 JOIN시킬 때

아래의 화살표에 해당하는 경우 매칭되는 값이 존재하지만

위의 화살표에 해당되는 경우 매칭되는 값이 존재하지 않는다.

따라서 이경우 해당 매칭값에 대하여 NULL값을 출력한다.

( LEFT JOIN의 경우 위와 반대 )

반응형

'Database > MySQL' 카테고리의 다른 글

기본적인 SQL 쿼리들 - 2  (0) 2021.07.01
기본적인 SQL 쿼리들 - 1  (0) 2021.06.20
Posted by Sweetmeats_boy
반응형

DataBase

. 생성 : Create database `DBName`

. 삭제 : Drop database `DBName`

. DB 목록 조회 : SHOW databases

. 선택 : USE `DBName`

 

Table

. 생성

//table 명과 해당 table에 속하는 column들의 이름, 속성 지정.
CREATE TABLE `TableName`(
 `ColumnName_1` Int Private key, 
 `ColumnName_2` varchar(100) not null,
)

. 삭제

//Table을 아예 삭제해버린다.
DROP TABLE `TableName`;

//Table의 내용물만 비운다, 기존 Table은 텅빈상태로 존재.
Truncate Table `TableName`;

. scheme 조회

//해당 table의 scheme을 조회
desc `TableName`;

. Index 지정

ALTER TABLE `TableName` ADD INDEX `IndexName` (관련 Column-1, 관련 Column-2, ...);

. Index 제거

ALTER TABLE `TableName` DROP INDEX `indexName`;

. Column 생성

ALTER TABLE `tableName` ADD `ColumnName` Column 관련 속성 지정

. Column 삭제

ALTER TABLE `tableName` DROP `columnName`;

. Column 변경

ALTER TABLE `tableName` CHANGE `columnName` 새로운 Column 속성들;

 

Group 조회

특정 쿼리~ +  `tableName` group by `columnName` HAVING `조건`;

/*
ex : SELECT `T1` GROUP BY `COL1` HAVING COUNT(COL1) > 1;
 -> col1에 대해서 group화 한 후 col1이 1 초과인 경우를 출력
*/

 

 

반응형

'Database > MySQL' 카테고리의 다른 글

기본적인 SQL 쿼리들 - 3  (0) 2021.07.01
기본적인 SQL 쿼리들 - 1  (0) 2021.06.20
Posted by Sweetmeats_boy
반응형

SQL 쿼리에 있어서 가장 기본적인 쿼리는 아래와 같다

. 삽입 (insert)

. 삭제 (delete)

. 갱신 (update)

. 조회 (select)

 

DB를 활용함에 있어 위의 4가지 쿼리를 조합하고 활용하며 여러 작업을 할 수 있다.

 

삽입

INSERT INTO tableA as A (columnName1, columnName2, ...) VALUE (, , ...);

혹은 여러 값을 한번에 삽입

INSERT INTO tableA as A (ColumName1, ColumName2, ...) VALUES (val1, val2, ...), (val1, val2, ...);

혹은 ColumnName을 생략하는 경우 Column 수, 타입에 맞는 value들을 명시해야함

INSERT INTO tableA as A VALUE (val1, val2, ....);

INSERT INTO tableA as A VALUES (val1, val2, ...), ..., (val1`, val2`, ...);

 

 

삭제

DELETE FROM tableA as A WHERE ( 조건 )

 -> 조건에 맞는 row들 모두 삭제

 

갱신

UPDATE tablaA as A SET (ColumnName1 = val1) WHERE ( 조건 )

 -> 조건에 맞는 row들의 columnName1의 값을 val1로 갱신.

 

조회

SELECT * FROM tableA as A WHERE ( 조건 )

SELECT (columnName1, ColumnName2, ...) FROM tableA as A WHERE ( 조건 )

 

그 외에도 Procedure 혹은 Join등 여러가지 공부할것들이 존재한다.

 

반응형

'Database > MySQL' 카테고리의 다른 글

기본적인 SQL 쿼리들 - 3  (0) 2021.07.01
기본적인 SQL 쿼리들 - 2  (0) 2021.07.01
Posted by Sweetmeats_boy
반응형

eeRedis란 무엇인가에 대해서 간단하게 알아보자




Redis의 기능은 캐쉬서버라고 볼 수 있다.


우선 캐쉬서버란 무엇인가?


우리가 게임을 플레이하고 있다고 생각을 해보자.


클라이언트와 서버는 유저의 행동에 따라서 무수히 많은 통신을 하고 


게임 로직에 의거하여 플레이어의 정보를 수정, 갱신을 하게 된다.


만약 우리가 이러한 작업을 할 때 단순히 MYSQL등의 DB만을 사용한다면 어떻게 될까?


무수히 많은 SELECT 요청과 UPDATE 혹은 DELETE요청이 상대적으로 느린 DB에 쌓여서 


유저의 정보를 처리하는데에 많은 시간이 소요될것이고 


이에 따라서 서버에는 많은 과부하가걸릴 것이다.



이러한 문제를 해결하기 위해서 선택한 것이 메모리에서 해당 정보를 지닌채로


조회등의 요청이 올 시 메모리를 참조하게하고 데이터 갱신 등의 작업 시


우선 메모리를 갱신 한 후 DB에 적용하는 방법이다.



이러한 방식을 사용하는것이 Redis, Memecached 등등의 캐시 시스템인 것이다.


Memcached와 redis의 차이점은 추후 다른 글에서 자세히 알아보고 


우선은 Redis의 특징에 대하여 알아보자.


1. Redis는 영속성을 지원하는 인 메모리 데이터 저장소이다.

2. read 측면에서 성능을 향상시키기 위한 서버측 복제를 지원한다.[master, slave 서버]

3. write측면에서 성능을 향상시키기 위한 클라이언트 측의 샤딩을 지원한다.

4. ANSI C으로 작성되어 ANSI C컴파일러가 동작하는 곳이면 어디든 설치,실행이 가능하다.

5. Redis client는 다양한 언어로 포팅되어 있다.

6. 다양한 서비스에 활용되고 있으며 이를 통해 성능적으로 검증되었다.

7. 다양한 Data 형을 지원한다.

8. 메 모리 외의 영구 저장소를 지원하므로 instance 재시작에 대한 CacheWarmUp을 고려하지 않아도 된다.



출처 : http://blog.naver.com/PostView.nhn?blogId=newamsterdam99&logNo=220588699370&parentCategoryNo=6&categoryNo=&viewDate=&isShowPopularPosts=true&from=search



- ANSI C 란?

ansi c란 American Mational Standards Institute 의 약자로 미국에서 공인된 표준이지만 현재는 국제적으로 공인된 C의 표준이다.

이 표준의 목적은 C기반 Program들의 형식과 이를 해석하는 방식을 명시함으로써,

C언어 기반 Program의 이식성, 신뢰성, 유지보수성, 효율적인 실행을 증진시키는 것이다.

-> 현재 대부분의 C컴파일러는 해당 표준을 준수한다.


- Redis가 지원하는 Data형의 종류

String : 문자열 및 숫자, 바이너리 이미지등을 저장가능.[최대 512MB]

Set : 하나의 키값에 대한 여러 값을 저장, Set간의 연산으로 교집합, 합집합을 계산할 수 있다.

Sorted Set : 내부의 값들을 오름차순으로 저장한다.

Hashes : 해싱된 키값과 이에 대한 String을 저장

List : String들의 집합으로 LinkedList와 흡사, push와 pop으로 데이터 추가,제거가 가능하다.


- CacheWarmUp이란?: 

자세한 내용은 외국 블로그 번역 게시판 참고


- Sharding이란?

수평분할과 샤딩이라는 것이 있는데 우선 수평분할(horizontal pratialing)의 경우 동일한 스키마를 지닌 다른 테이블에 데이터를 저장하는 것을 의미한다.

이러한 방법은 인덱스의 크기를 줄이고 작업 동시성을 늘리기 위한 것이다.

이와 달리 샤딩은 동일한 스키마를 지닌 물리적으로 다른 DB에 데이터를 저장하는 것을 의미한다. 샤딩의 경우 다른 DB에 데이터가 존재하는 것이기 때문에 몆몆 기능적인 부분에서 제약이 존재한다.(예 : join의 경우, 일관성 유지, 데이터의 복제 등등)


간단히 말하자면 하나의 DB에 담기 방대한 자료를 동일 사양, 동일 내용의 다른 DB에 저장하는 것을 Sharding이라고 한다.



반응형
Posted by Sweetmeats_boy
이전버튼 1 이전버튼

블로그 이미지
Sweetmeats_boy

태그목록

Yesterday
Today
Total

달력

 « |  » 2024.11
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

글 보관함