0. 기초 개발 용어 사전(8)

gyrud02·2021년 8월 5일
0

이론(THEORY)

목록 보기
8/24
출처: (https://www.inflearn.com/pages/weekly-inflearn-12)

[데이터베이스(Database)]

* 데이터베이스(Database)

-- 데이터의 집합을 뜻하여 줄여서 DB라고도 부른다. 서버를 통해 넘어오는 데이터를 저장하고 관리하는 일종의 창고같은 개념이다. 데이터베이스에 과부하가 걸리면 서버에도 지장을 주며 관리를 잘못하면 데이터가 사라지는 상황이 벌어질 수 있으니 주의해야한다.

* 데이터베이스 관리 시스템(Database Management System)

-- 줄여서 DBMS라고 부르며, 데이터베이스를 통해 데이터를 저장, 수정, 추출할 수 있도록 관리하는 프로그램을 말한다.

* 관계형 데이터베이스(Relational Database)

-- 줄여서 RDB라고 부르며, 데이터베이스에서 키(KEY)와 값(VALUE)의 관계로 이루진 표(table)로 데이터를 구성하는 방식으로 오라클(ORACLE), MySQL, MSSQL 등 가장 널리 쓰이는 데이터베이스 관리 시스템이 관계형 데이터베이스 모델을 따르고 있다.

* 쿼리(Query)

-- 관계형 데이터베이스에서 데이터를 요청하고 관리하기 위해서는 SQL(Structured Query Language(구조화 쿼리 언어))이라는 데이터베이스 언어를 써야한다. SQL을 이용하면 데이터베이스에 쿼리를 통해 원하는 조건에 맞는 데이터를 추출하거나 조작할 수 있다. 즉, 관계형 데이터베이스에서 데이터를 조회, 추출, 조작하기 위헤 쓰는 명령어 혹은 질의 자체를 쿼리라고 한다.

* 레코드(Record)

-- 정보를 처리하는 기본적인 단위로 하나 이상의 필드의 집합을 말한다. 예를 들면 엑셀의 행(row)에 해당되고, 레코드 또는 튜플(Tuple)이라고도 하며, 여러 행이 모여 한 열을 이루듯이 여러 필드가 모여 한 레코드를 이룬다.

* 필드(Field)

-- 데이터베이스 시스템에서 처리의 최소 단위가 되는 것을 말한다. 예를 들면 엑셀에서 열(column)에 해당하는 가장 작은 단위의 데이터가 필드이다.

* 튜플(Tuple)

-- 릴레이션을 구성하는 각각의 행을 말하며 속성의 모임으로 구성된다. 파일 구조에서 레코드와 같은 의미이다. 튜플의 수를 카디널리티(Cardinality) 또는 기수, 대응수라고 한다.

* 속성(Attribute)

-- 데이터베이스를 구성하는 가장 작은 논리적 단위이며, 개체의 특성을 기술한다. 파일 구조상의 데이터 항목 또는 데이터 필드에 해당한다. 속성의 수를 디그리(Degree) 또는 차수라고 한다.

* 릴레이션(Relation)

-- 데이터들의 표(Table)의 형태로 표현한 것으로 구조를 나타내는 릴레이션 스키마와 실제 값들인 릴레이션 인스턴스로 구성된다. 주로 테이블과 같은 의미로 사용되며, 데이터의 집합을 의미한다.

[릴레이션(Relation)의 특징]

  • 한 릴레이션에서 튜플들은 모두 다르다. (똑같은 튜플이 포함될 수 없다.)
  • 한 릴레이션에서 튜플들은 순서에 무관하다.
  • 튜플들의 삽입, 삭제 등의 작업으로 인해 릴레이션은 시간에 따라 변한다.
  • 릴레이션 스키마를 구성하는 속성(attribute)의 값은 동일해도 된다.
  • 속성의 값은 논리적으로 더 이상 쪼갤 수 없는 원자값으로 구성된다.
  • 튜플을 식별하는 속성들의 부분집합을 키(Key)로 설정한다.

* 스키마(Schema)

-- 데이터베이스의 구조와 제약 조건에 관한 전반적인 명세를 기술한 메타데이터 집합이다. 데이터베이스를 구성하는 데이터 개체(Entity), 속성(Attribute), 관계(Relationship) 및 데이터 조작 시 데이터 값들이 갖는 제약 조건 등에 관해 전반적으로 정의한다. 스키마는 현실 세계의 특정한 한 부분의 표현으로써 특정 데이터 모델을 이용해서 만들어진다. 시간에 따라 불변인 특성을 가지고, 데이터의 구조적 특성을 의미하며, 인스턴스에 의해 규정된다.

--[스키마의 3계층]

  • 1) 외부 스키마(External Schema) : 사용자나 응용프로그래머가 각 개인의 입장에서 필요로 하는 데이터베이스의 논리적 구조를 정의한 것이다. 전체 데이터베이스의 한 논리적인 부분으로 볼 수 있으므로 서브스키마(Sub Schema)라고도 한다. 하나의 데이터베이스 시스템에는 여러개의 외부 스키마가 존재할 수 있으며 하나의 외부 스키마를 여러개의 응용 프로그램이나 사용자가 공용할 수도 있다. (= 사용자 뷰(View)
  • 2) 개념 스키마(Conceptual Schema) : 데이터베이스의 전체적인 논리적 구조로서, 모든 응용 프로그램이나 사용자들이 필요로 하는 데이터를 종합한 조직 전체의 데이터베이스로 하나만 존재한다. 개체간의 관계와 제약 조건을 나타내고 데이터베이스의 접근 권한, 보안 및 무결성 규칙에 관한 명세를 정의한다. DBA에 의해서 구성된다. (= 전체적인 뷰(View)
  • 3) 내부 스키마(Internal Schema) : 물리적 저장장치의 입장에서 본 데이터베이스 구조로, 물리적인 저장장치와 밀접한 계층이다. 실제로 데이터베이스에 저장될 레코드의 물리적인 구조를 정의하고, 저장 데이터 항목의 표현방법, 내부 레코드의 물리적 순서 등을 나타낸다. 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마다. (= 저장 스키마(Storage Schema))

* 트랜잭션(Transaction)

-- 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위이다. 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 또, 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위이다.

* NoSQL(Not Only SQL)

-- 기본 RDBMS 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장 기술을 의미하며, 관계형 데이터베이스의 한계를 극복하기 위한 데이터 저장소의 새로운 형태이다. 테이블-컬럼과 같은 스키마없이, 분산 환경에서 단순 검색 및 추가 작업을 위한 키 값을 최적화하고, 대규모 확대가 가능한 수평적인 확장성과 지연 및 처리율이 우수하다. 문서, 그래프, 키 값, 인 메모리, 검색을 포함해 다양한 데이터 모델을 사용한다. RDBMS가 클라이언트/서버 환경에 맞는 데이터 저장기술이라면, NoSQL은 클라우드 환경에 맞는 저장 기술이다. 대표적인 예로 아파치 카산드라(Apache Cassandra), 하둡(Hadoop), MongoDB 등이 있다.

* 프로시저(Stored Procedure)

-- 영구저장모듈(Persistent Storage Module)이라고도 하며, SQL Server에서 제공하는 프로그래밍 기능이다. 쿼리문을 마치 하나의 메서드 형식으로 만들고 어떠한 동작을 일괄적으로 처리하는 용도로 사용된다.(실행하기 위한 쿼리의 집합이다.) 여러 개의 컬럼을 조회하고 여러 개의 테이블을 조인하고 거기에 조건까지 넣어줌으로써 하나의 쿼리를 만드는데 긴 쿼리문이 생기게 되는데, 이러한 여러개의 쿼리를 사용할 때마다 긴 쿼리문을 작성해야 한다면 매우 불편하기 때문에 이를 프로시저에 저장하고 저장된 프로시저를 호출하여 프로그래밍을 하는 것이 훨씬 효율적이다. 하나의 요청으로 여러 SQL문을 실행할 수 있고, 네트워크 소요 시간을 줄일수 있으며, 개발 업무를 구분하여 개발할 수 있다. 하지만 처리 성능이 낮고 디버깅이 어려우며, 데이터베이스의 확장이 매우 힘들다는 단점이 있다.

* 시퀀스(Sequence)

-- 시퀀스는 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체이다. 보통 PK값에 중복값을 방지하기 위해 사용하며, 주로 ID와 같이 순차적으로 증가하는 컬럼에 많이 사용된다. 시퀀스는 테이블과는 독립적으로 저장되고 생성되기 때문에 여러 테이블에서 참조해서 공유되지 않도록 해야한다. 메모리에 캐시되었을 때, 시퀀스 값의 액세스 효율이 증가한다.

* 뷰(View)

-- 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된 이름을 가지는 가상 테이블이다. 그래서 기본 테이블과 같은 형태의 구조를 사용하며, 조작도 기본 테이블과 거의 같다. 뷰는 저장장치 내에 물리적으로 존재하지 않지만 사용자에게 있는 것처럼 간주된다. 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용되어 필요한 데이터만 뷰로 정의해서 처리할 수 있기 때문에 관리가 용이하고 명령문이 간단해진다. Join문의 사용 최소화로 사용상의 편의성을 최대화한다. 뷰를 통해서만 데이터에 접근하게 하면 뷰에 나타나지 않는 데이터를 안전하게 보호할 수 있다. 또, 기본 테이블의 기본키를 포함한 속성(열) 집합으로 뷰를 구성해야만 CURD 사용이 가능하다. 일단, 정의된 뷰는 다른 뷰의 정의에 기초가 될 수 있다. 뷰가 정의된 기본 테이블이나 뷰를 삭제하면 그 테이블이나 뷰를 기초로 정의된 다른 뷰도 자동으로 삭제된다.

* 트리거(Trigger)

-- 테이블에 대한 이벤트에 반응하여 자동으로 실행되는 작업을 말한다. DML의 데이터 상태의 관리를 자동화하는데 사용된다. 트리거를 사용하여 데이터 작업 제한, 작업 기록, 변경 작업 감사 등을 할 수 있다. 테이블과 뷰 데이터베이스 작업을 대상으로 정의할 수 있으며, 전체 트랜잭션 작업에 대해 발생되는 트리거와 각행에 대해 발생되는 트리거가 있다.

* 인덱스(Index)

-- 데이터베이스 분야에 있어서 테이블에 대한 저장 공간을 활용하여 데이터베이스 테이블의 동작의 속도를 높여주는 자료구조이다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다. 고속의 검색 동작 뿐만 아니라 레코드 접근과 관련 효율적인 순서 매김 동작에 대한 기초를 제공한다. 인덱스를 저장하는 데 필요한 디스크 공간을 보통 테이블을 저장하는 데 필요한 디스크 공간보다 작다. 왜냐하면 보통 인덱스는 키-필드만 갖고 있고, 테이블의 다른 세부항목들을 갖고 있지 않기 때문이다. 관계형 데이터베이스에서는 인덱스는 테이블 부분에 대한 하나의 사본이다. 인덱스는 고유 제약 조건을 실현하기 위해서도 사용된다. 고유 인덱스는 중복된 항목이 등록되는 것을 금지하기 때문에 인덱스의 대상인 테이블에서 고유성이 보장된다.

* 데이터 조작어(DML:Data Manipulation Language)

-- 정의된 데이터베이스에 입력된 레코드를 조회하거나 수정하거나 삭제하는 등의 역할을 하는 언어를 말한다. 쉽게 말하면, 테이블에 있는 행과 열을 조작하는 언어라고 생각하면 된다. 데이터베이스 사용자가 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어이다.

[DML의 종류]

  • SELECT : 데이터를 조회하는 역할을 한다.
  • INSERT : 데이터를 삽입하는 역할을 한다.
  • UPDATE : 데이터를 수정하는 역할을 한다.
  • DELETE : 데이터를 삭제하는 역할을 한다.

* 데이터 정의어(DDL:Data Definition Language)

-- 데이터베이스를 정의하는 언어이며, 데이터를 생성하거나 수정, 삭제 등 데이터의 전체 골격을 결정하는 역할의 언어를 말한다.

[DDL의 종류]

  • CREATE : 데이터베이스, 테이블 등을 생성하는 역할을 한다.
  • ALTER : 테이블을 수정하는 역할을 한다.
  • DROP : 데이터베이스, 테이블을 삭제하는 역할을 한다.
  • TRUNCATE : 테이블을 초기화시키는 역할을 한다.

* 데이터 제어어(DCL:Data Control Language)

-- 데이터를 제어할 때 사용하는 언어이며, 데이터베이스에 접근하거나 객체에 권한을 주는 등의 역할의 언어를 말한다. 데이터의 보안, 무결성, 회복 등을 정의하는데 사용한다.

[DCL의 종류]

  • GRANT : 특정 데이터베이스 사용자에게 특정 작업에 대한 수행할 수 있는 권한을 부여한다.
  • REVOKE : 특정 데이터베이스 사용자에게 특정 작업에 대한 권한을 박탈, 회수한다.
  • COMMIT : 트랜잭션의 작업이 정상적으로 완료되었음을 관리자에게 알려준다.
  • ROLLBACK : 트랜잭션의 작업이 비정상적으로 종료되었을 때, 원래의 상태로 복구한다.

* Join문

-- 두 개 이상의 테이블을 결합항 데이터를 검색하는 방법(문법)이다. 관계형 데이터베이스에서는 중복 데이터를 피하기 위해 데이터를 여러 테이블로 나누어 저장하는데 이렇게 분리되어 저장된 데이터에서 원하는 결과를 다시 도출하기 위해서는 여러 테이블을 조합할 필요가 있다.

[JOIN문의 종류]

  • 1) 내부 조인(INNER JOIN) : JOIN 조건문에 따라 2개의 테이블(A,B)의 컬럼을 합쳐 새로운 테이블을 생성한다. 즉, 교차 조인을 한 결과에 조인 조건문을 충족시키는 레코드를 반환한다.
    (1) 자연 조인(NATURAL JOIN) : 두 테이블의 컬럼명이 같은 기준으로 조인 조건문이 암시적으로 일어나는 내부 조인이며 동등 조인의 한 유형이다.

  • 2) 외부 조인(OUTER JOIN) : 내부 조인과 반대로 조건문에 만족하지 않는 행도 표시해준다. 조인을 했을 때, 한쪽의 테이블에 데이터가 없어도 조인 결과에 포함시킨다.
    (1) LEFT OUTER JOIN : 테이블 A의 모든 데이터와 테이블 B와 매칭이 되는 레코드를 포함하는 조인이다.
    (2) RIGHT OUTER JOIN : 테이블 B의 모든 데이터와 테이블 A와 매칭이 되는 레코드를 포함하는 조인이다.

* PostgreSQL

-- 오픈 소스 객체-관계형 데이터베이스 시스템(ORDBMS)으로, 엔터프라이즈급 DBMS의 기능과 차세대 DBMS에서나 볼 수 있을 법한 기능들을 제공한다. 약 20여 년의 오랜 역사를 갖는 PostgreSQL은 다른 관계형 데이터베이스 객체를 사용자가 임의로 만들 수 있는 기능을 제공함으로써 마치 새로운 하나의 프로그래밍 언어처럼 무한한 기능을 손쉽게 구현할 수 있다.

* 정규화(Nomalization)

-- 관계형 데이터베이스의 설계에서 중복을 최소화하게 데이터를 구조화하는 프로세스를 정규화라고 한다. 데이터베이스 정규화의 목표는 이상이 있는 관계를 재구성하여 작고 잘 조직된 관계를 생성하는 것에 있다. 일반적으로 정규화란 크고, 제대로 조직되지 않은 테이블들과 관계들을 작고 잘 조직된 테이블과 관계들로 나누는 것을 포함한다. 정규화의 목적은 하나의 테이블에서 테이블의 삽입, 삭제, 변경이 정의된 관계들로 인하여 데이터베이스의 나머지 부분들로 전파되게 하는 것이다.

* 이상(Anomaly)

-- 정규화를 거치지 않으면 데이터베이스 내에 데이터들이 중복되어 릴레이션 조작 시 문제가 발생하는데 이를 이상이라고 한다.

[이상(Anomaly)의 종류]

  • 1) 삽입 이상(Insert Anomaly) : 릴레이션에 데이터를 삽입할 때 의도와는 상관없이 원하지 않은 값들도 함께 삽입하는 현상
  • 2) 삭제 이상(Delete Anomaly) : 릴레이션에 데이터를 삭제할 때 의도와는 상관없는 값들도 함께 삭제하는 연쇄삭제 현상
  • 3) 갱신 이상(Update Anomaly) : 릴레이션에서 튜플에 있는 속성 값을 갱신할 때 일부 튜플의 정보만 갱신되어 정보에 모순이 생기는 현상
수정일자 2021-09-16
profile
Back-End Engineer

0개의 댓글

관련 채용 정보