본문 바로가기

SQL/모두를 위한 postgreSQL

[PostgreSQL] 1.PostgreSQL이해하기

728x90

이 글은 도서  '모두를 위한 postgreSQL' 의 내용을 정리 한 것 입니다

 

1. 데이터베이스는 무엇인가
    1) 데이터베이스
        -데이터:현실에 존재하는 사실적인 자료들의 집합
        -데이터들이 가치가 있으려면 이들 사이에 논리적인 연관성이 있어야 한다
        -논리적으로 연관된 데이터들을 체계화 시켜 통합한 것을 데이터베이스 라고 한다
        -데이터베이스의 특징
         (1) 실시간 접근성 : 비정형적인 조회에 대해 실시간 처리에 의한 응답이 가능
         (2) 지속적인 변화 : 데이터의 삽입(insert), 삭제(delete), 생신(update)
         (3) 동시 공유 : 다수의 사용자가 동시에 같은 내용의 데이터를 이용 가능
         (4)내용에 따른 참조 : 데이터를 참조할 때 사용자가 요구하는 데이터 내용을 찾는다

    2) 데이터베이스 관리 시스템
        -PostgreSQL은 데이터베이스 관리 시스템 중 하나이다
        -데이터를 처리하는 시간과 비용을 최소화하기 위해서는 데이터베이스를 관리할 시스템이 필요
        -DBMS는 사용자롸 데이터베이스의 중간다리 역할을 하며 데이터의 통합적인 관리를 할 수 있는 소프트웨어
        -DBMS의 세가지 기능
         (1) 정의(definition) 
                응용프로그램이 요구하는 데이터베이스 구조를 지원하고 생성, 변경, 제거 할 수 있다
                여기서 구조를 조작한다는 것은 테이블을 조작한다는 의미이다
         (2) 조작(manipulation)
                데이터베이스에 접근하여 사용자가 요구하는 데이터를 삽입(insert) 갱신(update)
                삭제(delete)할 수 있다
         (3) 제어(control)
                데이터베이스의 접근할 수 있는 사용자를 제한하고 성능을 관리 할 수 있다
                또한 동시 접근을 사용자들에 의해 데이터가 부정확해지는 문제가 발생하지 않도록 제한

    3) 데이터베이스 모델
        -데이터베이스는 데이터를 보존하는 형식에 따라
         계층형, 네트워크형, 관계형, 객체-관계형, NoSQL데이터베이스로 구분된다
        
        (1) 계층형 데이터베이스
            -데이터를 계층에 따라 조직화한 데이터베이스이다
            -폴더 구조로, 부모-자식의 계층관계를 이용해 정보를 표현한다
            -계층구조를 따르면 검색은 매우 빠르지만, 계층구조를 가지지 않는 관계를 표현하지 못한다
            -하나의 부모의 여러 자식은 가능하지만, 하나의 자식에 여러부모는 불가능

        (2) 네트워크형 데이터베이스
            -부모여럿과 자식여럿이 연결되는 다대다 관계를 표현하여 계층형단점을 보안
            -통합데이터 저장이라고도 불리는 IDS나 IDMS에서 쓰임
            
        (3) 관계형 데이터베이스
            -데이터를 행과 열로 구분하는 2차원 테이블 형태로 구성하여 관리
            -데이터간의 관련성을 중시하며, 각각의 테이블을 관계라는 개념을 통해 연결할 수 있다
            -데이블의 행과열을 활용하여 테이블을 재구성하지 않고도 데이터에 다양한 방식으로 접근가능
            -엑셀의 기반이 되는 개념
            -관계형데이터베이스는 SQL을 사용하여 데이터를 처리한다

        (4) 객체-관계형 데이터베이스
            -관계형데이터베이스 시스템에 객체지향 개념의 장점들만을 추가한 데이터베이스이다
            -데이터자체를 처리하는 것과는 달리, 객체(Object)라는 개념을 도입하여 데이터를 처리하는 방식
        
        (5) NoSQL 데이터베이스
            -Not Only SQL의 줄임말로, 기존의 관계형 데이터베이스의 특징뿐만 아니라 다른 특설도 지원한다
            -생산성이 필요하고 데이터의 규모가 큰 곳에서 쓰인다
            -오랫동안 쓰인 관계형 데이터베이스들 보다 안정성이 떨어진다
            -Mongo DB, Dynamo, HBase, Neo4J

    4) 데이터베이스 객체
        -데이터베이스에서 데이터를 저장하려면 논리적인 저장구조가 필요하다
          이를 위해서 '데이터베이스 객체' 라는 개념이 필요하다
        -데이터베이스 객체에는 테이블, 뷰, 인데스, 시노님, 시퀀스, 함수, 프로시저, 패키지 등이 있다

 


2. PostgreSQL의 특징
    1) PostgreSQL 장점
        -트랜잭션 : 관계형 DBMS 작업의 단위인 트랜잭션과 트랜잭션의 안전한 수행을 위한 MVCC와 ACID라는 

                           속성을 지원한다  즉, 대용량의 복잡한 연산 처리를 안정하게 해낼 수 있는 DBMS라고 이해해라
        
        -다양한 플랫폼 : 맥, 윈도우, 유닉스, 리눅스 등 다양한 플랫폼에서 실행가능

        -확장성 : 사용자 정의 함수,연산자 등 다양한 정의 객체를 지원한다

        -오픈소스 라이선스

3. PostgreSQL의 구조
    1) PostgreSQL의 프로세스 구조
        -클라이언트(애플리케이션) - 서버(PostgreSQL) 모델을 기반으로 한다
        -프로세스 구조는 실행되고 있는 프로그램이 작동하는 방식을 말한다
        -클라이언트-서버 모델은 수요자와 공급자의 관계를 가지고 있다
        -수요자는 자신이 요청한 대로 데이터베이스를 조작한 결과값을 받아내는 것을 원하고
         공급자는 수요자에 요청에 따라 데이터베이스를 조작한 값을 내보내는 역할을 한다
        -수요자의 요구대로 데이터베이스를 조작하기 위해서는 공급자(PostgreSQL)와 연결
        
        -인터페이스는 서로 간의 연결을 원하는 대상들을 이어주는 매개체라고 이해해라
        -인터페이스는 클라이언트와 서버 간의 통신을 위한 수단
        -인터페이스들의 집합을 인터페이스 라이브러리 라고 한다
        -클라이언트가 다양한 인터페이스 라이브러리들을 통해 서버와 연결을 요청하면,
         서버는 그 요청을 받아들이고, 마침내 클라이언트와 서버가 연결된다
        -클라이언트가 요청한 대로 서버는 데이터베이스를 조작하여 사용자가 원하는 결과를 내보낸다

    2) PostgreSQL 데이터베이스 계층구조
        -클러스트 > 스키마 > 데이터베이스 > 테이블

        -클러스트 : 데이터베이스들의 집합이며 계층구조의 최상단에 위치한다
                    서버 내에서 이름으로 식별할 수 없다 따라서 데이터베이스의 상위개념이다

        -스키마
            -개체들의 논리적인 집합이다
            -스키마를 구성하는 개체들로는 테이블, 뷰, 함수, 인덱스, 데이터타입, 연산자 등이 있다
            -스키마는 각각의 이름으로 식별할 수 있기 때문에 하나의 데이터베이스 내에서는 같은 이름의 스키마가 있으면 안된다
            -데이터베이스를 생성하면 public(디폴트) 스키마가 생성된다
            -PostgreSQL에서는 스키마를 '테이블의 집합' 개념으로도 사용된다
             따라서 스키마들의 집합이 데이터베이스가 된다
        
        -테이블
            -데이터베이스 관리에서 가장 기본이 되는 구조
            -가로행과 세로열로 이루어져 있으며, 
             행은 로우, 레코드, 튜플 이라고도 부르고, 특정한 한 개체의 데이터들이 저장된다
             열은 컬럼, 속성, 필드 라고도 부르고, 컬럼의 최상단에는 컬럼의 이름인 컬럼명이 있다
            -컬럼은 컬럼명의 특성을 가지는 데이터 값들이 저장된다
            -로우(행) 에는 개체를 식별할 수 있는 개념인 키(key)가 있다
            -어떤 경우에는 테이블을 '릴레이션' 이라고도 한다
             테이블과 릴레이션은 데이터간 '관계'를 통해 데이터를 관리할 수 있게한다
            -모든 릴레이션이 테이블이 될 수는 있지만, 모든 테이블이 릴레이션인 것은 아니다

4. SQL이란
    1) SQL
        -데이터베이스에 접근하여 데이터를 다루기 위한 전용언어를 구조화된 질의 언어
        -RDBMS(관계형데이터베이스관리시스템)의 데이터베이스와 소통할 수 있는 대부분의 수단은 SQL이다
        -우리는 SQL을 RDBMS에 보내고, RDBMS는 우리가 보낸 SQL을 해석하여 데이터베이스에서 데이터를 가져오거나 조작한다

    2) SQL의 특징
        -SQL은 질의(Query)언어라고도 하는데, 이는 데이터베이스에서 원하는 대답을 얻기 위한 질문을 하는 언어라는 뜻
        -SQL은 단순 질문 뿐만 아니라 데이터베이스의 데이터를 정의, 조작, 제어하는 RDBMS의 기능도 한다
        -원하는 결과만 입력하면 RDBMS가 알아서 처리하여 결과값을 내준다 = 비절차적 언어
        -SQL은 테이블 전체를 기준으로 데이터를 처리한다

    3) SQL의 유형
        -SQL이 RDBMS를 조작할 수 있는 언어
        -RDBMS의 데이터 정의, 조작, 제어 기능은 SQL을 통해 이루어진다
        -데이터 정의, 조작, 제어의 기능을 수행함에 따라 SQL의 특성을 분류할 수 있다

            -데이터 정의어(DDL)
                :데이터베이스 객체 중 하나인 테이블, 뷰, 인덱스등 다른 데이터베이스 객체들의 정의, 변경, 제거 등
                 객체관리에 사용하는 SQL로 대표적인 명령어 CREATE, ALTER, DROP, RENAME, TRUNCATE 등이 있다

            -데이터 조작어(DML)
                :테이블 내의 데이터를 갱신, 삭제, 추가, 저장하는 등 데이터를 조작한는 SQL로 
                 대표적인 명령어 SELECT, INSERT, DELETE, UPDATE 등이 있다

            -데이터 제어어(DCL)
                :데이터베이스에 접근하거나 권한을 부여하는 역할을 하는 SQL이며,
                 제어하는 역할이 필요한 이유는 데디터베이스의 데이터를 안전하게 보호하기 위해서이다
                 대표적인 명령어 GRANT, REVOKE 등이 있다

728x90