일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- 액티비티
- 해상도
- 알고리즘
- 콘텐츠 프로바이더
- 코틀린인액션
- 안드로이드
- 컴퓨터과학
- 백준11404번
- 패스트캠퍼스
- Kotlin-In-Action
- 생명주기
- 백준1753번
- 람다식 인라인
- 브로드캐스트 리시버
- lifecycle
- Drawable
- 인텐트
- 이것이코딩테스트다
- 데이터베이스
- 플로이드 워셜
- DP
- mipmap
- 매니페스트
- 코틀린
- 코틀린 코딩 컨벤션
- 다익스트라
- CustomView
- 최단경로
- 우테코 프리코스
- 커스텀뷰
- Today
- Total
생각정리
데이터베이스(1) 본문
데이터,정보,지식
데이터: 관찰의 결과로 나오는 정량적이거나 정성적인 실제 값을 의미한다. ex) 이 산의 높이는 8848m이다.
정보: 데이터에 의미를 부여한 것. ex) 에베르스트는 세계에서 가장 높은 산이다. => 가장 높다는 의미를 부여.
지식: 사물이나 현상에 대한 이해를 말함. ex) 에베레스트 산에 올라가는 가장 좋은 방법을 소개하는 보고서
=> 에베레스트라는 사물에 대한 이해를 토대로 만들어진 보고서임.
데이터베이스
데이터베이스란? 조직에 필요한 정보를 얻기 위해 논리적으로 연관된 데이터를 모아 구조적으로 통합해놓은 것.
ex) 학생 데이터를 모아놓은 학생데이터베이스, 신용카드 데이터는 은행 데이터베이스에 들어가게 됨.
즉, 데이터베이스는 모든 곳에서 생성된다고 봐도 무방함.
이렇게 데이터베이스에 통합 저장된 데이터들은 추후에 상품 개발을 위한 의사결정 데이터로 사용될 수 있다.
데이터베이스 시스템
데이터베이스 시스템은 데이터의 검색,변경(삽입,삭제,수정 등의 작업을 변경이라고 함) 작업을 주로 수행함.
이 데이터의 검색과 변경의 빈도에 따라 데이터베이스 시스템 구축의 난이도가 결정됨.
데이터 검색보다는 변경의 빈도가 구축 난이도에 더 영향을 많이 끼침.
유형1~유형4까지 기억해볼것.
유형1) 검색빈도: 적음, 변경빈도: 적음 => 원래 이런 데이터베이스 유형은 사실 데이터베이스를 구축할 필요도 없음.
그런데도 불구하고 구축했다는 것은 보존가치가 있기 때문에 데이터베이스를 구축한거임.
ex) 공룡 데이터베이스
유형2) 검색빈도: 많음, 변경빈도: 적음 => 사용자 수는 적당히 있지만, 주로 검색용도의 정보 제공 데이터베이스인 경우.
ex) 도서 데이터베이스
유형3) 검색빈도: 적음, 변경빈도: 많음 => 주로 데이터 변경이 많이 발생하는 경우임. 이 경우에는 검색은 변경을 위해 먼 저 시도되는 경우임.
ex) 예약 데이터베이스
유형4) 검색빈도: 많음, 변경빈도: 많음 => 사용자 수 많음. 검색도 많고 변경도 많음.
ex) 증권 데이터베이스
데이터베이스의 개념
통합된 데이터, 저장된 데이터, 운영 데이터, 공용데이터
=> 데이터베이스는 운영데이터를 통합해서 저장한 것이며, 공용으로 사용된다.
데이터베이스의 특징
실시간 접근성, 계속적인 변화, 동시 공유, 내용에 따른 참조
실시간 접근성이란? 사용자가 데이터를 요청하면 수초내에 결과를 서비스 해줘야 함.
동시 공유? 데이터베이스에 접근하는 프로그램이 한 두개가 아니라는 의미.
내용에 따른 참조? 데이터베이스에 저장된 데이터는 물리적인 위치의 인덱스가 아니라 데이터 값에 따라 참조된다.
데이터 베이스 시스템 = DBMS + 데이터베이스 + 데이터 모델
DBMS란? 데이터베이스관리시스템. 사용자 클라이언트와 데이터베이스를 연결시켜주는 SW임. 주기억장치에 상주
데이터베이스란? 데이터를 모아둔 토대를 의미함. 물리적으로 하드디스크에 저장되는걸 데이터베이스라고 함.
데이터 모델이란? 데이터가 저장되는 기법에 관한 내용임(비가시적이고 논리적임). 데이터가 저장되는 스타일.
서점의 시대별 발달과정을 예시로 데이터베이스 시스템의 등장배경
마당서점 | 컴퓨터없음, 사장님이 도서 이름, 위치 등 다 외움, 매출과 판매의 기록이 정확하지 않을 수 있음 |
초기전산화 | 컴퓨터 등장, 컴퓨터를 이용한 초기 응용 프로그램(파일시스템 사용)으로 업무 처리,한 대에서만 업무 처리가능 => 회계업무개선 |
데이터베이스 | 컴퓨터+원격통신(전용선 사용), 지점 간 클라이언트-서버 시스템 도입하여 업무 처리, DMBS도입됨. => 전용선으로 통신사에 돈을내며 지점들을 본점과 이어서 본점에 데이터베이스 시스템을 구축함. DBMS를 도입해서 서점 데이터베이스를 구축하고 응용프로그램(관리앱)을 연동함. |
홈페이지 구축 | 컴퓨터+인터넷, 도서 검색 및 주문 기능 제공, 웹DB 시스템으로 불특정 다수 고객 유치 => 전용선 말고 인터넷 사용 즉, 웹DB 시스템으로 바뀜. 덕분에 전용선이없는 외부에서도 사용가능해짐. |
인터넷 쇼핑몰로 확장 | 도서뿐만 아니라 음반, 티켓 등 인터넷 쇼핑몰로 확대, 오히려 도서보다 다른 곳에서의 수입이 더 커짐. => DB서버를 여러개 구축하기 시작 |
정보 시스템의 발전
파일 시스템 | 데이터를 파일 단위로 파일 서버(파일만 다루는 컴퓨터)에 저장, 각 컴퓨터를 LAN을 통해 파일 서버에 연결시킴. 각 컴퓨터의 응용 프로그램 쪽에서 파일 서버에 있는 파일들을 열기/닫기를 수행함. 회원이 이름을 바꿔서 회원정보 파일이 바뀌면=> 대여 목록 파일도 바꿔야 하는데 그런 것이 안될 수 있음. DBMS가 없어서 중복 저장의 문제 발생 가능. 각 파일서버에 연결된 컴퓨터들이 동시에 사로 다른 파일을 다루기 때문에 데이터의 일관성이 훼손될 수 있음. 또한, 한 단말기에서 파일을 오픈하면 다른 단말기에서는 해당 파일이 닫힐 때까지 사용못하는 문제 발생. |
데이터베이스 시스템 | DBMS를 도입해서 데이터를 통합 관리하는 시스템임. 단순히 데이터베이스 시스템이라고만 말하면, 이건 랜 범위를 의미함. DBMS가 설치되어 데이터를 가진 컴퓨터를 서버로 간주. =>즉, 질의와 응답이 수행 됨. DBMS가 설치된 서버 컴퓨터가 파일들을 다루며, 데이터의 일관성 유지와 복구, 동시 접근 제어 등의 기능을 수행 => 데이터의 중복 감소, 데이터의 표준화, 데이터의 무결성 |
웹 데이터베이스 시스템 | 데이터베이스를 웹 브라우저에서 인터넷으로 사용할 수 있도록 서비스하는 시스템. 이 경우는 기본적으로 DBMS가 설치된 서버가 한개임. => 랜으로도 연결 가능하고, 인터넷으로도 외부와 연결 가능함. => 온라인 상거래나 공공 민원 서비스 등에 사용. |
분산 데이터베이스 시스템 | DBMS가 설치된 서버를 여러 곳에 분산 배치시키고, 서버들을 연결해서 운영하는 시스템. => 대규모의 응용시스템에 사용함. |
컴퓨터에 데이터를 저장하는 방법들(데이터 정의와 데이터 저장에 초점을 맞춰서 봄)
1. 데이터를 프로그램 (코드)내부에 (변수로써) 저장하는 방법
=> 새로운 데이터가 생길 때마다 프로그램을 수정하고 다시 컴파일해야함.
=> 프로그램 내부에 데이터의 정의(타입 등)와 데이터 값이 모두 명시되어 있음.
2. 파일시스템을 사용하는 방법
=> 더이상 새로운 데이터 추가된다고 프로그램 수정하고 컴파일 할 필요없음. 그냥 데이터가 담긴 파일만 수정하면 됨.
=> 같은 파일을 서로 다른 프로그램이 공유하는 것(동시에 같은 파일 오픈하는 것)이 OS의 도움없이는 불가능함.
=> 프로그램 내부에 데이터 구조(C언어의 구조체로)가 정의되어 있음. 하지만 데이터 값들은 프로그램 내부의 별도 파일에 저장되어 있음. 즉, 타입(구조체 내부 구조)이 바뀌면 재컴파일 해야 함.
3. DBMS를 사용하는 방법
=> DBMS는 데이터 정의, 데이터 변경 등의 작업을 할 수 있는 별도 프로그램을 가짐. => 동시 접근 가능. DBMS가 중간에서 알아서 관리해줌.
=> 프로그램 내부에서는 데이터의 타입과 무관한 SQL문을 사용해서 데이터에 접근하므로, 데이터의 타입이나 정의가 바뀌더라도 속성명만 동일하다면 프로그램 코드를 수정할 필요 없음. (단, 이경우에도 프로그램이 직접 다루는 데이터 정의가 바뀌면 재컴파일 해야할수도 있음)
=> 데이터 정의는 DBMS에 되어 있고, 데이터의 저장은 데이터베이스에 함.
파일 시스템 vs DBMS 비교
1. 데이터 접근 방법의 측면
파일 시스템) 응용 프로그램이 파일에 직접 접근(OPEN 등 사용)함. 사용 언어는 프로그래밍 언어만.
DBMS) 응용 프로그램이 DBMS에 파일 접근을 요청. 사용 언어로 프로그래밍 언어 + SQL도 사용.
2. CPU/주기억장치 사용 정도
CPU/주기억장치 사용을 DBMS가 파일시스템보다 더 많이 함.
3. 데이터 정의 및 저장이 어디되어 있는지
파일시스템의 구매 응용 프로그램에는 구매데이터에 대한 파일이 정의 되어 있고, 관리하는 코드도 들어있음. 만약 파일이 바뀌거나 구매 데이터 중 어떤 데이터의 타입이 바뀐다면, 구매 응용 프로그램 자체를 다시 컴파일해서 재실행해야 함...
또한 구매 응용 프로그램과 판매 응용 프로그램이 각자 관리하는 파일이 달라서 (구매 내역 관리 파일, 판매 내역 관리 파일) 데이터의 일관성과 무결성이 떨어짐.
=> 즉, 파일 시스템은 응용 프로그램에 종속적이라고 할 수 있음. 파일이나 응용 프로그램 중 어떤 한개가 바뀌면, 다른 쪽에도 영향을 줘서 수정을 필요로 하게 만들 수 있음.
DBMS로 구축된 구매 응용 프로그램과 판매 관리 응용 프로그램은 둘 다 동일한 DBMS에 데이터 정의 및 변경을 요청하게 됨. 그러면 DBMS가 관리하는 여러 데이터베이스들(구매 데이터베이스, 판매 데이터베이스)에 접근해서 데이터의 일관성과 무결성을 유지시켜줌.
비교 총평
(파일시스템 대비)
DBMS의 장점 : 중복 최소화, 중복 제거로 인한 일관성 유지, 데이터 정의와 프로그램의 독립성 유지 가능,
관리 기능 제공(데이터 복구, 보안, 동시성 제어, 관리 기능 등),
개발 생산성 증가(짧은 시간안에 데이터 관리와 무관한 코드만 개발하면 됨 ),
데이터 무결성, 데이터 표준 준수 용이
단점: DBMS 설치 및 운용 비용 증가, CPU와 메모리 사용량 많음(큰 단점은 아님)
알고갈것: 데이터의 중복 저장이 발생하면 데이터의 일관성이 결여되는 거임. 파일시스템은 그래서 데이터 일관성이 낮음.
데이터베이스 시스템의 구성
데이터베이스 시스템 = DBMS + 데이터베이스 + 데이터 모델
주기억 장치에 저장된 DBMS의 구성:
오브젝트 코드) 컴파일된 일반 사용자의 프로그램에서 SQL문 사용해야 하는 부분의 바이트 코드를 만나면 질의 처리기에 요청함.
임베디드 DML 컴파일러) 응용 프로그램에 들어있는 SQL문을 번역하는 용도
SQL 번역기(DML/DDL 컴파일러) : SQL사용자나 DBA가 사용한 SQL문을 번역해서 질의처리기에 전달.
질의처리기) 번역된 SQL문을 처리하는 알고리즘
트랜잭션 관리자 + 파일 관리자 + 버퍼 관리자
하드디스크에 저장된 데이터베이스의 구성: 데이터 파일 + 인덱스(데이터에 빠른 접근을 제공하는) + 데이터 사전(데이터에 대한 정보를 지닌) + 데이터 통계
데이터 베이스 시스템은 데이터베이스 전용 언어인 SQL을 사용함.
SQL의 세가지 종류: 데이터 정의어 DDL, 데이터 조작어 DML, 데이터 제어어 DCL
데이터 정의어 DDL = CREATE, ALTER, DROP => 테이블 구조 정의 변경
데이터 조작어 DML = SELECT, INSERT, DELETE, UPDATE => 데이터 검색,삽입,삭제,수정
데이터 제어어 DCL = GRANT, REVOKE => 데이터의 사용 권한을 관리
데이터베이스 사용자 = 일반 사용자 / 응용 프로그래머 / SQL 사용자 / DBA
1. 일반 사용자: 기관의 민원 접수처 등에서 데이터를 다루는 업무를 하는 사람. 데이터베이스에 접근하는 일반인.
2. 응용 프로그래머: 일반 사용자가 사용할 수 있는 프로그램을 만드는 사람. 프로그래밍 언어와 SQL을 잘 사용해서 인터페이스와 데이터를 관리하는 응용 로직을 개발함.
3. SQL 사용자: 오직 SQL만 사용하는 담당자. 응용 프로그램에서 다루지 않는 업무를 SQL로 처리함.
주로, 데이터 구조 변경, 데이터 통계 처리, 데이터 검색과 모니터링 수행.
4. DBA : 데이터베이스 시스템을 총괄하는 사람. 데이터 설계, 구현, 유지보수 등 전 과정에 개입함. 그냥 모든 일에 다
관여 한다고 보면 됨. 사용자 통제, 보안, 성능 모니터링, 데이터 전체 관리, 데이터 이동 및 복사 등.
암기할 것: 일반 사용자는 일반인이므로 다 몰라도 됨.
응용 프로그래머는 SQL언어와 프로그래밍은 잘해야하며, DBMS 지식과 데이터 구성 능력은 알고만 있으면 됨.
SQL 사용자는 응용 프로그래머와 거의 다 똑같음. 프로그래밍 능력은 없어도 됨.
DBA는 프로그래밍 능력은 알고만 있으면 되고, 나머지는 다 잘해야 함.
DBMS의 기능: 데이터 정의(구조), 조작, 추출(검색), 제어(모니터링 및 데이터에 접근제어, 백업과 회복, 동시성 제어 등)
데이터 모델
데이터 모델을 구분하는 기준: (다른 테이블에 있는)데이터들 간에 관계를 어떻게 표현했는지
포인터 사용해서 표현) 데이터를 직접 찾아가므로 프로그램 속도 향상, 포인터 다뤄야하므로 개발속도 낮아짐.
=> 다른 테이블에서 관계를 맺는 레코드의 주소를 사용.
1. 계층 데이터 모델 : 트리 구조(= 비순환 그래프)
2. 네트워크 데이터 모델: 그래프 구조
객체 식별자 사용) 관계를 맺는 레코드의 객체 식별자 ID를 사용함. OOP의 상속, 캡슐화 개념을 도입시킴.
3. 객체 데이터 모델: 데이터 구성도에서 마치 그래프 처럼 이어진 걸로 보임.
속성 값 사용) 다른 테이블의 특정 레코드의 특정 속성값을 사용함.
=> 개발이 쉬워서 널리 쓰임. 단, 포인터보다 속도가 느림. 값을 기준으로 찾아가기 때문.
4. 관계 데이터 모델: 데이터 구성도에서 연결 선 없음. 값을 참조해서 찾으므로.
관계 데이터 모델의 개념을 기본 개념으로 하고, 객체 데이터 모델의 장점을 일부 수용한 것.
5. 객체-관계 데이터 모델
데이터베이스의 개념적 구조 (하나의 데이터베이스에 대한...)
ANSI에서 제안한 구조임. 데이터베이스를 개념적으로 이해하기 위해 데이터베이스를 보는 관점을 세 개의 단계로 분리함.
=> 3단계 데이터베이스 구조, 라고 부름.
3단계 데이터베이스 구조 = 외부 단계, 개념 단계, 내부 단계 => 외개내 라고 암기하자.
1. 외부 단계: 일반 사용자 혹은 응용 프로그래머가 접근하는 계층. 전체 데이터베이스 중 하나의 논리적인 부분으로써 뷰의 개념이라고도 볼 수 있음 => 각자 필요한 데이터가 다르므로 자신이 필요로 하는 데이터들을 모은 각각의 스키마가 바로 외부 스키마임. 서브 스키마라고도 불림. 개념 스키마 중 보고 싶은 것만 본 것이 외부스키마임.
ex) 대학 데이터베이스를 예로 들면, 학생 정보, 수강 정보 등은 전체 데이터베이스의 일부분으로 각 사용자들에게만 필요한 스키마라고 할 수 있음.
2. 개념 단계: 전체 데이터베이스의 정의를 의미. 통합 조직(=데이터베이스 한개)별로 하나만 존재하며 DBA가 개념 스키마를 관리함. 하나의 데이터베이스에는 하나의 개념 스키마가 존재. 개념 스키마에는 저장장치에 독립적으로 기술 됨.
데이터 간의 관계, 제약사항, 무결성에 대한 내용이 있음. 외부스키마들이 모두 모이면 개념스키마가 나옴.
외부 스키마가 통합된 범조직적 스키마를 개념 스키마(=논리적 스키마)라고 말함.
ex) 대학 데이터베이스를 예로 들면, 학생 정보, 수강 정보 등이 모두 모인 대학 전체 데이터베이스를 의미함.
3. 내부 단계: 물리적 저장장치에 데이터베이스가 실제로 저장되는 방법을 표현한 것. 내부 스키마에는 인덱스, 데이터 레코드의 배치 방법, 데이터 압축 등에 관한 사항이 포함됨. 예로 들면, 대학 데이터베이스에서 대학 전체 데이터베이스가 실제 하드디스크에 저장되는 물리적인 구조(데이터의 타입 혹은 저장방법과 같은 구체적 내용들)를 의미. 즉, 내부스키마도 개념스키마 처럼 하나의 데이터베이스 전체에서 오직 한개임. 물리적 스키마라고 부르기도 함.
매핑 개념
외부/개념 매핑(논리적 데이터 독립성): 사용자의 외부스키마와 개념 스키마 간의 매핑으로 외부 스키마의 데이터가 개념 스키마의 어느 부분에 해당되는 대응시키는 것. 서로 한쪽 스키마에서 변경이 발생해도 다른 쪽에 영향을 주지 않도록 매핑 시켜주는 개념임. 그래서 논리적 독립성이 생기는 거임.
개념/내부 매핑(물리적 데이터 독립성): 개념 스키마의 데이터가 내부 스키마의 물리적 장치 어디에 어떤 방법으로 저장되는지 대응시킴. => 실제로 어떻게 디스크에 저장되는지는 개념 스키마 단계에서는 몰라도 되고 영향을 받지도 않는다.
스키마란?
스키마는 데이터의 구조와 제약조건에 관한 전반적인 명세를 기술한 메타데이터의 집합임. 데이터를 위한 데이터임.
예를 들어, 각 필드들의 정의(설명같은)가 포함 됨.
데이터 독립성 ==> 3단계 데이터베이스 구조의 특징
데이터 독립성이란? 하위 단계의 내용을 추상화하여 상위 단계에서 하위 단계의 세부사항을 못보게 숨기는 것.
즉, 한 단계의 변경이 상위 단계에 영향을 주지 않도록 하는 것임.
일반 사용자는 사용자별로 외부 스키마가 있고, DBA는 일반 사용자의 외부스키마에 영향을 주지 않고 개념 스키마나 내부 스키마의 물리적인 저장방법 등을 변경할 수 있음.
논리적 데이터 독립성, 물리적 데이터 독립성
논리적 데이터 독립성: 외부 단계와 개념 단계 사이의 독립성, 개념 스키마가 변경되어도 외부스키마에는 영향이 없도록 즉, 논리적 구조가 변경되어도 응용 프로그램에는 영향이 없도록하는 것. 즉, 테이블을 추가하거나 변경해도 외부 스키마가 다루는 테이블이 아니면 외부스키마는 영향을 받지 않는다.
물리적 데이터 독립성: 개념 단계와 내부 단계 사이의 독립성, 내부 스키마가 변경되어도(=타입의 크기가 바꿔도) 개념스키마에는 영향이 가지 않도록. 즉, 성능 개선을 위해 디스크 정렬을 해서 저장장치 구조 변경이 발생해도 개념 스키마에 영향을 주지 않음.
물리적 독립성이 논리적 독립성보다 구현하기 쉬움
참고 도서: MySQL로 배우는 데이터베이스 개론과 실습
'데이터베이스' 카테고리의 다른 글
데이터베이스(2) - 관계 데이터 모델 (1) | 2022.10.10 |
---|