dico.gif

doribanner.gif

i15947420946.gif

huuon2.gif



♨신규 게시물♨




♨신규 댓글♨




♨랭킹 TOP 30♨


  1. 사나 35,459
  2. 치즈돈가스덮밥 33,780
  3. 투혼v 30,026
  4. ZicP 28,199
  5. 타이갓 28,126
  6. AkiREI 23,870
  7. 얍얍 18,861
  8. 호날두마리치킨 17,437
  9. 도리toS 16,625
  10. 도리고 15,690
  11. 헤이브로 15,317
  12. 김돈치 13,711
  13. 쯔쯔가무시 12,687
  14. 악마하비 12,127
  15. 코딩충 10,700
  16. 안인시우안 10,306
  17. 악당 10,123
  18. 브랜뉴 9,108
  19. 키호 7,711
  20. 뉴비임다 7,541
  21. 청상아리 7,536
  22. kimjg 7,520
  23. 랑빠 7,498
  24. 지금몇시지 6,893
  25. 개나리 6,377
  26. 오태식 6,351
  27. 염탐맨 6,331
  28. 자료구 6,305
  29. 밍밍란 6,195
  30. 에케덟 6,008

6faa2286ccd015fb37f28f688e13eac6.png

데이터 베이스의 간단한 강의를 해보고자 합니다.

디아블로미오2019.04.07 20:56조회 수 30댓글 1

    • 글자 크기

안녕하세요 저도 별로 아는건 없지만^^ 기래도~~ 열분들이 조금은 더 알아갈 수 있는 정보가 있으시면 좋겠다는 취지 하에 이렇게 강의 내용을 한번 적어보게 됩니다.

 

물론 저도 이렇게 내용을 적어 나가면서 다시한번 기억을 상기 시키고 반복 학습을 하는 계기가 될 것이라는 생각하에~~ 적습니다^^

 

우선 가장 먼저 게임존에서 사용되어지는 대표격의 데이터베이스인 MYSQL 데이터 베이스에 대해서 이야기 해보고자 합니다.

이게 음.. 여기 있는 분들에겐 몇가지 방식으로 불리는거 같더라구요 그 중 마이쿼리? 이던가요?? 음... 뭐 용어야 어찌 됐건 데이터 베이스의 정의를 내리자면!!

 

여~~~~러 사람들이 공유 할 수 있는 데이터의 집합을 관리하고 제공하는 어플리케이션 이라고 볼 수 있습니다.

 

이러한 내용은 녹색검색 엔진에서 검색만 해봐도 쉽게 나오는 내용인데요 우선 데이터베이스가 사용되어지는 방식에 대해서 예를 들어 간단히 설명을 하겠습니다.

 

하라는 배가고파서 허기를 달래기 위해 치킨집엘 갔습니다.

1. 근데 이 치킨집에 사람이 많아서 치킨을 주문하는데 줄을 서야 했습니다.

2. 드디어 제 차례가 되어 주문받는 스태프에게 주문을 합니다. 스태프는 주문을 받고 POS 에 메뉴를 찍은 후 주방에 메뉴를 전달합니다.

3. 주방에선 주방장이 전달받은 메뉴를 조리하기 위하여 냉장고문을 열어 닭을 꺼내어 조리를 시작합니다.

4. 닭에서 조리가 된 치킨은 치킨집 스태프를 거쳐 최종 손님인 하라에게 전달이 되었습니다.

 

여기서 순서대로 설명을 하겠습니다.

1. 치킨집에서 대기하는 사람들은 다중 사용자가 되겠습니다. 보통 DB 의 입장에선 DB 자원을 읽어가기 위한 wait event queue(대기열) 정도가 될 수 있겠습니다.

2. 주문을 하기 위해 스태프를 거치게 되는데 스태프는 어플리케이션 서버가 되겠습니다. 게임을 예로 들면 게임을 하던 중 아이템을 먹었으면 해당 아이템은 나의ID를 통해 먹은 아이템의 코드가 insert 가 되는데 이러한 역할을 하는 것이 어플리케이션서버이고 해당 어플리케이션은 DB에게 slq(질의)를 합니다.

3. 어플리케이션을 통하여 들어온 질의가 데이터 베이스에게 전달이 되는데 해당 데이터 베이스에서 자료를 가지고가기 위하여 행동을 하는것이 주방장 즉 데이터베이스 관리 시스템입니다. 데이터가 들어오거나 나가거나 할때 무작위로 가져오거나 저장할 수는 없겠죠 여기에서 어떠한 데이터(닭이)가 냉장고에서(테이블에서) 들어가고 나갈지는 질의언어를 받은 데이터베이스 관리 시스템(총칭 DB 제품군)이 데이터를 관리합니다.

4. 데이터베이스관리 시스템이 사용자가 원하는 데이터를 어플리케이션 서버를 통하여 전달 받은 내용을 다시 어플리케이션을 통하여 최종 사용자에게 전달을 하는 과정입니다.

 

이렇듯 이 내용을 순서로 표기를 하면

사용자 > 어플리케이션 서버(웹 서버,CS 클라이언트 서버) > 데이터베이스 서버 > 어플리케이션 서버(웹 서버,CS 클라이언트 서버) > 사용자

 

이렇 듯 데이터베이스는 사용자가 원하는 정보를 다중 사용자에게 제공을 하게 됩니다. 게임을 기준으로 들면 다수의 게이머가 게임을 하며 게임의 아이템을 저장하고 저장된 아이템을 가져오고 하는 것 입니다.

 

데이터 베이스의 사용목적은 위와 같으며 데이터 베이스의 종류는 RDBMS(관계형 데이터베이스)기준 제품명으로 나열하자면

MYSQL, MSSQL, ORACLE, POSTGRE SQL, MARIA DB. SYBASE, TIBERO 등의 데이터 베이스가 있겠습니다.

 

대부분의 데이터 베이스들의 어플리케이션 아키텍처는 대략적으로 아래의 형식으로 만들어져 있습니다.

인스턴스 , 데이터베이스

 

인스턴스는 실제 물리적인 데이터를 메모리로 불러와서 처리를 할때 필요한 메모리 영역입니다.

데이터베이스는 물리적인 데이터입니다. 이것을 데이터베이스 관리시스템의 관점으로 본다면 DB에서 불려지는 데이터의 최소단위(page 또는 block)의 묶음입니다.

 

이제 기본적인 설명이 끝났으니 데이터 베이스 내에서 사용 되어지는 용어 설명 정도만 하고 끝을 내볼 까 합니다. 내용이 너무 길어지면 재미없으니까요^^

 

SQL : 보통 쿼리라고 부르죠 DB에 질의를 하는 DB질의 언어 입니다.

select name from temp_table   <--이것이 질의어 입니다.  설명을 하자면 DB에게 현재 접속해 있는 데이터베이스 내 temp_table 이라는 테이블에서 name 이라는 컬럼(필드)의 모든 데이터를 가져와!! 라는 것입니다.

 

PL-SQL : DB에서 sql을 수시로 작성하기 어려운 부분에 대해서 저장프로시저 또는 트리거 등(을)를 제공하게 되는데 이러한 부분을 좀 더 쉽게 반복적인 역할 을 할수 있도록 sql을 확장하여 절차처리를 할 수 있도록 만들어진 언어입니다.

 

예)

DELIMITER $$
CREATE PROCEDURE INSERT_BOOK
(IN _BOOKID CHAR(5), IN _BOOKNAME VARCHAR(20), _PRICE DOUBLE, _BOOKTYPE VARCHAR(10), OUT RESULT INT)
/*
@DESCRIPTION
    BOOKS 테이블에  인서트하고 BOOKS_SELL에 추가된 금액으로 인서트한다.
@PARAM
    _BOOKID: 고유키
    _BOOKNAME : 제목
    _PRICE: 원가
    _BOOKTYPE : 책종류
@RETURN
    RESULT : 실패(-1), 성공 (0)
*/

BEGIN
    /* 가격을 변경할 변수를 선언한다. */
    DECLARE _SELLPRICE DOUBLE;

    /* 만약 SQL에러라면 ROLLBACK 처리한다. */
    DECLARE exit handler for SQLEXCEPTION
      BEGIN
        ROLLBACK;        
        SET RESULT = -1;  
    END;

    /* 트랜젝션 시작 */
    START TRANSACTION;
        /* BOOK에 인서트 */
        INSERT INTO BOOKS(bookID, bookName, bookOriginPrice, bookType)
        VALUE(_BOOKID, _BOOKNAME, _PRICE, _BOOKTYPE);        

        /* 책종류에 맞게 가격조정 */
        IF _BOOKTYPE = 'novel' THEN
            SET _SELLPRICE = _PRICE + _PRICE * (10/100);
        ELSEIF _BOOKTYPE = 'art' THEN
            SET _SELLPRICE = _PRICE + _PRICE * (15/100);
        ELSE
            SET _SELLPRICE = _PRICE + _PRICE * (20/100);
        END IF;

        /* 조정된 값을 BOOKS_SELL에 저장한다. */
        INSERT INTO BOOKS_SELL(bookID, bookSellPrice, bookType)
        VALUE(_BOOKID, _SELLPRICE, _BOOKTYPE);

    /* 커밋 */
    COMMIT;
    SET RESULT = 0;
END$$
DELIMITER ;

 

 

 

 

위의 예를 보면 INSERT_BOOK 이라는 저장프로시저 명을 만들어 해당 프로시저를 부를때 마다 각 컬럼의 값만 넣어주면 반복적인 내가 원하는 테이블에 적재 작업을 실행 시킬 수 있습니다.

 

또 한 MYSQL은 다양한 저장 엔진을 제공하는데요 그 중 여러분들이 데이터베이스를 자동 설치 할 경우 기본 저장 엔진으로 InnoDB 엔진이 설정되어 해당 엔진이 설치 되는데 해당 엔진의 특징은

DML 즉 insert delete update 트랜잭션 을 지원 하는 것입니다.

어떠 한 시스템에 사용 될 것인지에 따라서 서비스의 특징에 맞게 저장엔진을 바꿀 수 있는것이 MYSQL 의 특징이겠죠?^^

일반적으론 InnoDB 엔진을 사용합니다.

 

 

이상으로 이번 강의 내용을 요약하자면

1. 데이터베이스는 여러 사용자가 동시에 데이터를 조회 또는 저장할 수 있도록 데이터를 관리 저장하는 소프트웨어 입니다.

2. 대부분의 데이터 베이스의 구조는 인스턴스와 데이터베이스로 나누어져 있습니다.

3. 데이터 베이스를 조작하기 기본적으로 사용되어지는 SQL(쿼리) 은 질의 언어입니다.

4. mysql  에서는 기본적으로 DML 을 지원하는 InnoDB 저장엔진을 사용합니다.

 

이렇게 간단히 기본적인 강의를 마치도록 하겠습니다.~~

잠이안와서 강의 내용을 적게 되었네요... 

 

어떤분의 눈높이에 맞춰서 적어야할지 어디까지의 레벨에 맞추어 적어야할지 많은 고민을 하고 썻다 지웠다 반복 했지만 혹시 모르시거나 이해하기 어려우신 내용이 있으셔서 코멘트를 달아주시면 친절히 추가 설명을 드리도록 하겠습니다.~ 읽어주셔서 감사합니다.

    • 글자 크기
치트엔진 쓰레드 호출에 알아보자 (by 디아블로미오) 간단한 자바 쓰레드 (by 디아블로미오)

댓글 달기 WYSIWYG 사용

글쓴이 비밀번호
댓글 1
첨부 (0)

서버에 요청 중입니다. 잠시만 기다려 주십시오...