데이터베이스

시코·2022년 8월 9일

데이터베이스(Database, DB)란? : 데이터의 저장소. 

DBMS(Database Management System, 데이터베이스 관리 시스템)란? 데이터베이스를 운영하고 관리하는 소프트웨어.

  • DBMS의 유형은 계층형(Hierarchical), 망형(Network), 관계형(Relational), 객체지향형(Object-Oriented), 객체관계형(Object-Relational) 등으로 분류됩니다. 현재 사용되는 DBMS 중에는 관계형 DBMS가 가장 많은 부분을 차지하며, MySQL도 관계형 DBMS에 포함됩니다. 

SQL(Structured Query Language)란? 구조화된 질의 언어라는 뜻으로 관계형 데이터베이스에서 사용되는 언어. 표준 SQL을 배우면 대부분의 DBMS를 사용할 수 있음.

 NoSQL(Not Only SQL)

  • NoSQL은 RDB의 특성 뿐만 아니라 다른 특성까지도 지원해 주는 데이터베이스라는 의미를 지닌다. 대용량 데이터를 다루거나 데이터 분산 처리에 용이. 유연한 데이터 모델링이 가능. Cloud Computing에 적합.

[NoSQL 종류]
1) Document방식
- MongoDB(MongoDB Inc.), CouchDB(Apache) : Json, XML과 같은 Collection 데이터 모델 구조 사용

2) Key - Value 방식

  • Redis, Memchached : 둘다 In-memory DB이기도 하며 Key와 Value의 데이터가 쌍으로 저장되는 가장 단순한 데이터 모델 구조 사용

3) Big Table DB

  • HBase, Cassandra, Hypertable, ScyllaDB : Key-Value 형에서 발전된 형태인 Column Family 데이터 모델 구조 사용
  • 관련이 없는 데이터들의 집합으로 만든다. 데이터를 구조적으로 정의하기 힘들거나 쉽지않는 경우 사용한다. 예로는 로그라던가 인공지능 데이터, 검색 데이터 결과 등 규칙이 없는 데이터가 대표적이다.

데이터베이스 종류
DMBS는 데이터 저장 방법에 따라 몇 가지로 분류할 수 있다.

계층형 데이터베이스
역사가 오래된 DBMS로, 폴더와 파일등의 계층 구조로 데이터를 저장하는 방식이다.
하드디스크나 DVD 파일시스템을 이러한 계층형 데이터베이스라고 할 수 있다.
현재는 거의 사용되지 않는 방식이다.

관계형 데이터베이스
관계 대수(relational algebra)라는 것에 착안하여 만들어진 데이터베이스이다.
관계 대수 형태란, 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리킨다.
가로 방향으로는 '열'을', 세로 방향으로는 '행'을 나열한다.
각각의 표에 이름을 붙여 관리하고, 이 때, 데이터베이스 안의 데이터는 SQL 명령어로 조작할 수 있다.

객체지향 데이터베이스
객체지향 언어란 '객체(object)'라는 것을 중심으로 프로그래밍하는 언어이다.
여기서 '가능하면 객체 그대로를 데이터베이스의 데이터로 저장하는 것'이 객체지향 데이터베이스이다.

XML 데이터베이스
XML이란 자료 형식을 가리키는 용어로, 태그를 이용해 마크업 문서를 작성할 수 있게 정의한 것이다.
태그는 HTML과 비슷한 형식으로 <data>데이터</data> 와 같은 형식으로 표현한다.
즉, XML 데이터베이스는 이처럼 XML 형식으로 기록된 데이터를 저장하는 데이터베이스이다.
XML 데이터베이스에서는 SQL 명령을 사용할 수 없고, XQuery라는 전용 명령어를 사용해야 한다.

키-밸류 스토어(KVS)
키와 그에 대응하는 값(밸류)이라는 단순한 형태의 데이터를 저장하는 데이터베이스이다.
키와 밸류의 조합은 연상배열이나 해시 테이블(hash table)에서 자주 볼 수 있다.
NoSQL(Not only SQL)이라는 슬로건으로부터 생겨난 데이터베이스로, 열 지향 데이터베이스라고도 불린다.
연상배열(associative array): 자료구조의 하나로, 키 하나와 값 하나가 연관되어 있으며 키를 통해 연관되는 값을 얻을 수 있다. 연상 배열, 결합성 배열, 맵(map), 딕셔너리(dictionary)로 부르기도 한다.


Schema(스키마)

  • 데이터베이스의 구조와 제약조건에 관한 전반적인 명세를 기술한다
  • 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약조건 등에 관한 전반적인 내용을 정의한다
  • 스키마는 사용자의 관점에 따라 외부(External)스키마, 개념(Conceptual)스키마, 내부(Internal)스키마 로 나눈다
  • 스키마는 데이터 사전에 저장되며, 다른 이름으로 메타-데이터(Meta-data) 라고도 한다

스키마의 3계층

External Schema(외부 스키마) = 서브 스키마 = 사용자 뷰

  • 사용자나 응용 프로그래머가 각 개인의 입장에서 필요로 하는 데이타베이스의 논리적 구조를 정의
  • 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브 스키마(Sub Schema) 라고도 한다
  • 하나의 데이터베이스 시스템에는 여러 개의 외부 스키마가 존재할 수 있으며, 하나의 외부 스키마를 여러 개의 응용 프로그램이나 사용자가 공용할 수 있다
  • 같은 데이터베이스에 대해서도 서로 다른 관점으로 정의할 수 있도록 허용한다
  • 일반 사용자는 질의어(SQL)를 사용하여 DB를 사용한다

Conceptual Schema(개념 스키마) = 전체적인 뷰(View)

  • 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다
  • 개념 스키마는 개체 간의 관계와 제약조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다
  • 단순한 스키마(Schema) 라고 하면 개념 스키마를 의미
  • 기관이나 조직체의 관점에서 데이터베이스를 정의한 것
  • 데이터베이스 관리자에 의해서 구성된다

Internal Schema(내부 스키마)

  • 물리적 저장장치의 입장에서 본 데이터베이스 구조로
  • 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현 방법, 내부 레코드의 물리적 순서 등을 나타낸다
  • 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마
  • 데이터베이스의 물리적 구조를 정의
  • 데이터의 실제 저장 방법을 기술
  • 물리적인 저장장치와 밀접한 계층

[Database] 데이터베이스 설계 및 구조
https://velog.io/@inyong_pang/Database-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EC%84%A4%EA%B3%84-%EB%B0%8F-%EA%B5%AC%EC%A1%B0


https://www.integrate.io/ko/blog/complete-guide-to-database-schema-design-ko/

데이터베이스 스키마란?
간단히 말해서 데이터베이스 스키마는 특정 데이터베이스의 구조 또는 구성에 대한 형식적인 설명입니다. "데이터베이스 스키마"라는 용어는 관계형 데이터베이스, 즉 테이블에 정보를 구성하고 SQL 쿼리 언어를 사용하는 데이터베이스와 관련하여 가장 일반적으로 사용됩니다. 비관계형(즉, "NoSQL") 데이터베이스는 여러 다른 형식으로 제공되며, 기본 구조가 있음에도 불구하고 일반적으로 관계형 데이터베이스와 동일한 방식으로 "스키마"가 있는 것으로 간주되지 않습니다.

관계형 데이터베이스 시스템은 견고한 데이터베이스 스키마를 갖추고 있느냐에 따라 크게 좌우됩니다. 효과적인 데이터베이스 스키마 설계의 목표는 다음과 같습니다.

  • 데이터 중복 감소 또는 제거
  • 데이터 불일치 및 부정확성 방지
  • 데이터의 정확성과 무결성 보장
  • 신속한 데이터 조회, 검색 및 분석 지원
  • 민감한 기밀 데이터를 안전하게 유지하면서도 필요한 사용자가 액세스할 수 있도록 지원

데이터베이스 설계 단계별 특성

데이터 베이스 설계
https://m.blog.naver.com/roser111/221638714322

[개발상식] 데이터 모델링(스키마설계 하는법, DB설계 하는법)
https://frozenpond.tistory.com/151
1정규화, 2정규화, 3정규화에 대한 내용 포함

ERD 란 무엇이고 어떻게 사용할까?

https://mulmandu17.tistory.com/68


트랜잭션

[DataBase] DB를 지탱하는 트랜잭션
https://brunch.co.kr/@skeks463/27

[DB] 트랜잭션(Transaction)이란? | ACID
https://code-lab1.tistory.com/51


ER다이어그램
https://m.blog.naver.com/gongtong/150135598792

0개의 댓글