데이터 & 데이터베이스
데이터
- 개체, 사건, 현상 또는 아이디어의 형식적인 설명
기록할만한 가치
가 있는 것
- 정형화되고 기록할만한 가치가 있다고 판단되는 어떤 현상이나 사건, 아이디어에 대한 묘사
데이터베이스
영속적인 데이터
의 통합된 컬렉션, 모음, 집합 (영속적: 영원히 계속되는, 또는 그런 것)
- 관심있는 정보를 대표
- 조직의 계산된 정보 시스템을 구성하는 다양한 프로그램들
- 데이터들은 그들을 활용하는 프로그램들과 분리되어 있다
- 조직이나 개인이 사용하는 조작 가능한, 저장된
데이터의 모임
데이터베이스 관리 시스템 (DBMS)
- DBMS는
소프트웨어
- 특정 기업에 대한 정보를 포함
서로 연관된 데이터
들의 집합
- 데이터에 접근하는 프로그램들의 집합
- 데이터를 편리하고 효율적으로 사용할 수 있도록 하는 환경
- 예시: 은행 계좌, 항공권 예약, 대학 성적, 결제 시스템
DBMS는 매우 가치있고, 상대적으로 큰 데이터들을 관리하는 데 사용된다. 종종 동시에 여러 사용자와 애플리케이션에서 접근한다.
현대의 데이터베이스 시스템은 매우 복잡한 소프트웨어 시스템으로써, 대규모며 복잡한 데이터 집합을 관리하는 것이 그 역할이다.
데이터베이스는 우리 삶의 모든 측면에 영향을 미친다!
데이터베이스 기반 시스템
- 데이터베이스: 연관된 데이터들이 저장되어 있는 곳
DBMS
: 데이터베이스를 다루는 시스템
SQL
: 데이터베이스가 유일하게 이해할 수 있는 언어
- DBA (Database Administrator): 데이터베이스를 다루는 관리자. SQL을 통해 관리
ODBC/JDBC
: 애플리케이션 개발자가 데이터베이스에 접근할 때 사용하는 언어. ODBC는 C/C++, JDBC는 Java)
- Web Server: 정적 페이지 제공용
- Middleware: 웹 브라우저에서 데이터베이스로부터 데이터를 저장하거나 읽어올 수 있도록 중간에 위치한 프로그램
- Application User: 애플리케이션을 사용하는 사용자들
- Application Developer: 애플리케이션을 개발하는 개발자. ODBC/JDBC를 통해 데이터베이스에 접근
파일 시스템
- 데이터베이스 기반 시스템 이전까지 쓰이던 데이터 관리 방법
- OS의 일부
- 디스크 안에 프로그램, 데이터, 문서 등을 저장
- 초기에는 데이터베이스 애플리케이션이 직접 파일 시스템 위에 있었다.
문제점
- 데이터의
중복성
과 비일관성
초래 가능: 각 애플리케이션에 따라 파일들이 다르게 되다보니, 같은 값을 가진 파일들이 중복해서 생성될 수도 있는 결과가 초래됨. 또, 이 과정에서 잘못된 값을 기입하면 일관적이지 않은 데이터로 전락됨
- 데이터 접근의 어려움: 새로운 일을 할 때마다 새로운 프로그램을 짜야 한다
- 데이터의
종속성
: 해당 데이터를 쓰고 싶으면 특정 언어로만 사용해야 하는 등의 문제가 발생 가능
- 데이터
격리성
관리: 만약 여러 프로그램들이 같은 시점에 업데이트 한다면?
무결성
관련 문제: 무결성 관련 조건 (ex: 금액은 0보다 커야 한다)은 코드에 묻히게 된다. 명시적으로 선언하는 것이 더 효율적이다. 이는 새로운 코드를 붙일 때 마다 번거로운 작업으로 된다.
원자성
(더 이상 쪼갤 수 없는 = 하나의 작업) 관리 취약: 데이터베이스에 장애가 발생하면 비일관적인 상태가 될 수 있다.
- A가 B에게 돈을 송금하는 과정에서 장애가 발생해 A의 돈은 빠져나갔고 B는 돈을 받지 않는 상태가 된다면?
- 많은 사람들이 동시에 접근:
동시성
접근을 제대로 다루지 않는다면 비일관적인 상황 초래
- 보안 문제: 다양한 파일, 접근경로, 프로그램의 이용 등으로 보안에 약하다.
DBMS의 특징

장점
- 데이터 중복 최소화
- 데이터 공유
- 일관성 유지
- 무결성 유지
- 보안 보장
- 표준화 용이
- 전체 데이터 요구의 조정
단점
- 비용 발생: 하드웨어, DBMS, 운영비, 교육비, 개발비
- 프로그램의 복잡화: SQL 및 컴퓨터 프로그래밍 언어 활용
- 성능상의 오버헤드
DBMS는 장점이 단점을 충분히 상회하기에, DBMS를 사용하는 것이 더 효율적이다.
DBMS의 구조

View level
- 프로그램의 데이터 구조를 담당
- 표현할 때도 있고, 그렇지 않을 때도 있다.
- 예시: 연봉을 보여줄지, 보여주지 않을 지 결정
Logical level
- 데이터베이스의 논리적 구조를 담당
- 데이터베이스를 설계한다고 할 때, 해당 영역을 관리 (즉, 중요한 부분)
- 저장된 데이터를 묘사하며,
데이터 간 관계를 설계
Physical level
- 데이터베이스의 물리적 구조를 담당
- 일반적으로 DBMS가 관리
데이터 독립성
- 각 레벨 간의 데이터가 서로 영향을 끼치지 않도록 함
- 물리적 데이터 독립성: physical level - logical level
- 논리적 데이터 독립성: logical level - view level
- 애플리케이션은 논리적 스키마에 의존한다.
- 일반적으로 각 레벨에 있는 인터페이스와 구성 요소들은 그 영역에서 변경되더라도 다른 곳에 심각한 오류를 발생시키지 않도록 정립되어야 한다.
- 심하게 변경하면 영향을 받을 가능성이 있다.