데이터베이스(2) 서버, 관계형 데이터베이스, 데이터베이스 관리 제품

미남로그·2021년 8월 25일
0

데이터베이스, 서버, 데이터만 관리하는 컴퓨터

class를 활용해서 가장 높은 월급을 계산하는 프로그램을 만들었습니다.

class employee:
    def __init__(self,  name, division, jobgrade, years, basic):
    	self.name = name
        self.division = division
        self.jobgrade = jobgrade
        self.yeras = years
        self.basic = basic
        self.salary = 0
	
    def get_name(self):
    	return self.name
    def get_division(self):
    	return self.division
    def get_jobgrade(self):
    	return self.jobgrade
    def get_years(self):
    	return self.years
    def get_basic(self):
    	return self.basic
    def get_salary(self):
    	self.salary = self.basic + (self.basic * self.years * 0.1)
        return self.salary
        
        
def make_employee(inputdata):
    name, division, jobgrade, year, basic = inputdata.split(',')
    return Employee(name, division, jobgrade, year, basic)
    
def summarize():
    file_path = os.getenv("HOME") + '/aiffel/data_handling/data/employeefile.txt'
    inputfile = open(file_path, 'r')
    highest = make_employee(inputfile.readline())
    for l in inputfile:
    	e = make_employee(l)
        if e.get_salary() > highest.get_salary():
    		highest = e
    inputfile.close()
    
    print("The name of the highest slary employee is: ", highest.get_name())
    print("Years of service: ", highest.get_yours())
    print("Division: ", highest.get_years())
    print("Salay: ", highest.get_salary())

처음엔 데이터를 관리하고 연산하는 작업을 모두 하나의 컴퓨터에서 실행하였습니다. 정보가 많아질 수록 파일의 크기가 커지기 때문에 오직 데이터만을 저장하는 공간을 만들었습니다. 흔히 물리적 컴퓨터에 방점을 두어 데이터 서버 컴퓨터 또는 추상적인 정보의 집합에 방점을 두어 데이터베이스라고 합니다.

구조화하면 아래의 이미지 block diagram과 같습니다. 이터만을 위한 데이터 서버 컴퓨터가 있고, 해당 서버에 접근하는 전용 프로그램을 이용해서 데이터를 읽고 수정하는 것입니다.

이렇게 데이터를 요청하는 "쿼리(query)"를 작성하기 위한 언어 중 하나가 SQL(Structured Query Language)입니다. SQL은 구조적 질의어(=데이터 서버에게 원하는 정보를 일목요연하게 만해주는 것)을 뜻하며, 일종의 프로그래밍 언어로 발전해 왔습니다.

소프트웨어 요소

각 서버를 만드는 일이 어떻게 분업이 되어 있을지 은행 거래 시스템을 예로 생각해 본다면,

서비스 개발팀은 데이터 서버 컴퓨터를 따로 두어 데이터를 관리하고, 사용자가 조작할 수 있는 화면을 만들고, 사용자가 데이터를 조회하고 거래도 할 수 있게 만들어야 합니다. 이 모든 거래 정보는 데이터 서버 컴퓨터에 저장되어야 합니다.

사용자는 소프트웨어 어플리케이션을 설치해서 사용합니다. 편의성 어플리케이션이 사용자가 직접 사용하는 프로그램(프론트엔드)과 이 프로그램을 지원해주기 위한 서버(백엔드)를 모두 통칭한다고 가정합시다. 개발자라고 하면 이 소프트웨어 어플리케이션을 개발하는 사람들을 뜻합니다.

그리고 DBA(Database Architect)는 데이터를 어떻게 관리할지, 어떤 항목으로 관리할지 등을 설계하고 데이터베이스에 접근하기 위한 쿼리를 작성합니다.

이때 설계하는 데이터베이스의 구조를 전문 용어로 스키마(schema)라고 합니다.

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

[이미지 출처: https://saintbinary.tistory.com/12]

정의

키(key)와 값(value)들의 간단한 관계를 테이블화 시킨 매우 간단한 원칙의 전산정보 데이터베이스이다. 이 모델은 데이터를 컬럼(column)과 로우(row)를 이루는 하나 이상의 테이블(또는 관계)로 정리하며, 고유 키(Primary key)가 각 로우를 식별한다. 로우는 레코드나 튜플로 부른다. 일반적으로 각 테이블 관계는 하나의 엔티티 타입(고객이나 제품과 같은)을 대표한다. 로우는 그 엔티티 종류의 인스턴스(예: "Lee" 등)를 대표하며 컬럼은 그 인스턴스의 속성이 되는 값들(예: 주소나 가격)을 대표한다.

출처: 관계형 데이터베이스

관계형 데이터베이스란 데이터를 "표" 형태로 표현하고 어떤 관계가 있는 항목끼리 묶어서 관리하는 체계를 뜻합니다.

[출처 : https://pediaa.com/what-is-the-difference-between-relational-and-nonrelational-database/]

RDB에서 데이터를 관계(Relation)으로 정리한다는 말의 의미는 Attribute와 Tuple로 이루어진 Relation으로 정리한다는 뜻입니다. 이 구조는 table과 비슷합니다. 데이터 간의 관계를 더 잘 활용 수 있는 형태로 표를 만든 것입니다. 이때 Attribute는 테이블의 column(열) 즉 정보의 속성 항목이 되며, Tuple이란 테이블의 row(행) 즉 테이블의 개별 데이터가 될 것입니다.

SQL 용어와 Realational DB 용어

데이터베이스 관리 제품

  • Oracle (오라클에서 개발)
  • DB2 (IBM에서 개발)
  • SQL Server (Microsoft에서 개발)
  • PostgreSQL (오픈소스)
  • MySQL (오픈소스)
  • SQLite (오픈소스)
profile
미남이 귀엽죠

0개의 댓글