1장 개요
1. Database
Data란 관찰의 결과로 나오는 실제 값을 의미하며, Database는 이러한 Data를 정해진 규칙에 따라 데이터를 체계적으로 저장하고 관리하는 시스템을 의미한다.
Database 예시
학원을 예로 들면, 학원이라는 조직이 운영되기 위해서는 학생과 관련된 다양한 데이터가 필요하다.
이름,전화번호 등 학생과 관련된 학생 기본 정보, 수업별 성적 정보, 각 과목 담당 교사 정보 등
필요한 데이터들을 업무목적에 맞춰 여러 파일에 나눠서 다음과 같이 저장하게 된다. (엑셀이라고 생각할 것)
학생 기본 정보
김민수
010-1111-2222
2004-05-12
서울시 강남구
이지은
010-2222-3333
2003-11-20
서울시 송파구
수업별 성적 정보
김민수
자바
85
김민수
SQL
90
이지은
자바
88
과목별 담당 교사
자바
박정우
SQL
김지현
이렇게 여러 파일에 나눠서 저장되면 데이터의 중복이 생겨 필요한 정보를 찾기 어려워 질 수 있다. 따라서 서로 관련있는 데이터는 데이터베이스에 구조화해서 저장하는게 편하다.
학생(Student) 테이블
1001
김민수
010-1111-2222
2004-05-12
서울시 강남구
1002
이지은
010-2222-3333
2003-11-20
서울시 송파구
과목(Subject) 테이블
101
자바
박정우
102
SQL
김지현
성적(Score) 테이블
1001
101
85
1001
102
90
1002
101
88
이렇게 구조화된 데이터는 중복된 데이터(학생이름,과목명 등) 없이, 업무목적에 맞춰 다양한 부서 (강사,행정팀,취업팀등 )에서 공통으로 데이터를 꺼내 사용할 수 있다.
즉. 데이터베이스란 한 조직에서 여러 시스템이 함께 사용할 수 있도록, 관련 있는 데이터를 구조적으로 통합하여 저장한 정보의 집합
Database정의
공용 데이터(Shared Data)
여러 사용자나 여러 시스템이 공동으로 사용할 수 있는 데이터
위 예시에서 강사,행정팀,취업팀등 다양한 시스템에서 이용한다.
통합 데이터(Integrated Data)
다양한정보를 통합하여 중복을 최소화 하고 중복으로 인해 발생할 수 있는 데이터 불일치 문제를 방지한 구조를 가진다.
만약 학생데이터가 통합되지 않았다면, 학생 기본정보에 들어간 데이터가, 학생별 성적데이터에도 그대로 중복되어 들어가 있을 것.
저장 데이터(Stored Data)
데이터는 컴퓨터의 저장장치에 물리적으로 저장되어 관리된다.
운영 데이터(Operational Data)
조직의 운영 목적을 위해 실시간으로 사용되는 데이터
Database의 특징
실시간 접근성(real time accessibility)
사용자가 데이터를 요청하면 즉시 응답이 제공된다.
ex) 즉, 실시간 데이터 조회, 추가, 수정, 삭제가 가능
계속적인 변화(continuous change)
데이터는 시간의 흐름에 따라 지속적으로 변경된다.
ex)학생의 상태는 첫 강의 시작시 수강생, 종료시 수료생으로 변경
동시 공유(concurrent sharing)
여러 사용자가 동시에 같은 데이터를 조회하거나 수정할 수 있다. 단, 수정시에는 동기화와 같은 동시성 제어 기능이 필요하다.
내용에 의한 참조(Content Reference)
데이터를 위치나, 순서가 아닌 "내용"을 기준으로 검색한다.
ex)데이터베이스에서 이름이 민경민인 강사를 검색
Database 구조
스키마(Schema)
데이터베이스를 구성하는 객체(테이블, 뷰, 인덱스, 제약조건 등)들의 논리적인 집합
위 테이블들의 전체 집합을 스키마 라고 부름.
테이블(Table) / 엔티티(Entity)
데이터를 행과 열로 구성하여 저장하는 데이터베이스의 기본 단위(엑셀과 비슷함)
컬럼(Column) / 속성(Attribute)
테이블을 구성하는 열(속성)
각 칼럼은 저장하는 데이터의 타입과 제약조건을 가진다.
행(Row) / 튜플(Tuple)
테이블에 저장된 실제 데이터
하나의 행에는 여러 개의 컬럼이 포함된다
기본키(Primary key)
테이블의 각 행을 식별할 수 있는 고유한 컬럼
값이 비어있거나 중복되면 안된다.
외래키(Foreigin Key)
다른 테이블의 기본키를 참조하여 현재 테이블 간의 관계를 나타내는 값
제약조건(Constraints)
데이터의 정확성과 무경성을 보장하기 위한 조건 및 규칙들
무결성 ? 데이터베이스에 저장된 값과 현실 세계의 실제값이 일치하도록 보장하는 규칙의집합
외래키를 사용하는 SAL_LEVEL같은 경우, 반드시 외래키에 존재하는 값을 사용하도록 보장하기 위해서는 제약조건을 추가해야한다.
2. DBMS(Database Management System)
DBMS정의
Database를 효율적으로 다루기 위한 소프트웨어로 데이터를 정의(Definition)하고 조작(Manipulation)하고 제어(Control)할 수 있는 다양한 기능을 제공한다.
즉, Database와 사용자의 중간관리 역할의 소프트웨어.
DBMS의 기능
데이터 정의(DDL)
데이터의 구조를 정의하는 기능
테이블, 인덱스, 뷰등을 생성(Create)/삭제/변경
데이터 조작
데이터베이스에 데이터를 삽입(Insert), 수정(Update), 삭제(Delete), 조회(Selet) 하는 기능
데이터 제어
사용자 권한 설정 및 접근 통제 기능(GRANT, REVOKE)
동시성 제어
여러 사용자가 동시에 데이터베이스에 접근해도 데이터의 일관성을 유지하는 기능
Lock매커니즘, 트랜잭션 관리 등을 통해 제어
백업 및 복구
시스템 장애에 대비해 백업을 하고, 복구하는 기능
무결성 제약
데이터의 정확성을 지키기 위해 설정하는 기능.
DDL문으로 테이블을 정의할 때 함께 설정한다.
데이터 저장 및 검색 최적화
Index, Partitioning등을 통해 고속검색을 지원.
index : 컬럼에 index를 부여하여 index기준으로 빠르게 테이블의 행데이터를 찾을 때 사용
partitioning : 하나의 서버 안에서 테이블의 데이터를 행/열단위로 나누어 분할 저장하는 방식으로 자주 사용되는 행과 열을 분리하여 관리하면 조회성능이 향상됨.
파티션단위 데이터 분할 코드 예시)
이후 사용자가 sales에서 sale_date기준으로 검색할 떄 해당 범위의 파티션만 스캔하여 검색하므로 속도가 향상됨.
파티셔닝은 값의 범위(RANGE), 명시된 값들(LIST), 해시함수(HASH), 범위와 다른조건을 합친 복합기준(COMPOSITE)도 존재함
파티셔닝은 오라클기준 유료버전에서만 사용가능하므로 수업때는 진행하지 않음.
DBMS의 종류
1. 파일시스템(File System)
파일형태로 데이터를 관리하는 방식
데이터 중복, 무결성 및 보안기능 부재, 다중사용자 기능 부재 등 문제점이 많았던 방식
엑셀파일이 대표적인 파일 시스템
2. 계층 데이터 모델(Hierarchical Model)
데이터를 트리형태의 상속 관계로 정의하여 관리하는 방법
유연성이 부족하며 관계를 표현하는데 한계가 있음.
쇼핑몰의 데이터를 관리한다면 다음과 같이 관리한다.
3. 네트워크 데이터 모델(Network Model)
데이터를 그래프 형태로 구성하여 관리하는 방법
하나의 자식 노드가 여러 부모를 가질 수 있음
계층형 모델보단 유연하지만, 복잡하며 설계난이도가 높음.
4. 관계 데이터 모델(Relational Model)
데이터를 테이블(표) 형태로 표현하여 관리하는 방법으로, 현재 가장 많이 사용되는 데이터 관리모델
Oracle, MySql, SqlLite, MsSQL등 다양한 DBMS가 관계 데이터 모델
SQL문법을 사용하는 DBMS이다.
5. 객체 데이터 모델(Object-Oriented Model)
객체지향개념을 반영한 모델. 객체단위(데이터+메서드)로 데이터를저장한다.
객체형태의 비정형 데이터를 관리할 수 있다는 장점이 존재.
성능이 좋지 않아 보편적으로 사용되는 모델은 아니다.
인덱스 생성 및 정렬이 힘드며, 객체안에 객체가 여러개 들어가는 중첩구조에서는 특히 성능이 나빠짐.(각 객체가 저장된 레코드가 다르므로)
6. 객체-관계 데이터 모델(Object-Relational Model)
관계형 모델에 객체지향 개념을 일부 도입한 모델
관계데이터모델과 호환되며 객체데이터모델의 장점을 일부 차용했다.
단, 설계의 복잡성이 크며 마찬가지로 성능 이슈로 인해 자주 사용되는 모델이 아님.
7. 클라우드 DB(Cloud-based Database)
기존 DBMS모델들은 직접 서버에 설치하고 유지보수하는 온프레미스 방식이었음
2000년대에서 부터는 로컬환경에 db서버를 직접 설치하는 방식보다는 클라우드환경에서 DB를 구매하여 사용하는 방식이 유행이 되었음.
자동화 백업, 고가용성, 확장성, 초기비용문제 등 다양한 이점이 존재
GoogleCloud, Amazon RDS, Oracle Cloud Database등 다양한 클라우드 db가 존재
8. NoSql(Not Only SQL)
관계형 모델은 테이블 형태의 정형화된 데이터를 저장하는데 적합하지만, 관계형 모델로 다루기 힘든 비정형 데이터(JSON, 그래프 형태 등 )를 관리하는 모델
관계형 모델의 단점인 구조의 변화에 대한 유연성부족과 수평확장(Horizontal Scaling)을 극복하기 위해 탄생한 모델
수평확장 : 서버의 개수를 늘려 시스템성능을 향샹시키는 방식.
오라클을 수평확장 한다는 것은 테이블을 여러개 쪼개어(Sharding) 저장한다는 의미로, 테이블간의 관계가 중요한 오라클에서는 적절하지 못한방식으로 오라클은 수직확장(Vertical Scaling)에 강하다
수직확장 : 서버의 성능을 향상시켜 시스템 성능을 향상시키는 방식
NoSql은 데이터를 정의하는 스키마가 없으며 자유롭게 대규모 데이터를 저장 및 관리할 수 있다.
NoSql 서버를 추가하면 즉각적으로 성능이 향상되며(수평확장) , JOIN 및 트랜잭션을 최소화 하기 때문에 빠른 성능을 가짐
저장하고자 하는 비정형 데이터의 종류에 따라 다양한 모델이 존재
JSON형태의 데이터 : MongoDB
Key-Value데이터 : Redis 등
그래프 형태 데이터 : Neo4j
단, NoSql은 SQL표준을 지원하지 않고, 일반적인 쿼리보다 복잡하며 트랜잭션 및 정합성 관리에 약하므로 정확한 데이터 관리가 필요한경우 RDBMS를, 속도와 성능이 중요한 경우 NoSql을 사용
2. Oracle
세계에서 가장 많이 사용되는 RDBMS(관계형데이터베이스 시스템). 안정성, 확장성, 보안성 면에서 업계 최고의 평가를 받으며, 금융권, 공공기관등 다양한 분야에서 널리 사용한다.(단, 비쌈)
Oracle의 특징
대용량 처리에 특화
테라바이트~페타바이트급 데이터도 안정적으로 처리 가능
강력한 보안기능
유저별 권한설정을 통해 보안설정 가능
트랜젝션 제어 성능 우수
트랜젝션 제어 문법을 통해 데이터 무결성 보장
다중 사용자 동시 처리 가능
고성능의 실시간 트랙젝션 관리를 통해 다중 사용자 환경에서 데이터 무결성보장
고가용성(High Availability)
서비스중 시스템 장애가 발생하더라도, 서비스가 중단되지 않고 계속 상태를 유지하는 능력
RAC(Real Application Cluster)등을 통해 하나의 서버에서 장애가 발생하더라도 다른 서버로 즉시 대체하는 방식으로 무중단 운영이 가능하도록 지원
PL/SQL
절차형 프로그래밍 지원
if,for문 등 제어문, 조건문을 사용할 수 있음.
Oracle 버전종류
Oracle DB Enterprise Edition
대기업용 오라클버전
오라클의 모든 기능이 포함된 모델로 매우 비싸다.
Oracle DB Standard Edition
주소기업용 오라클버전
EE에서 고성능 기능(고급보안기능, RAC 등)이 포함되지 않은 모델.
적당한 가성비를 가진다.
Oracle DB Express Edition(XE)
학습용 오라클 버전으로 무료버전이다.
고성능 기능이 포함되지 않았으며, 실제 서비스로는 사용이 불가능하다.
Oracle 다운로드 경로
오라클 21c_xe버전 다운로드 경로 https://www.oracle.com/database/technologies/xe-downloads.html
SQL-Developer 다운로드 경로 https://www.oracle.com/database/sqldeveloper/technologies/download/
Last updated