[데이터베이스 & SQL 첫걸음] 5주차 공부

김서영·2021년 10월 10일
0

데이터베이스와 아키텍처 구성

아키텍처

시스템을 만들기 위한 물리 레벨의 조합.
'어떤 기능을 가진 서버를 준비하고 어떠한 저장소나 네트워크 기기와 조합해서 시스템 전체를 만들 것인가'
즉 하드웨어와 미들웨어의 구성.

  • Stand-alone (1980년대)
  • 클라이언트/서버 (1990년대-2000년)
  • Web 3계층 (2000년-현재)

Stand-alone

데이터베이스의 미들웨어(DBMS)와 애플리케이션의 소프트웨어는 같은 DB 서버에서 동작.

단점

  1. 물리적으로로 떨어진 장소에서 접근할 수 X
  2. 복수 사용자가 동시 작업 불가
  3. 가용성 낮음
  4. 확장성 부족

장점

  1. 소규모작업/테스트를 빨리 할 수 있음
  2. 보안이 매우 높음

클라이언트/서버

데이터베이스 서버 1대에 복수 사용자의 단말이 접속하는 구성.
DB 서버에서는 DBMS가 동작하고 클라이언트에서는 업무 애플리케이션이 동작하는 분업체제.

단점

  1. 인터넷에서 직접 데이터베이스에 접속하는 것에 대한 보안 위험
  2. 불특정 다수의 사용자가 사용하는 클라이언트에서의 애플리케이션 관리 비용 증가

장점

  1. 물리적으로 멀리 떨어져도 이용 가능.

Web 3계층

클라이언트/서버 구성에서 클라이언트와 데이터베이스 계층 사이에 '웹 서버 계층'과 '애플리케이션 계층'의 추가.

웹 서버는 클라이언트로부터 접속 요청을 직접 받아 그 처리를 뒷단의 애플리케이션 계층에 넘기고 그 결과를 클라이언트에 반환.
웹 서버로는 아파치나 IIS가 유명.

애플리케이션 계층은 비즈니스 로직을 구현한 애플리케이션이 동작하는 층. 웹 서버로부터 연계된 요청 처리 및 필요하면 데이터베이스 계층(DB 서버)에 접속해서 데이터를 추출하고 이를 가공한 결과를 웹 서버로 반환함. 톰캣, 웹로직, 웹스피어 등이 유명.

장점

  1. 애플리케이션 계층과 데이터베이스 계층의 보안을 높임
  2. 애플리케이션 계층에 비즈니스 로직을 집중해 애플리케이션 관리 비용을 낮추는 구성이 됨.

가용성을 높이는 2가지 전략

  • 심장전략(고품질-소수전략)
    시스템을 구성하는 각 컴포넌트의 신뢰성을 높여 장애 발생률을 낮게 억제해서 가용성을 높임. (소수정예 노선)
  • 신장전략(저품질-다수전략)
    시스템을 구성하는 각 컴포넌트의 신뢰성을 계속해서 높이기보다는 '사물은 언젠가 망가진다'란 체념을 전제로 여분을 준비.(물량 작전)

클러스터

사물이나 사람의 집함. 시스템 체계에서 동일한 기능의 컴포넌트를 복수 개 준비해 한 개의 기능을 실현한다는 의미.
신장전략처럼 동일한 기능의 컴포넌트를 병렬화하는 것을 클러스터링이라고 함.

단일 장애점

다중화되어 있지 않아 시스템 전체 서비스의 계속성에 영향을 주는 컴포넌트.
서버나 네트워크 기기 등 시스템을 구성하는 컴포넌트가 증가하면 당연히 돈이 듦. 단일 장애점을 없애기 위해 대부분 이중화는 해두지만, 그 이상 어느 정도 돈을 들여서 다중화할지는 예산 제약과 바라는 신뢰성 수준의 저울질에 달려 있음.

신뢰성과 가용성

신뢰성은 하드웨어나 소프트웨어가 고장 나는 빈도(고장률)나 고장 기간.
가용성은 사용자 입장에서 볼 때 시스템을 어느 정도 사용할 수 있는지.

정렬과 연산

ORDER BY

검색 결과의 행 순서 변경. 검색 조건이 필요없는 경우에는 WHERE 구 생략. 행 순서를 바꾸어 결과를 반환하는 것일 뿐, 저장 장치에 저장된 데이터의 행 순서를 변경하는 것은 아님.
SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명

내림차순 정렬

SELECT 열명 FROM 테이블명 ORDER BY 열명 DESC

오름차순 정렬

SELECT 열명 FROM 테이블명 ORDER BY 열명 ASC

대소 관계

수치형이나 날짜형 데이터의 대소관계는 기존에 알고 있던 것과 동일.
문자열형 데이터의 경우, 알파벳 - 한글 순이며, 한글은 자음 - 모음 순.
사전식 순서.

복수의 열을 지정해 정렬하기

SELECT 열명 FROM 테이블명 WHERE 조건식 ORDER BY 열명1[ASC|DESC], 열명2[ASC|DESC]...

NULL 값의 정렬순서

NULL값을 가지는 행은 가장 먼저 표시되거나 가장 나중에 표시.
MySQL의 경우 NULL값을 가장 작은 값으로 취급해 ASC(오른차순)에서는 가장 먼저, DESC(내림차순)에서는 가장 나중에 표시.

profile
하지만 저는 이겨냅니다. 김서영이죠?

0개의 댓글