이 글은 도서 '모두를 위한 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 등이 있다
'SQL > 모두를 위한 postgreSQL' 카테고리의 다른 글
[PostgreSQL] 5. 데이터의 집계_2 (0) | 2023.03.17 |
---|---|
[PostgreSQL] 5. 데이터의 집계 및 결합_1 (0) | 2023.03.16 |
[PostgreSQL] 4.쿼리에사용되는연산자와함수 (0) | 2023.03.14 |
[PostgreSQL] 3.데이터 타입에 알맞은 테이블 만들기 (2) | 2023.03.10 |
[PostgreSQL] 2.psql 쉘에서 쿼리작성하기 (0) | 2023.03.08 |