2. Database System
Database
• 현실의 관점으로 모델링한 상호 연관된 데이터의 집합
• 애플리케이션 구성의 핵심적인 부분 중 하나
Database Management System (DBMS)
• DB 정보를 저장하고 가공 및 분석을 가능하게 하는 SW
• 일반적으로 상용 DBMS 는 정의, 생성, 탐색, 수정, DB 관리
• Purpose of DBMSs
• DB를 사용하는 앱은 유지보수가 어려움
• 논리적계층과 물리적 계층간 긴밀한 결합이 필요함
• DB 배포전 앱이 어떤 쿼리를 실행하는지 이해가 필요
• Data Model
• DB상에서 데이터를 기술하기 위한 컨셉의 집합
• Schema
• 각각의 데이터 집합에 대한 기술, Data Model 을 활용
File Processing System
• Comma-Separated Value (CSV) 파일 기반
• 각 개체(Entity) 당 파일을 분리시킴
• 프로그램은 각각의 레코드를 읽을 때마다 파싱
문제점
• 데이터 무결성(Data Integrity)
• 같은 이름을 가진 Artist 가 있다면 어떻게 구별하는가?
• 각 앨범마다 존재하는 Artist 가 같다고 확신할 수 있는가?
• 누군가 Invalid 한 값을 삽입하면?
• 구현(Implementation)
• 어떻게 각각의 레코드를 찾아야 하는가?
• 같은 데이터베이스를 사용하는 새로운 앱을 만들려면?
• 두 쓰레드가 동시에 같은 레코드에 Write 를 시도하면?
• 지속성(Durability)
• 만약 프로그램이 레코드를 쓰는 도중 기계가 고장나면?
• 고가용성을 위해 여러 장치에 DB를 복제하려면?
3. Relational Model
다음과 같은 요소들을 추구하는 데이터베이스 추상화 개념
• 간단한 데이터 구조의 데이터베이스를 저장
• 고급 언어들을 통한 일관된 데이터베이스 접근
• 물리적 저장공간으로부터 논리적 계층이 관여하지 않음
Relational Model 의 특성
• Structure: 각각의 내용들에 대한 관계가 정의됨
• Integrity: DB의 내용이 제약(constraints)을 충족시킴을 확신
• Manipulation: 각각의 내용들에 대한 Relation 에 따라 DB의 Tuple 접근 및 수정 가능
필요 개념
• Relation
• Entities 를 표현하는 속성의 연관성을 포함하는 순서 없는 집합
• Tuple
• Relation 이 가지는 속성값들의 집합
• Primary Key
• Relation 에서 PK 는 단일 Tuple 을 고유하게 식별
• Foreign Key
• 한 Relation 의 속성값으로 다른 Relation 의 Tuple 을 Mapping
4. Relational Algebra
Relation 에서 Tuple 을 탐색하고 조작하기 위한 기본적인 Operation
관계 대수학(Set Algebra) 에 기초함
각각의 Operator 는 하나 이상의 Relation 을 받아 새로운 Relation 을 내보냄
더욱 복잡한 Operation 을 만들기 위해 Operator 들을 체이닝