[프로그래밍] DataBase

[DataBase] DataBase?

JHVan 2024. 5. 8. 23:53

database

데이터베이스는 database management system (DBMS) 을 이용하여 데이터를 전자적으로 접근하고 저장하는데 사용되는 조직화된 데이터의 집합이고, 특히 동적 데이터를 효율적으로 관리하는데 효과적이다.

 

동적 데이터와 정적 데이터

동적 데이터와 정적 데이터는 데이터의 변경 가능성과 관련하여 구분한다.

 

정적 데이터

  • 정적 데이터는 변경되지 않거나 드물게 변경되는 정보
  • 웹사이트의 로고나 회사 소개 페이지의 텍스트
  • 일단 설정되면 변경되지 않는 것으로 간주되며, 업데이트가 필요한 경우 수동으로 수정해야 함.

동적 데이터

  • 사용자 상호작용이나 외부 소스에 기반하여 실시간으로 변경될 수 있는 데이터
  • 소셜 미디어 피드, 실시간 주식 시세, 사용자 입력 정보 등
  • 사용자 요청이나 외부 데이터 소스의 변경에 따라 자동으로 업데이트 됨

 

정적 데이터는 웹사이트 로딩 속도를 개선하고 서버 부하를 줄이기 위해 파일 서버나 CDN을 통해 제공되는 반면,

동적 데이터는 데이터베이스나 API 호출을 통해 실시간으로 처리되어 웹 애플리케이션에 상호작용성과 개인화를 제공한다.

API는 Application Programming Interface의 약자로
서로 다른 소프트웨어 간에 정보를 교환하고 상호작용할 수 있게 해주는 도구나 프로토콜을 말한다.
간단히 말해서, API는 소프트웨어 프로그램이나 시스템이 다른 프로그램이나 시스템과 
데이터로 상호작용 할 수 있게 해주는 매개체 역할을 한다.

예로 웹사이트에서 날씨 정보를 보여주고 싶을 때 날씨 정보 API를 사용한다.
이 API는 날씨 정보를 제공하는 서버와 웹사이트 간의 정보 교환을 가능하게 해준다.
이를 통해 웹사이트는 사용자에게 최신 날씨 정보를 실시간으로 보여줄 수 있다.

API는 개발자들이 기능을 처음부터 새로 만들 필요 없이
이미 존재하는 기능을 활용할 수 있게 해주므로
소프트웨어 개발의 효율성을 높여준다.

API를 통해 외부 서비스와의 연동이 용이해지므로
다양한 서비스를 통합하고 확장하는 것이 가능해진다.

 

데이터베이스를 사용하는 이유

데이터베이스는 프로그래밍과 같은 컴퓨터 언어(SQL)로 세밀히 제어가 가능하고, 정규화를 이용하여 데이터들끼리 중복된 정보가 있을 경우 이를 통합하여 구조적이며 효율적으로 데이터를 저장한다.

데이터베이스는 SQL 언어로 제어가 가능하고, 앱이나 웹 백엔드 서버를 통한 요청(request)에 적절한 응담(response)을 보내줄 수 있다.

 

DB가 다루는 데이터의 특징

 

통합된 데이터 (Integrated Data)

  • 여러 출처에서 온 데이터를 하나의 데이터베이스나 저장소에 모으는 것
  • 중복 정보를 그대로 저장하면 저장 공간 낭비와 같은 비효율이 발생
  • 중복된 정보를 최소화하기 위해 데이터를 통합하고, 중복을 제거하여 데이터의 모임을 구성.
  • 이를 통해 데이터 관리의 효율성을 높이고, 저장 공간을 절약

구조화된 데이터(Structured Data)

  • 정보를 표, 열, 행 등의 구조화된 형태로 저장
  • 이 구조화는 데이터를 쉽게 조회, 수정, 분석할 수 있게 해줌

지속적인 변화 데이터(Continuous Evolution Data)

  • 동적 데이터들의 변화를 반영하기 위해 새로운 데이터의 삽입(Insert)이나, 삭제(Delete), 갱신(Update)으로 데이터가 지속적으로 변함

접근성(Accessibility)

  • 데이터베이스는 사용자가 쉽게 데이터에 접근하고 관리할 수 있도록 설계됨
  • 사용자는 쿼리 언어(SQL 등)를 사용해 필요한 데이터를 빠르게 찾을 수 있음

지속성(Persistence):

  • 데이터베이스에 저장된 정보는 영구적임
  • 전원이 꺼져도 데이터는 사라지지 않고 보존되어, 필요할 때 언제든지 접근할 수 있음

보안성(Security):

  • 데이터베이스는 데이터의 무단 접근이나 변경을 방지하기 위해 보안 기능을 제공함
  • 사용자 인증, 데이터 암호화 등 다양한 보안 메커니즘이 데이터를 안전하게 보호

내용에 의한 참조 (Content Reference)

  • 데이터 참조시 SQL에 기반한 정보로 데이터의 위치나 주소에서 데이터를 찾음.

동시성(Concurrency):

  • 여러 사용자가 동시에 데이터베이스에 접근하더라도, 데이터베이스 관리 시스템(DBMS)은 이를 관리하여 데이터의 일관성을 유지한다.
  • 트랜잭션 관리와 락킹 메커니즘을 통해 이루어진다.

확장성(Scalability):

  • 데이터베이스는 데이터의 양이 증가해도 성능 저하를 최소화하며 처리다.
  • 데이터베이스의 설계와 시스템 구성에 따라 수직적 또는 수평적으로 확장할 수 있다.
수직적 확장(Vertical Scaling)과 수평적 확장(Horizontal Scaling)
시스템의 처리 능력을 증가시키기 위한 방법

수직적 확장 (Vertical Scaling)
    수직적 확장은 기존의 서버나 시스템의 성능을 향상시키는 방법으로, 
    하드웨어의 업그레이드(예: CPU, RAM, 저장장치의 용량 증가)를 통해 처리 능력을 강화한다. 
    이 방법은 구현이 비교적 간단하고, 기존 시스템 구조를 크게 변경하지 않아도 되는 장점이 있다.

    하드웨어의 물리적 한계와 비용 증가의 문제로 인해 확장에는 한계가 있다.

수평적 확장 (Horizontal Scaling)
    수평적 확장은 시스템이나 서버의 수를 증가시켜 처리 능력을 향상시키는 방법이다.
    추가적인 노드나 서버를 네트워크에 추가하여 시스템을 확장한다.
    이 방법은 더 많은 트래픽을 처리할 수 있으며, 
    시스템의 장애 대응력을 향상시키는 등의 이점이 있다.
    또한, 클라우드 컴퓨팅 환경에서는 수평적 확장이 더욱 유연하게 적용될 수 있다. 

    시스템의 복잡성이 증가하고, 데이터 일관성을 유지하기 위한 추가적인 관리가 필요할 수 있다.
    
고려해야 할 환경과 요구 사항

수직적 확장

초기 비용을 낮추고 싶을 때: 
    기존 시스템에 추가적인 자원을 투입하는 것이 새로운 시스템을 구축하는 것보다 
    비용적으로 효율적일 때.
    
시스템의 복잡성을 최소화하고 싶을 때: 
    추가적인 서버나 네트워크 구성 없이 
    성능을 향상시킬 수 있어 
    관리가 상대적으로 간단할 때
    
물리적 공간의 제약이 있을 때: 
    새로운 하드웨어를 추가하지 않고 
    기존 서버의 사양을 업그레이드함으로써 
    공간을 절약해야 할 때

수평적 확장

시스템의 고가용성(High Availability)이 중요한 경우: 
    서버가 다수 존재할 경우,
    일부 서버에 문제가 생겨도 
    시스템 전체의 가용성에 큰 영향을 미치지 않음
    
트래픽이나 데이터가 급격히 증가하는 환경: 
    수평적 확장을 통해 필요에 따라 
    자원을 유연하게 추가할 수 있다.
    
분산 처리가 필요한 대규모 애플리케이션:
    데이터를 여러 서버에 분산시켜 처리함으로써 
    시스템의 성능을 향상시킬 수 있다.

 

 

데이터베이스 언어의 종류

데이터베이스 관리 시스템(DBMS)에서 사용되는 여러 종류의 데이터베이스 언어가 있다.

데이터베이스 언어 중에서 가장 많이 사용되는 언어는 SQL(Structured Query Language)이다.

SQL은 관계형 데이터베이스에서 데이터를 정의하고 조작하고 제어할 수 있는 표준 언어로서, 대부분의 데이터베이스 시스템에서 지원한다.

데이터베이스를 생성하고, 관리하며, 데이터를 조작하는 데 사용된다.

 

주요 데이터베이스 언어:

명령어 종류 명령어
데이터 조작어
(DML : Data Manipulation Language)
SELECT
INSERT
UPDATE
DELETE
데이터 정의어
(DDL : Data Definition Language)
CREATE
ALTER
DROP
RENAME
TRUNCATE
데이터 제어어
(DCL : Data Control Language)
GRANT
REVOKE
트랜잭션 제어어
(TCL : Transaction Control Language)
COMMIT
ROLLBACK
SAVEPOINT

 

DDL(Data Definition Language) 

  • 데이터 정의 언어
  • 데이터베이스의 구조를 정의하는 데 사용
  • 테이블, 인덱스, 관계 등을 생성, 변경, 삭제하는 명령어가 포함됨

DML(Data Manipulation Language) 

  • 데이터 조작 언어
  • 데이터를 실제로 조작하는 데 사용
  • 데이터를 삽입, 조회, 수정, 삭제하는 명령어가 포함됨

DCL(Data Control Language) 

  • 데이터 제어 언어
  • 데이터베이스의 접근 권한이나 보안 관련 설정을 정의하는 데 사용됨
  • 사용자의 권한을 관리하는 명령어가 포함됨

TCL(Transaction Control Language) 

  • 트랜잭션 제어 언어
  • 데이터베이스의 트랜잭션을 관리하는 데 사용
  • 트랜잭션의 시작과 종료를 관리하며, 데이터의 일관성과 무결성을 보장하는 데 필요한 명령어가 포함됨

 

 

 

'[프로그래밍] DataBase' 카테고리의 다른 글

[DataBase] 무결성  (0) 2024.05.12
[DataBase] Key  (0) 2024.05.11
[DataBase] DataBase Table  (0) 2024.05.10
[DataBase] Schema  (0) 2024.05.09
[DataBase] DBMS  (0) 2024.05.09