Database & DB Server
description
Transcript of Database & DB Server
Database & DB Server2014 바 - 퀴 Seminar
I’m EGG
이 세미나에서는 무엇을 다루나요 ?
이 세미나에서는 무엇을 다루나요 ?
Database 가 뭐죠
Database Management System 이 뭐죠
Example : MySQL
Special Thanks to Argon, Yasik, Grandmarnier, reno
WikipediaGod Google
센 - 빠이 !
Database 가 뭐임 ?
Database:Organized Collection of Data
Database:Organized Collection of Data
정보 , 자료
Database:Organized Collection of Data
Outside Example of DB
Concept of Database:구조화
Concept of Database:구조화 -> 검색과 갱신 효율 증가
Concept of Database:구조화 -> 자료 항목 중복 제거
Database의 특징 :
실시간 접근성지속적인 변화
동시 공유
Database의 장점 :
중복 최소화 -> 공간절약일관성 -> 표준화 가능
데이터 접근 쉬움 -> 관리가 용이논리적, 물리적 독립
Database Model
Database Model determine Logical StructureManner(Store, Organize, Manipulate)
Database Model
Relational Model
Relational Model:Tuples, grouped into Relations
학번 이름 Id 비밀번호 특징
2008 박준동 an-dromeda
* 산디과 ㄷㄷ
2013 이동수 egg * ?????
2013 이현섭 protos * 현섭갓
2013 조현성 chocho * 초초 !
2014 이언희 onion * 14 학번 !
EmpNo Designation ReportsTo10 Director20 Senior Manager 1030 Typist 2040 Programmer 20
Database
Database<- ->User
Database<- ->User DBMS
Database Management System
Database Management System
Database 를 생성 , 유지 , 관리해주는 프로그램
Database Management System
General Purpose -> 가능한 많은 기능을 수행
-> but, Complexity 상승 -> 목적에 맞는 DBMS 생김Ex) E-mail Service
Transaction
Database 처리에 필요한 작업들에 대한 연속처리단위
Ex) 데이터 검색 , 추가 , 삭제
Atomicity( 원자성 ) Consistency( 일관성 )
Isolation( 독립성 )Durability( 지속성 )
History of DBMS
Navigational eraSQL/relational eraPost-relational era
History of DBMS : Navigational era
1960 중반 , Direct-access storage 개발
-> Database 용어가 생김General-Purpose Database 개발 UP!
CODASYL(Nework Model)IBM 이 만든 IMS(Hierarchical Model)
History of DBMS : SQL/relational era
1970s, Relational model 등장 (Edgar Codd)
-> Hierarchical, Navigationla 포괄 가능PRTV, Business System 12(IBM)
History of DBMS : SQL/relational era
Hardware 와 Software 의 IntegrationSQL 의 등장 , SQL/DS, DB2(IBM)
Entity-relationship Model 출현 (1976)1980s, Object-oriented 개념 도입
History of DBMS : Post-relational era
2000s, NoSQL(Not only SQL) 등장-> 디자인의 간소화 , Horizontal Scaling,
유용성Key-value, Graph, Document 등의 DS 사용Big Data, Real-time Web 등에 쓰임
ACID 필수요소 X
Data Model Performance Scalability Flexibility Complexity Functionality
Key–Value Store high high high nonevariable (none)
Column-Oriented Store high high moderate low minimal
Document-Oriented Store high
Variable (high) high low variable (low)
Graph Database variable variable high high graph theory
Relational Database variable variable low moderaterelational
algebra
MySQL
Relational Dabase 기반 DBMSPaid editon 있으나 일단 공짜
Market Share 2 위 (1 위는 Oracle)
MySQL TableISAM
MYSQL 3.x 버전까지의 테이블
테이블 최대용량은 4GB
5.0 버전부터 사라짐
MyISAM
MYSQL 4.x 버전의 기본 테이블 타입
ISAM 의 확장
용량은 OS 에 달림
작은 규모의 DB 에 적합
MERGE
여러 개의 MyISAM 테이블을 하나로 취급하여 MyISAM 의 용량 제한을 극복한 타입
InnoDB ( ara 에서 사용 )
트랜잭션 , Foreign key, row-level lock-ing 지원용량 제한이 거의 없음
MyISAM 에 비해 용량을 많이 사용함
대규모의 DB 에 적합
BDB
트랜잭션 , page-level locking 지원
데이터는 옮길 수 없음
HEAP
메모리를 저장공간으로 사용
엑세스 타임이 빨라 임시 테이블이나 검색결과 테이블 등으로 활용
MySQL 설치
설치 : sudo apt-get install mysql-serverClient 및 기타 필요한 것 함께 깔림
http://dev.mysql.com/doc/에서각 OS 에 맞는 다양한 설치법 제공
MySQL 설치
설치 : 설치 도중에 root 비밀번호 설정한다 .
MySQL 실행 / 종료
설치가 종료되면 mysql-server 데몬 자동 실행
실행법 : sudo service mysql start종료법 : sudo service mysql stop실행 스크립트는 /etc/init.d/ 에 위치
/etc/init.d/mysql start or stop 이외에도 status, restart, reload 사용 가능
MySQL 설정
설정 파일 : /etc/mysql/my.cnf 에 위치개인별 설정 파일 : ~/.my.cnf 에 위치
서버 관련 옵션은 my.cnf 내에 [mysqld] 에 위치
MySQL 로 서버에 접속하기
$mysql-u [username] : 아이디를 적습니다-p(password) : 암호 입력 여부 체크 ! -h [host address] : 말 그래로 host를 적습니다-P [port] : 포트를 적습니다-S [socket address] : 소켓 주소를 적습니다
MySQL 사용자 추가
use mysql; 로 mysql DB 로 들어가고 grant all privileges on *.*
to‘[name]’@'[host]’ identified by ‘[password]’ with grant option;
MySQL 사용자 추가
예시 :grant all privileges on eggdb.* to egg@localhost identified by ‘nin-
gen’with grant option;
MySQL 사용자 추가
예시 :grant select, update, insert on
eggdb.* to egg@localhost identified by ‘ningen’with grant option;
MySQL 사용자 추가
insert INTO user VALUES(‘[host]’, ‘[name]’, PASSWORD(‘[password]’),
‘Y’, …);flush privileges;
MySQL 사용자 삭제
DELETE FROM user WHERE user=‘username’flush privileges;
MySQL 사용자 접속 관리
외부 호스트에서 접속을 허용하고 싶다면/etc/mysql/my.cnf 에서
bind-address = 127.0.0.1 에서 ctrl-A하고 # 을 넣어주세요
MySQL 사용자 접속 관리
use mysql; 하시고update user set host=‘%’
where user=‘[username]’ and host=‘[old host]’;
mysqladmin
$mysqladmin –u root –p (command)하는 식으로 이용합니다 .
관리자권한으로 하는 거죠 !
mysqldump전체 데이터베이스 백업
$mysqldump [login] -A --add-drop-table > [bak]
선택한 데이터베이스 백업$mysqldump [login] -B [options] [db1] [db2] … >
[bak]
선택한 DB 의 테이블 을 선택하여 백업$mysqldump [login] [db name] [tb1] [tb2] … > [bak]
mysqldump복구할 때는 !
$mysql [login] < [bak]$mysql [login][DB 이름 ] <
[bak]
추가 세미나
•파일구조•인덱스
파일 구조
인덱스
B-tree
mysql> create table index1( -> code int not null auto_increment primary key, -> id int not null, -> name char(30) not null, -> index idx1(id) -> );
mysql> ALTER TABLE index1 ADD INDEX(id(20));