우주코딩
어플리케이션 아키텍쳐의 변환과 DBMS, SQL 본문
애플리케이션 아키텍쳐의 변경 내역
App - 배열(데이터저장)
App - Collection(데이터저장)
App - Collection(데이터저장) - File(보관/로딩)
ClientApp < - > ServerApp - Collection(데이터저장) - File(보관/로딩)
데이터 처리 요청
처리 결과 응답
ServerApp - Collection - File 과정을 DBMS로 대체하기
클라이언트 앱이 데이터 처리 요청을 DBMS에 요청하면 DBMS는 처리 결과를 응답한다.
개발자도 데이터 보관과 조회에 신경 쓸 필요가 없다.
DBMS
Database Management System
데이터 보관과 조회를 서비스하는 프로그램
Database
- 실시간 접근 가능 : 데이터 처리 요청에 즉시 응답
- 동시 공유 : 여러 사용자가 공유
- 데이터의 독립성 : 애플리케이션에 비종속
- 일관성 : 데이터 처리 작업이 끝난 후 데이터 값은 유효한 상태를 유지해야 한다.
ex) 특정 회원 데이터 삭제 -> 삭제한 회원의 글도 삭제 - 무결성 : 유효하지 않은 데이터의 등록과 변경, 삭제를 제한 (게시글 작성자를 삭제할 수 없다.)
- 보안성 : 사용자 인증과 권한 검사 (authentication / authorization, ID/PW 일치 -> 유효한 사용자 / 기능의 이용 권한 검사 -> 등록 허용? 변경 허용?)
DBMS
- 데이터베이스를 조작하는 S/W
- Oracle, MySQL, DB2, MS-SQL, Altibase, Tibero 등
SQL
애플리케이션에서 사용하는 SQL은 DBMS마다 약간씩 다르다. 그래서 실무에서는 DBMS에 따라 코드를 변경해야한다.
App이 DBMS 에 데이터 처리 요청을 보낼 때 DBMS에 상관없이 요청 명령을 작성하는 문법이 SQL이다.
Structured Query Language
SQL - DDL(Data Definition Language) 데이터 구조 정의 문법
- DQL(Data Query Language) 데이터 조회 요청 문법
- DML(Data Manipulation Language) 데이터 등록/변경/삭제 문법
App -> DBMS 표준 SQL문법(DBMS에 공통으로 사용할 수 있는 문법) + 오라클 전용 문법 / MySQL 전용 문법/ MS-SQL 전용 문법
Oracle, MySQL, MS-SQL
DBMS 제품마다 강점/약점이 있다. DBMS를 제대로 활용하려면 DBMS 전용 SQL 문법을 사용할 수 밖에 없다.
전용 문법 = 특정 DBMS에서만 사용할 수 있는 문법
DBMS와 SQL
web server(HTTP Server) web browser(HTTP Client)
클라이언트가 요청하고 서버가 응답한다.
PMS Server(ServerApp)
PMS Client(ClientApp)
MariaDB 의 프로토콜로 요청하고 마리아db는 응답을 하는데, 그 대상인 MariaDB Client가 있어야 한다.
mysql.exe 프로그램 (클라이언트)
mysqld.exe 프로그램(데이터베이스)
사용자가 SQL을 입력하면 데이터베이스에 요청하고 요청처리 후 응답하여 결과를 출력한다.
SQL 테스트 준비
- 사용자 추가 create user 'study'@'localhost' identified by '1111'; ㄴ사용자id ㄴDBMS서버 주소 ㄴ 사용자 암호
localhost에서 study 아이디로 접속하는 경우에 허락하겠다는 의미
create user 'study'@'%' identified by '1111';
아이디는 같지만 원격에서만 접속할 수 있는 사용자
- 데이터를 저장할 데이터베이스 생성
create database studydb character set utf8 collate utf8_general_ci;
ㄴ데이터베이스 이름 ㄴ 문자표
- 데이터베이스를 사용할 사용자의 권한을 지정
grant all on studydb.* to 'study'@'localhost';
ㄴ권한범위,데이터베이스,db항목,사용자아이디,DBMS서버주소
DDL (Data Definition Language)
DB 객체(테이블, 뷰, 함수, 트리거 등)를 생성, 변경, 삭제하는 SQL 명령이다.
- 데이터베이스(database) = 스키마(schema)
- 테이블(table)
- 뷰(view)
- 트리거(trigger)
- 특정 조건에서 자동으로 호출되는 함수
- 특정 조건? SQL 실행 전/후 등
- OOP 디자인 패턴에서 옵저버에 해당한다.
- 함수(function)
- 프로시저(procedure)
- 인덱스(index)
테이블 만들기
create table 테이블명 (
컬럼명 타입 NULL여부 옵션,
컬럼명 타입 NULL여부 옵션,
...
컬럼명 타입 NULL여부 옵션
);
테이블과 row, column
column/열 = attribute /field
row/행 = record/tuple
'Project' 카테고리의 다른 글
SQL - Select , like, and , or, Foreign Key (0) | 2021.10.11 |
---|---|
SQL 사용법 (0) | 2021.10.11 |
Observer 옵저버 패턴 적용하기 (0) | 2021.09.23 |
File 입출력 사용하기 (0) | 2021.09.09 |
제네릭 적용 (0) | 2021.08.22 |