Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 업로드 #lambda #함수 #모바일 이미지 #썸네일 이미지
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #replica #복제본 #aurora #database #고가용성
- 공간복잡도 #공간자원 #캐시메모리 #SRAM #DRAM #시간복잡도
- aws #아키텍트 #과정 #vpc #인프라 구축 #rds #endpoint #cloudwatch #monitoring
- 비트 #바이트 #이진수
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #message #queue #sns구독
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #웹개발
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 #스토리지 #isci #이미지 #업로드
- 쓰레드 #쓰레드풀 #프로세스
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #KDT #기본문법 #데이터베이스 #Computer #Science #CPU #메모리
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #고가용성 #테스트 #alb #application #load balancer #application
- aws #아키텍트 #과정 #vpc #인프라 구축 #amazon sns #server #less #architecture
- aws #아키텍트 #과정 #vpc #인프라 구축 #t.g #target group #alb #application #load #balancer #web #server
- aws #아키텍트 #과정 #vpc #인프라 구축
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #딥러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #ec2 #instance #launch #template #생성 #ami #amazone #machine #image
- aws #아키텍트 #과정 #vpc #인프라 구축 #s3 #bucket #객체 스토리지 #objects storage #events #upload #알림
- aws #아키텍트 #과정 #vpc #인프라 구축 #php #alb #application #load #balancer #security #group #igw #ec2 #vpc #virtual #private #cloud
- aws #아키텍트 #과정 #vpc #인프라 구축 #aurora #database #rds #rdbs #load #balancer #web #page #haproxy
- 썸네일 #이미지
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #OSI #ISO #AI #서버 #자동화 #SQL #기본문법 #데이터베이스 #DBMS #Oracle #MongoDB #아키텍쳐 #DB
- aws #아키텍트 #과정 #vpc #인프라 구축 #db #장애조치 #reand only #replica #events
- aws #아키텍트 #과정 #vpc #인프라 구축 #second nat #gateway #routing table #route53 #고가용성 #private subnet #
- 스파르타코딩클럽 #부트캠프 #IT #백엔드 #머신러닝 #AI #서버 #자동화 #SQL #기본문법 #데이터베이스
- aws #아키텍트 #과정 #vpc #인프라 구축 #sqs #trigger #python3.9 #패키지 #
- 프로세스 #CPU #시공유 #커널
- aws #아키텍트 #과정 #vpc #인프라 구축 #haproxy #round robin #process #high ability #auto scailling #app server #launch template
- aws #아키텍트 #과정 #vpc #인프라 구축 #alb #load balancer #t.g #target #group #haproxy #high ability #db #replica #region
- aws #아키텍트 #과정 #vpc #인프라 구축 #auto scailling #lauch template #ec2 instace #private #subnet
Archives
- Today
- Total
요리사에서 IT개발자로
스파르타 코딩클럽(부트캠프) 5장 DB(데이터베이스) 구조와 유형 본문
컴퓨터와 데이터베이스
컴퓨터의 구성
보조기억장치 : HDD, SSD 같은 영구저장소 용도, 데이터도 저장
- 파일은 파일시스템, 데이터는 데이터베이스 안에 저장
- 컴퓨터 전원이 꺼져도 지워지지 않는 비휘발성 메모리
- 데이터와 프로그램을 반 영구정 저장
- 설치한 모든 프로그램이나 파일들은 보조기억장치에 반영구적 저장됨.
데이터 베이스 이해
보조 기억장치는 여러가지 형태료 사용된다.
EX)파일시스템, 데이터베이스
파일시스템
- 개별적인 파일들을 보관하고 정리하는 데 사용되는 큰 창고이다.
- 파일들은 여러 폴더에 저장, 사용자는 파일을 직접 관리해야 한다.
- 사람들이 파일들을 개별적으로 처리하고 정리하는 데 많은 시간과 노력을 투자해야한다.
데이터베이스
- 체계적으로 구성된 도서관.
- 데이터베이스는 파일 시스템과 다르게 데이터를 구조화하고 연결시키는 기능을 제공.
- 데이터베이스는 테이블, 레코드, 필드 등의 개념을 사용하여 데이터를 구성, 데이터를 효율적으로 관리 및 검색이 가능.
- 데이터베이스 시스템은 도서관리 시스템과 비슷한 역할을 한다.
- 데이터베이스 시스템을 사용하면 데이터의 일관성, 무결성, 안전성을 유지하며 복잡한 데이터 조작 작업을 간편하게 수행할 수 있다.
데이터베이스
데이터베이스의 개요
정보와 데이터는 서로 다르다.
정보 : 여러종류의 문서로 흩어져 있어 조합하기 어려운 단위
데이터 : 정보를 체계쩍으로 분류하여 조합 할 수 있는 단위
데이터베이스(Database)의 정의
- 데이터베이스 : 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합되어 있다.
- 데이터베이스의 구조 : 사용되는 데이터 모델에 의해 결정된다.
데이터베이스(Database)의 특징
- 데이터 대규모 저장소로써 다수 사용자에 의하여 동시 사용된다.
- 모든 데이터가 중복을 최소화함으로써 통합되었다.
- 데이터베이스는 운영 데이터 뿐만 아닌 그 데이터에 관한 설명까지 포함된다.
- 프로그램과 데이터 간의 독립성이 제공된다.( 프로그램 메모리가 아닌 개별적인 저장공간에 저장되기에)
- 효율적으로 접근이 가능하고 질의를 할 수 있다.(엑셀 수식과 비슷하다)
데이터베이스 관리 시스템(DBMS : Database Management System)
- 데이터베이스를 정의 ,질의어 지원, 리포트를 생성 하는 등 작업을 수행하는 소프트웨어
데이터베이스 시스템 개요
데이터베이스 스키마
- 전체적인 데이터베이스 구조를 뜻하며 자주 변경되지 않는다.
- 데이터베이스의 모든 가능한 상태를 미리 정의한다.
- Ex) 사람 데이터는 이름, 키 몸무게, MBTI 필드를 가진다.
- Ex) Department 데이터는 DEPTNO, DEPTNAME, FLOOR 필드를 가진다.
- Ex) EMPLOYEE 데이터는 EMPNO, EMPNAME, TITLE, DNO, SALARY 필드를 가진다.
데이터 베이스 상태
특정 시점의 데이터베이스의 내용을 의미, 시간이 지남에 따라 계속 바뀐다.
데이터베이스에 수정이 일어날 때 마다 상태는 바뀐다.
데이터베이스 시스템 (DBS : Database System)
DB, DBMS, USER 를 포함한 가장 큰 범위
데이터 베이스
조직체의 응용 시스템들이 공유하여 사용하는 운영데이터들의 구조적으로 통합된 모임.
- 시스템 카탈로그 (or 데이터 사전, Data Dictionary) 와 저장된 데이터 베이스로 구분 할 수 있다.
- 시스템 카탈로그(System Catalog)는 저장된 데이터베이스의 스키마 정보를 유지한다.
DBMS
데이터베이스 언어라고 불리는 특별한 프로그래밍 언어를 한개 이상 제공한다
SQL은 여러 DBMS에서 제공되는 사실상의 표준 데이터 베이스 언어이다.
DBMS의 기능
- 사용자가 새로운 데이터를 생성
- 데이터 구조를 명시
- 사용자가 데이터를 효율적으로 질의하고 수정 할 수 있도록 한다
- 시스템의 고장이나 권한이 없는 사용자로부터 데이터를 안전하게 보호한다
- 동시에 여러 사용자가 데이터 베이스를 접근하는 것을 제어한다.
사용자
데이터베이스 사용자는 여러 부류로 나눌 수 있다
하드웨어
- 데이터베이스는 디스크와 같은 보조 기억 장치에 저장, DBMS에서 원하는 정보를 찾기 위해 디스크의 블록들을 주기억 장치로 읽어야한다.
- 계산이나 조합 및 비교 연산들을 수행하기 위하여 중앙 처리 장치가 사용된다
- DBMS 자체도 주기억 장치에 적재되어 실행되어야 한다.
데이터베이스 시스템의 요구사항
- 데이터 독립성
- 효율적인 데이터 접근
- 데이터에 대하여 동시 접근
- 백업과 회복
- 중복을 줄이거나 제어하며 일관성을 유지
- 데이터 무결성
- 데이터 보완
- 쉬운 질의어
- 다양한 사용자 인터페이스
파일시스템 vs DBMS
파일 시스템을 사용한 기존의 데이터 관리
파일 시스템은 DBMS가 등장하지 않았을 때 1960년 대부터 사용되어왔다.
파일을 접근하는 방식이 응용프로그램 내에 상세하고 표현됨으로 데이터에 대한 응용 프로그램의 의존도가 높다.
파일 시스템의 단점
데이터가 많은 파일에 중복해서 저장된다.
파일 시스템의 단점
- 다수의 사용자들을 위한 동시성 제어가 제공되지 않는다.
- 검색하려는 데이터를 쉽게 명시하려는 "질의어"가 제공되지 않는다.
- 보안 조치가 미흡하다
- 회복 기능이 없다.
- 프로그램 - 데이터 독립성이 없음으로 유지보수 비용이 많이 소요된다.
- 파일을 검색하거나 갱신하는 절차가 상대적으로 복잡하기에 프로그래머의 생산성이 낮다.
DBMS 의 장점
스키마 정의를 통해
- 중복성과 불일치가 감소된다.
- 표준화를 시행하기가 용이하다
- 조직체의 요구사항을 식별 할 수 있다.
관리 도구를 통해
- 시스템을 개발하고 유지하는 비용이 감소된다.
- 보안이 향상된다.
- 무결성이 향상된다.
- 다양한 유형의 고장으로부터 데이터베이스를 회복 할 수 있다.
- 데이터베이스의 공유와 동시 접근이 가능하다.
DBMS의 단점
- 추가적인 하드웨어 구입 비용이 생기고 DBMS 자체의 구입 비용도 상당히 비싸다.
- 직원들의 관리도구 사용법 교육 비용이 많이 소요된다.
- 비밀과 프라이버시 노출 등 단점이 존재 할 수 있다.
DBMS를 적용하면 안되는 경우
1. 초기의 투자 비용이 클 경우
2. 오버헤드가 클 경우
3. 응용이 단순하고 잘 정의 되어 변경되지 않을 것으로 예상 될 경우
4. 엄격한 실시간 처리 요구 사항이 있을경우
5. 데이터에 대한 다수 사용자의 접근이 필요하지 않을 경우
DBMS 발전과정
계층 DBMS 구조
특징
1. 1960년대 후반에 최초의 계층 DBMS가 등장
2. 트리 구조를 기반으로 하는 계층 데이터 모델을 사용한 DBMS
3. 계층 데이터 모델은 네트워크 데이터 모델의 특별한 사례이다.
계층 DBMS 장점
- 어떤 유형의 응용에 대해 빠른 속도와 높은 효율성을 제공한다.
계층 DBMS 단점
- "어떻게 데이터를 접근하는가"를 미리 응용 프로그램에 정의해야 한다.
- 데이터베이스가 생성될 경우 각가의 관계를 명시적으로 정의해야 한다.
- 레코드들이 링크로 연결되어 있어 레코드 구조를 변경하기 어렵다.
네트워크 DBMS 구조와 특징
- 레코드들이 노드로 레코드들 사이 관계가 간선으로 표현되는 그래프를 기반으로 하여 네트워크 데이터 모델을 사용한다.
- 네트워크 DBMS에서 레코드들이 링크로 연결되어있어 레코드 구조를 변경하기 어렵다
관계 DBMS 특징
- 모델이 간단하여 이해하기 쉽다
- 사용자는 자신이 원하는 것(What)만 명시하고, 데이터가 어디있는지 어떻게 접근해야 하는지는 DBMS가 결정한다.
- Ex) MS SQL server, Oracle, Sybase, DB2, MySQL
객체 지향 DMBS 특징
- 객체 지향 프로그래밍 패러다임을 기반으로 하는 데이터 모델이다
- 데이터와 프로그램을 그룹화, 복잡한 객체들을 이해하기 쉽고 유지와 변경이 용이하다.
- EX) ONTOS, OpenODB, GemStone, ObjectStore, O2 등
객체 관계 DBMS 특징
- DBMS에 객체 지향 개념을 통합한 객체 관계 데이터 모델이 제안된다.
- EX) Oracle, Informix, Universal Server
DBMS 언어
데이터 정의어 (DDL : Data Definition Language)
- 사용자는 데이터 정의어를 사용하여 데이터베이스 스키마를 정의한다.
- 데이터 정의어로 명시된 문장이 입력되면 DBMS는 사용자가 정의한 스키마에 대해 명세를 시스템 카탈로그 or 데이터사전에 저장한다.
데이터 정의어의 기본적 기능
1. 데이터 메돌에서 지원 하는 데이터 구조를 생성한다. Ex) SQL 에서 Create Table
2. 데이터 구조의 변경한다. Ex)SQL 에서 Alter Table
3. 데이터 구조의 삭제한다. Ex)SQL 에서 Drop Table
4. 데이터 접근을 위해 특정 애트리뷰트 위에 인덱스를 정의한다.Ex) SQL에서 Create INDEX
데이터 조작어 (DML : Data Manipulation Language)
- 사용자는 데이터 조작어를 사용, 데이터베이스 내의 원하는 데이터를 검색, 수정, 삽입, 삭제 한다.
- 절차적 언어 (Procedural Language) 와 비절차적 언어(Non-Procedural Language) 가 있다.
- 관계 DBMS 에서 사용되는 SQL은 대표적인 비절차적 언어이다.
- 대부분의 데이터 조작어는 SUM, COUNT, AVG와 같은 내장 함수들을 가지고 있다.
- 데이터 조작어는 단말기에서 대화식으로 입력되어 수행되거나 C, 코볼 등 의 고급 프로그래밍 언어로 작성된 프로그램에 내포되어 사용된다.
데이터 조작어의 기본적 기능
1. 데이터의 검색 Ex) SQL에서 SELECT
2. 데이터의 수정 Ex) SQL에서 UPDATE
3. 데이터의 삭제 Ex) SQL에서 DELETE
4. 데이터의 삽입 Ex) SQL 에서 INSERT
데이터 제어어 (DCL :Data Control Language)
- 사용자는 데이터 제어어를 사용, 데이터베이스 트랜잭션을 명시 or 권한부여, 취소를 한다.
DBMS 사용자
응용 프로그래머
- 데이터 베이스 위에 특정 응용 (고객, 인사, 재고 관리등) 이나 인터페이스를 구현하는 사람
- 프로그래밍 언어로 응용 프로그램을 개발하며 데이터베이스를 접근하는 부분은 내포된 데이터 조작어를 사용한다.
- 이들이 작성한 프로그램은 최종 사용자들이 반복해서 수행함으로 기작성 트랜잭션(Canned Transaction) or 프로그램 이라 한다.
데이터베이스 관리자 (DBA : Database Administrator)
- 데이터 베이스 관리자는 조직의 여러 부분의 상이한 요구를 만족시키기 위하여 일관성 있는 데이터 베이스 스카마를 생성, 유지 하는 사람
- 데이터베이스 관리자의 역할
- 리얼 DB 변경이 필요할 경우 DBA에게 요청
데이터 베이스 스키마의 생성과 변경
1. 무결성 제약조건을 명시한다.
2. 사용자의 권한을 허용, 취소 하고 사용자의 역할을 관리한다.
3. 저장 구조와 접근 방법 (물리적 스키마)을 정의한다
4. 백업과 회복
5. 표준화 시행
오퍼레이터(인프라 팀)
- DBMS가 운영되고 있는 컴퓨터 시스템과 전산실을 관리하는 사람이다
최종 사용자 (유저)
- 질의 or 갱신 보고서를 생성하기 위해 데이터베이스를 사용하는 사람이다.
- 최종 사용자는 다시 데이터베이스 질의어를 사용하여 매번 다른정보를 찾는 캐주얼 사용자와 기작성 트랜잭션을 주로 반복해서 수행하는 초보 사용자로 구분된다.
데이터 베이스 유형
관계형 데이터 베이스 (SQL)
관계형 데이터 베이스 요약
- 동일한 구조(릴레이션)의 관점에서 모든 데이터를 논리적으로 구성한다
- 선언적인 질의어를 통하여 데이터 접근을 제공한다.
- 응용 프로그램들은 데이터베이스 내의 레코드들의 어떠한 순서와도 무관하게 작성된다.
- 사용자는 원하는 데이터(What)만 명시, 어떻게 이 데이터를 찾을 것인가(How)는 명시할 필요가 없다.
- 관계 데이터 모델은 지금까지 제안된 데이터 모델들 중 가장 개념이 단순한 데이터 모델이다.
SQL 특징
- 바탕이 되는 데이터 구조로써 간단한 테이블(릴레이션)을 사용한다.
- 중첩된 복잡한 구조가 없다.
- 집합 위주로 데이터를 처리한다.
- 숙련되지 않은 사용자도 쉽게 이해할 수 있다.
- 표준 데이터 베이스 응용에 대해 좋은 성능을 보인다
기본적인 용어
- 릴레이션(Relation) : 2차원의 테이블 (스프레드 시트와 유사하다)
- 레코드(Record) : 릴레이션의 각 행이다.
- 튜플 (Tuple) : 레코드를 좀 더 공식적으로 부르는 용어 = 로우(Row)
- 속성(Attribute) : 릴레이션에서 이름을 가진 하나의 열 = 컬럼(Column)
파일 시스템 에는 레코드만 가진 파일 형태로 존재하지만 관계형 데이터베이스는 속성, 튜플을 가진 릴레이션(테이블) 형태로 존재합니다.
도메인(Domain)
- 한 속성에 나타날 수 있는 값들의 집합
- 각 속성의 도메인의 값들은 원자값이다.
- 프로그래밍 언어의 데이터 타입과 유사하다
- 동일한 도메인이 여러 속성에서 사용될 수 있다.
- 복잡 속성이나 다치 애트리뷰트는 허용되지 않는다.
Ex) EMPNAME 의 도메인 정의
차수(Degree)와 카디날리티(Cardinality)
차수 : 한 릴레이션에 들어 있는 속성들의 수(필드 수)
- 유효한 릴레이션의 최소 차수는 1, 속성이 1개이상 있어야 릴레이션 (테이블) 이 된다.
- 릴레이션 차수는 자주 바뀌지 않는다
- 테이블 스키마 변경시에 전체 로우에 반영되어야 되기에 처리가 중단됨으로 자주 바꾸지 못한다.
카디날리티 : 릴레이션의 튜플(로우 수)
- 유효한 릴레이션은 카디날리티 0을 가질 수 있다.
- 릴레이션의 카디날리티는 시간이 지남에 따라 계속해서 변한다.
비관계형 데이터베이스 (NoSQL)
비관계형 데이터베이스 요약
- NoSQL이라 부르며, Not Only SQL(SQL 뿐만이 아니다)의 줄임말 이라 한다.
- SQL 뿐만이 아니기에 다른 여러 장점을 갖고있다.
- 기존의 관계형데이터베이스의 한계를 뛰어넘기위해 만들어진 새로운 형태의 데이터 베이스
- 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용, 데이터의 저장 및 검색에 특화된 매커니즘을 제공.
- NoSQL은 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위하여 개발되었다.
대표적인 비관계형 데이터베이스는 MongoDB, Redis, HBase 등
비관계형 데이터 베이스 특징
- 거대한 Map으로 Key-Value 형식을 지원
- 관계형 DB와 달리 PK, FK JOIN 등 관계를 정의하지 않는다.
- 스키마에 대한 정의가 없다.
비관계형 데이터 베이스 장점
- 대용량 데이터 처리를 하는데 효율적이다.
- 읽기 작업보다 쓰기 작업이 더 빠르고 관계형 데이터베이스에 비해 쓰기와 읽기 성능이 빠르다
- 데이터 모델링이 유연하다.
- 뛰어난 확장성으로 검색에 유리하다.
- 최적화된 키 값 저장 기법을 사용하여 응답속도나 처리효율 등에서 성능이 뛰어나다.
- 복잡한 데이터 구조를 표현 할 수 있다.
비관계형 데이터 베이스 단점
- 쿼리 처리시 데이터를 파싱 후 연산을 해야해서 큰 크기의 Document 를 다룰 때 성능이 저하된다.
문서형(Document) 데이터베이스
- 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미
- 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화, 저장한다.
- 각각의 문서는 하나의 속성에 대한 데이터를 갖고 컬렉션이라 하는 그룹으로 묶어 관리한다.
- 대표적인 문서형 데이터베이스는 MongoDB 가 있다.
Key-Value 타입
- 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장한다.
- Key = 이름, Value = 속성 에 연결된 값을 의미
- Redis, Dynamo 등이 대표적인 Key-Value 형식의 "데이터베이스"
Wide-Column Store 데이터 베이스
- 데이터베이스의 열(Column)에 대한 데이터를 집중적으로 관리하는 데이터 베이스 이다.
- 각 열에는 Key-Value 형식으로 데이터가 저장, 컬럼 패밀리(Column Famlies)라고 하는 열의 집합체 단위로 데이터를 처리할 수 있다.
- 하나의 행에 많은 열을 포함 할 수 있어 유연성이 높다.
- 데이터 처리에 필요한 열을 유연하게 선택할 수 있다는 점에서 규모가 큰 데이터 분석에 주로 사용되는 데이터 베이스 형식이다.
- 대표적인 Wide-Column 데이터베이스에는 Cassandra, Hbase 가 있다
그래프(Graph) 데이터 베이스
- 자료구조의 그래프와 비슷한 형식으로 데이터 간 관계를 구성하는 데이터베이스 이다.
- 노드(Nodes)에 속성별(Entities)로 데이터를 저장한다.
- 각 노드간 관계는 선(Edge)으로 표현한다.
- 대표적인 그래프 데이터베이스에는 Neo4J, InfiniteGraph가 있다.
SQL vs NoSQL
"데이터베이스를 구축하는 방법에 완벽한 솔루션은 없다."
많은 개발자들은 유저의 요구를 충족하기 위하여 관계형, 비관계형 데이터베이스를 모두 사용 및 서비스에 맞게 설계한다.
NoSQL 기반의 비관계형 데이터베이스가 확장성이나 속도면에서 뛰어나다.
허나 고차원으로 구조화된 SQL 기반의 데이터베이스가 더 좋은 성능을 보여줄 수 있다.
여러 사용 사례에 따라 적절한 데이터베이스를 선택하는 것이 중요하다.
SQL 사용이 적합한 경우
ACID는 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성) 를 의미
데이터베이스의 ACID 성질을 준수해야 하는 경우
- 각 단어는 데이터베이스에서 실행되는 하나의 트랜잭션(Transaction)에 의한 상태의 변화를 수행하는 과정에서 안전성을 보장하기 위해 필요한 성질.
- SQL 을 사용하면 데이터베이스와 상호 작용 하는 방식을 정확하게 규정 할 수 있기에 데이터베이스에서 데이터를 처리할 때 발생할 수 있는 예외적인 상황을 줄이고 데이터베이스의 무결성을 보호 할 수 있다.
- 전자 상거래를 비롯한 모든 금융 서비스를 위한 소프트웨어 개발 에서는 반드시 데이터베이스의 ACID성질을 준수해야 한다. 이런 경우 일반적으로 SQL을 이용한 관계형 데이터 베이스를 사용한다.
트랜잭션(Transaction)이란 데이터베이스를 수정하는 하나의 "작업묶음단위"ex)출금
소프트 웨어에 사용되는 데이터가 구조적이고 일관적인 경우
- 소프트웨어(프로젝트)의 규모가 많은 서버를 필요로 하지 않고 일관된 데이터를 사용하는 경우, 관계형 데이터베이스를 사용하는 경우가 많다.
- 다양한 데이터 유형과 높은 트래픽을 지원하도록 설계된 NoSQL 데이터베이스를 사용해야만 하는 이유가 없다.
NoSQL 사용이 적합한 경우
데이터의 구조가 거의 또는 전혀 없는 대용량의 데이터를 저장하는 경우
- 대부분의 NoSQL 데이터베이스는 저장 할 수있는 데이터의 유형에 제한이 없다.
- 필요에 따라 언제든지 데이터의 새 유형을 추가 할 수 있다.
- 소프트웨어 개발에 정형와 되지 않은 많은 양의 데이터가 필요한 경우에 NoSQL이 더 효율적일수 있다.
클라우드 컴퓨팅 및 저장곤간을 최대한 활용하는 경우
- 클라우드 기반으로 데이터베이스 저장소를 구축하면 저렴한 비용의 솔루션을 제공 받을 수 있다.
- 소프트웨어에 데이터베이스 확장성이 중요하다면 별다른 번거로움 없이 확장할 수 있는 NoSQL 사용이 좋다.
빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 업데이트 하는 경우
- NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없기에 빠르게 개발하는 과정에 매우 유리하다.
- 소프트웨어 버전별 많은 다운타임없이 데이터구조를 자주 업데이트 해야하는 경우
- 스키마를 매번 수정해야 하는 SQL보다 NoSQL 기반의 비관계형 데이터베이스를 사용하는게 좋다.
다운타임
데이터베이스 서버를 오프라인으로 전환하여 데이터 처리를 진행하는 작업시간
반응형
'Computer Science' 카테고리의 다른 글
스파르타 코딩클럽(부트캠프) 7장 자료의 저장과 표현 (2) | 2024.03.25 |
---|---|
스파르타 코딩클럽(부트캠프) 6장 DBMS(데이터베이스 관리 시스템)의 기능과 종류 (1) | 2024.03.22 |
스파르타 코딩클럽(부트캠프) 4장 프로세스 쓰레드와 쓰레드 (0) | 2024.03.20 |
스파르타 코딩클럽(부트캠프) 3장 프로세스 생명주기와 프로세스메모리 (2) | 2024.03.19 |
스파르타 코딩클럽(부트캠프) 2장CPU 와 메모리 심화 (0) | 2024.03.18 |