역사 데이터베이스

pattern
최원재 (토론 | 기여) 사용자의 2022년 3월 21일 (월) 07:40 판

이동: 둘러보기, 검색

데이터베이스

정의

  • 컴퓨터 시스템에 전자적으로 저장되는 구조화된 정보 또는 데이터의 조직화된 모음.
  • 데이터베이스 관리 시스템(DBMS)에 의해 제어됨.
  • 데이터와 DBMS를 하나로 묶어 데이터베이스 시스템이라고 하며 간략하게 데이터베이스라고도 함.
  • 대부분의 데이터베이스에서 데이터는 처리 및 데이터 쿼리를 효율적으로 수행하기 위하여 테이블에서 행과 열로 모델됨.
  • 데이터를 액세스, 관리, 수정, 업데이트, 제어, 구성하기 위해서 데이터베이스 작성 및 쿼리에 SQL(Structured Query Language)을 사용함.

역사

  • 1980년대가 되면서 관계형 데이터베이스가 등장, 인기를 얻음.
  • 1990년대에 객체 지향 데이터베이스가 등장.
  • 최근 NoSQL 데이터베이스가 등장.

엑셀

  • 엑셀(Excel)은 스프레드시트(Spread Sheet)임.
  • 사용자 한 명을 위해 설계되었음.
  • 복잡하고 많은 데이터 조작을 수행할 필요가 없는 사용자에게 적합함.
  • 데이터베이스를 사용하면 여러 사용자가 동시에 로직과 언어를 사용하여 데이터를 쿼리할 수 있음.

용어


관계형 데이터베이스

  • 관계형 DBMS(Relational DBMS)는 줄여서 RDBMS.
  • 대부분의 DBMS가 RDBMS 형태임.
  • RDBMS의 데이터베이스는 테이블(table)이 최소 단위임.
  • 이 테이블은 하나 이상의 열(column)과 행(row)으로 이루어져 있음.
  • 테이블의 행은 레코드(record)라고 부르기도 함.
  • 레코드 하나 = 데이터 한 건.
  • 하나의 테이블은 적게는 수백개, 많게는 수백만 개의 레코드를 갖게 됨.

RDBMS종류

  • Oracle DB - 뛰어난 기술력과 안정성. 주로 은행 업계에서 사용. 유료.
  • MySQL - 오픈 소스. 웹 개발, 특히 PHP를 이용한 개발에 흔히 쓰인다.
  • Maria DB - 오라클이 MySQL을 인수하면서 라이선스 문제가 불확실해지자, 이에 반발하여 만들어짐.
  • PostgreSQL - 버클리 대학의 프로젝트 오픈 소스 ORDBMS. (ORDBMS: 객체-관계형 데이터베이스 관리 시스템)
  • SQL Server - 마이크로소프트가 개발한 RDBMS. 윈도우 시스템 환경 지원.
  • SQLite - DB를 서버가 아닌 파일로 저장하는 DBMS이다. 가벼운 DB를 저장하는 목적으로 설계됨. 안드로이드, iOS, mac OS에서 사용됨.

SQL

  • SQL은 데이터를 쿼리, 조작 및 정의하고 액세스 제어를 제공하기 위해 거의 모든 관계형 데이터베이스에서 사용되는 프로그래밍 언어.
  • SQL은 1970년대에 IBM에서 처음 개발.
  • IBM, Oracle, Microsoft에서 확장 프로젝트를 진행하였음.

마루테크놀로지

OOP

  • Object Oriented Programming
  • 절차 지향 프로그래밍

let baseSalary = 30_000; let overtime = 10; let rate = 20; function getWage(baseSalary, overtime, rate){ return baseSalary + (overtime * rate); }

  • 객체 지향 프로그래밍

let employee = { baseSalary :30_000, overtime: 10, rate: 20, getWage: function(){ return this.baseSalary + (this.overtime * this.rate); } }; employee.getWage();

Schema

  • 데이터베이스 스키마(database schema)는 데이터베이스에서 자료의 구조, 자료의 표현 방법, 자료 간의 관계를 형식 언어로 정의한 구조.
  • 데이터베이스 DBMS이 주어진 설정에 따라 데이터베이스 스키마를 생성함.
  • 데이터베이스 사용자가 자료를 저장, 조회, 삭제, 변경할 때 DBMS는 자신이 생성한 데이터베이스 스키마를 참조하여 명령을 수행함.
  • 스키마는 데이터베이스를 구성하는 데이터 개체의 전반적인 명세(Specification)를 기술(Description)하는 메타데이터(MetaData)의 집합.
  • 데이터 개체를 구성하고 있는 속성들에 데이터 타입이 정의되어 구체적인 데이터 값을 갖고 있는 것.
  • 스키마는 3층 구조임.
스키마의 3 계층 외부 스키마 = 서브 스키마 = 사용자 뷰
  • 스키마, 개념 스키마, 내부 스키마 스키마는 데이터 사전에 저장되며 메타 데이터MetaData라고도 한다.
  • 데이타베이스를 설계, 생성하는 과정에서 각각의 테이블에 필요한 컬럼의 타입과 네이밍을 결정하는 것을 데이터베이스 스키마라고 함.
  • 데이터베이스의 구조를 전반적으로 기술한 것.
  • 구체적으로 데이터베이스를 구성하는 데이터 레코드의 크기, 키의 정의, 레코드 간의 관계 등을 정의한 것.
  • 사용자의 관점에 따라 외부 스키마, 개념 스키마, 내부 스키마로 구분함.
  • DBMS는 외부 스키마에 명세된 사용자의 요구를 개념 스키마 형태로 변환하고, 이를 다시 내부 스키마 형태로 변환함.

외부스키마 : 개인의 입장, '서브스키마'라고도 한다, 사용자 뷰를 가리킨다. 사용자의 입장에서 정의한 데이터베이스의 논리적 구조. 데이터들을 어떤 형식, 구조, 화면을 통해 사용자에게 보여줄 것인가에 대한 명세를 말하며 하나의 데이터베이스에는 여러개의 외부 스키마가 있을 수 있다. 일반 사용자에게는 질의어를 이용해 DB를 쉽게 사용할 수 있도록 하고 응용 프로그래머는 언어를 사용해서 DB에 접근하도록 한다.

하나의 외부스키마는 여럿이 공유 가능하며, 하나의 DB시스템에 여러 개의 외부스키마가 존재 가능

내부스키마 : 시스템 프로그래머나 설계자의 관점에서 바라보는 스키마. 데이터베이스가 어떻게 저장장치에 저장될 지에 대한 명세. 물리적인 저장장치와 데이터베이스 간의 관계를 정의하므로 시스템 프로그래머나 시스템 설계자가 보는 관점의 스키마이다.

데이터베이스의 물리적 구조를 가리킴(= 실제 저장방법을 기술하는 물리적인 저장장치와 관련됨) 

개념스키마 : 조직 전체의 입장, 전체적인 뷰를 가리킨다. 조직체 전체를 관장하는 입장에서 DB를 정의한 스키마. DB에 대한 모든 논리적 구조를 기술하기 때문에 데이터베이스에 하나만 존재하며, 통상 스키마 라고 하면 개념 스키마를 일컫는다.

개체간의 관계와 제약조건을 나타내고, 데이터베이스의 접근권한/보안/무결성 규칙에 대한 명세를 정의함, 
  • 일반적으로 '스키마'라는 내부스키마를 가리킴.
  • 내부스키마는 DBA가 만듦, 데이터베이스의 전체적인 구조로써 하나만 존재해야 함


View

  • 데이터베이스 시스템의 뷰(view)는 다른 릴레이션으로부터 유도된 릴레이션(derived relation)으로서 ANSI/SPARC 3단계 아키텍처의 외부 뷰와 다름.
  • 뷰는 관계 데이터베이스 시스템에서 데이터베이스의 보안 메카니즘
  • 복잡한 질의를 간단하게 표현하는 수단으로서, 데이터독립성을 높이기 위해서 사용됨.
  • 시스템 카탈로그는 시스템내의 객체(기본 릴레이션, 뷰, 인덱스, 사용자, 접근 권한 등)에 관한 정보를 포함.
  • 시스템 카탈로그를 적절히 활용하면 원하는 릴레이션을 데이터베이스에서 찾고, 그 릴레이션에 어떤 애트리뷰트들이 들어 있으며, 각 애트리뷰트의 데이터 타입은 무엇인가 등을 쉽게 파악할 수 있음.
  • 시스템 카탈로그는 데이터베이스를 효율적으로 활용하는데 크게 도움이 됨.


System catalogue

  • 시스템 그 자체에 관련이 있는 다양한 객체에 관한 정보를 포함하는 시스템 데이터베이스.
  • 시스템 카탈로그 내의 각 테이블은 사용자를 포함하여 DBMS에서 지원하는 모든 데이터 객체에 대한 정의나 명세에 관한 정보를 유지 관리하는 시스템 테이블임.
  • 데이터 정의어의 결과로 구성되는 기본 테이블, 뷰, 인덱스, 패키지, 접근 권한 등의 데이터베이스 구조 및 통계 정보를 저장함.
  • 카탈로그들이 생성되면 자료사전에 저장됨.
  • 좁은 의미로는 카탈로그 = 자료 사전.
  • 카탈로그에 저장된 정보를 메타 데이터라고 함.

카탈로그의 특징

1. 카탈로그 자체도 시스템 테이블로 구성되어 있어 일반 이용자도 SQL을 이용하여 내용을 검색해볼 수 있다. 2. INSERT, DELETE, UPDATE문으로 카탈로그를 갱신하는 것은 허용되지 않는다. 3. 데이터베이스 시스템에 따라 상이한 구조를 갖는다. 4. 카탈로그는 DBMS가 스스로 생성하고 유지한다. 5. 카탈로그의 갱신 : 사용자가 SQL문을 실행시켜 기본 테이블, 뷰, 인덱스 등에 변화를 주면 시스템이 자동으로 갱신한다. 6. 분산 시스템에서의 카탈로그 : 보통의 릴레이션, 인덱스, 사용자 등에 정보를 포함할 뿐 아니라 위치 투명성 및 중복 투명성을 제공하기 위해 필요한 모든 제어 정보를 가져야 한다.

시스템 카탈로그의 종류

SYSTABLES : 기본 테이블 및 뷰 테이블의 정보를 저장하는 테이블 SYSCOLUMNS : 모든 테이블에 대한 정보를 열(속성) 중심으로 저장하는 테이블 SYSVIEW : 뷰에 대한 정보를 저장하는 테이블 SYSTABAUTH : 테이블에 설정된 권한 사항들을 저장하는 테이블 SYSCOLAUTH : 각 속성에 설정된 권한 사항들을 저장하는 테이블

Graph Modeling

  • 칠판에 그려둔 엔티티(entity) 간의 관계를 데이터베이스상으로 가지고 옴.

Neo4j