본문 바로가기
database

2022.12.29 데이터베이스 첫걸음 2장 정리

by 해맑은 코린이 2022. 12. 29.

바로 또 왔다!

후ㅜ후후후후 올해 끝나기 전까지 과연 4장까지 정리할 수 있을 것인가... 왜냐.. 올해 안에 나는 100개의 포스팅을 채우고 싶기 때문,,, 얘가 98개째라 4장까지 요약하면 딱 100개 된다 이거슨 운명이다! 달려보자고

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=94059951

 

 

데이터베이스 첫걸음

데이터베이스와 관련이 적은 일반인도 읽을 수 있게 구성하였다. 이 책은 실습과 강의로 나누어 설명한다. 데이터베이스를 구성하는 다양한 요소를 먼저 확인(실습)한다. 그런 다음 그 요소에

www.aladin.co.kr

 

 

이 책입니다 홀홀 괜찮으시다면..^^ 1장과 함께 ..치얼스

https://korinkorin.tistory.com/97

 

2022.12.28 데이터베이스 첫걸음 1장 요약

7개월만인가... 5월달을 끝으로 포스팅을 안했는데도 꾸준히 왜 100명씩 방문해주시는 걸까요..의문입니다만 나중에 연말 전에 쓸 것 같지만, 퇴사를 한 기념으로(?) ㅎㅎ 데이터베이스 기초 책을

korinkorin.tistory.com

 

 

2장. 관계형 데이터베이스란

2장은 가장 주류를 이루는 관계형 데이터베이스의 개요와 간단한 SQL 언어의 기본에 대해 설명하고 있다.

 

DBMS(Data Base Management System)

데이터베이스 관리 시스템.

여러 기업에서 DBMS 를 제공하고 있고, 매일 버전업 되고 있다.

대표적인 DBMS 로는 Oracle, SQL Server, DB2, MySQL, PostgreSQL,Firebird 등이 있다.

 

다 한번씩 들어본 느낌이네... 정말 어디선가...들어는 봄 ㅎ

 

 

관계형 데이터베이스란(Relational DataBase)

줄여서 'RDB' 라고도 표기.

관계라는 단어가 무엇을 의미하는지는 정확히 정의하고 이해하는 것은 쉽지 않지만, 여기서 말하는 Relational 은 2차원 표를 표기할 때 사용하는 단어. (입문 단계에서는 두 가지가 동일하다고 생각해도 괜찮음.)

엔지니어가 보기에 가장 익숙한 2차원 표는 Excel 이나 Google Docs 로 대표되는 스프레드 시트이다.

단적으로 정리하자면, 데이터를 2차원 표를 사용해 관리하는 데이터베이스의 개념이라고 정리할 수 있겠다.

관계형 데이터베이스의 가장 큰 이점은 사람들이 자연스럽고 직관적으로 이해하기 쉬운 형식으로 프로그래밍 언어를 사용하지 않아도 데이터를 관리할 수 있다는 점이다. 이 때문에 데이터베이스 사용자층이 단숨에 넓어지게 되는데, 이를 가능하게 한 것이 SQL 언어이다.

 

 

SQL(Structured Query Language) 이란

관계형 데이터베이스가 데이터를 조작하기 위해 준비한 언어.

관계형 데이터베이스에는 여러 가지 소프트웨어 제품이 있는데, 그 전체에서 공통으로 SQL을 사용할 수 있다.

SQL 은 여러 특징이 있지만, SQL 문에서 받는 첫인상은 영어 문장과 매우 닮아 있다는 것이다. 예로 주소록에서 '주소가 서울시인 사람의 이름을 검색한다.' 라는 조작을 SQL 을 사용하여 실행하면 다음과 같이 나타낼 수 있다.

SELECT 이름
    FROM 주소록
    --여기서 %는 부분 일치 검색을 수행하기 위한 키워드
    WHERE 주소 LIKE '%서울시%';

 

굉장히 직관적이면서 일반 프로그래밍 언어와 비교하면 간결히 기술되어 있으며, 통상적으로 프로그래밍 언어에서 사용되는 반복문(for,while) 이나 조건문(if,case)를 사용하지 않아도 데이터 조작을 할 수 있는 것이 큰 이점이다.

 

 

SQL이 추구한 '이상'

데이터베이스에는 4가지 기본조작(검색,등록,갱신,제거)가 있는데, SQL 에서는 다음과 같은 명령어를 사용한다.

- SELECT (검색)

- INSERT (등록)

- UPDATE (갱신)

- DELETE (제거)

 

이렇듯 SQL이 추구하는 '이상' 이란, 일상언어에 가까운 표현을 가지고 자연스럽게 모국어를 말하는 것처럼 사용할 수 있게 하는 것이다.

영어가 모국어가 아닌 한국 사람에게는 조금 와닿지 않을 수도..

 

 

테이블 , 행, 열의 의미

 

- 테이블

관계형 데이터베이스에서 2차원 표는 table 로 불린다.

앞의 SELECT문의 예시에서 테이블이란 주소록이 테이블의 이름이다. 

테이블은 관계형 데이터베이스에서 데이터를 관리하기 위한 유일한 단위이므로, '어떤 테이블에 어떤 데이터를 포함하는가'라는 것은 시스템의 기능을 좌우하는 중요한 의미.

예를 들어, 1개의 테이블에 너무 많은 정보를 채워넣는다고 하면 정보의 정합성(어떤 데이터들이 값이 서로 일치함. 참고로, 데이터 무결성은 데이터 값이 정확하고 완전해야 함을 의미.)을 유지 관리하기가 어렵다. 또한, 데이터를 너무 엄격하게 분산시키면 성능이 나빠진다.

이처럼 테이블 설계는 데이터베이스 설계에서 가장 주의해야하는 부분.

 

- 열과 행

테이블은 2차원의 축이 있어서 일반적인 2차원 표와 동일하게 열(column) 과 행(row) 이 존재한다.

열과 행이 교차하는 부분을 가리키는 특정 용어는 관계형 데이터베이스에는 없다. Excel 에서는 이를 셀이라 부르니 참고.

 

 

이렇듯 단순히 우리가 자주 쓰던 용어들이라 익숙할지 모르겠으나, 입문자가 포기하기 쉬운 포인트가 있다.

관계형 데이터베이스 제품이 복수로 있다는 것이 큰 이유이다. 관계형 데이터베이스에 접촉하고 있다는 것은 그런 제품을 사용하고 있다는 것을 의미한다. 이 책에서는 실습 환경을 'NOSQL' 로 다루고 있지만, 이거 또한 수많은 제품 중 하나이기 때문에 동일한 개념이나 기능이라도 제품에 따라 다른 이름을 부여하기도 하고 같은 이름이라도 조금씩 기능적 차이가 있어 특정 제품의 용어나 개념 체계에 익숙해져서 오히려 데이터베이스의 본질을 습득하는 데 방해가 되는 경우가 있다.

 

책이 굉장히 친절한데.. 사실 이건 프로그래밍 언어를 조금이라도 접해본다면 똑같은 얘기로 나에게 다가왔다. 이또한 기존에 쓰던 제품에서 다른 제품으로 갈아타는데도 영향이 생긴다는 말도 언급해주고 있으니 우리는 친절히 천천히 책을 따라가보자! 

 

이 책에서는 이러한 이유들을 언급하며 개념이나 용어 이해가 중요함을 다시 한 번 강조하고 있다. 

 

 

 

관계형 데이터베이스를 다루기 위한 사전 지식

 

1. 관계형 데이터베이스의 소프트웨어

관계형 데이터베이스의 대표적인 소프트웨어 제품으로는 Oracle, MySQL, SQL Server 등이 있고, 일정 요건 아래에서는 무료로 사용 가능한 MySQL 이나 PostgreSQL 과 같은 오픈 소스를 웹에서 다운로드 하여 사용한다.

 

 

2. DBMS 와 데이터베이스의 차이

1장에서 설명했듯이, 데이터베이스의 기능을 제공하는 소프트웨어를 DBMS(DataBase Management System) 이라고 하는데, 말그대로 데이터베이스 관리 시스템이다. 특히 관계형 데이터베이스에 한정하여 해당 용어를 사용할 때에는 RDBMS 라고 부른다.

실제 개별 환경에서는 데이터베이스와 DBMS라는 단어는 구분되지 않고 사용되기도 하지만, 엄밀히 따지면 둘은 달르다.

'데이터베이스' 는 기능이나 구조를 나타내는 추상적인 개념. 'DBMS'는 그것을 실현하기 위해 작성된 구체적인 소프트웨어를 가리킨다. 

예를 들어 MySQL은 구체적으로 조작하는 것이 가능한 물리적 실체를 동반한 제품(이것을 구현이라고 한다.) 이지만, 데이터베이스는 어디까지나 기능의 집합을 나타내는 추상적 개념이다.

 

 

3. 소프트웨어와 데이터베이스의 관계

알고 있겠지만, 시스템은 단순히 데이터베이스만으로 구축할 수 있는 것이 아니다. 다른 여러 가지 소프트웨어와 조합해서 만들어야 하는데, 이 작업을 SI(System Intergration) 라고 부른다. 시스템의 목적이나 규모에 따라 다르지만 조합되어 사용되는 소프트웨어는 크게 3가지가 있다. (운영체제, 미들웨어, 애플리케이션)

 

이 3가지 소프트웨어는 계층성(운영체제 - 하, 미들웨어 - 중, 애플리케이션 - 상) 이 있으며, 한 레이어(계층)의 소프트웨어가 동작하지 않으면 상위 레이어의 소프트웨어는 설치해도 동작하지 않거나 설치조차 할 수 없는 제약이 발생한다.

 

DBMS 는 이 중 미들웨어에 위치하며, 미들웨어라는 이름에서 알 수 있듯 운영체제와 애플리케이션의 중간에 위치한다.

'중간' 이란 계층에서 봤을 때 위치적인 요인 기능적으로 양쪽의 성질을 겸비해서 갖추고 있다는 의미도 있다.

 

이 밑은 3가지의 특성과 관계에 대해 설명했다.


- 운영체제(OS, Operating System)

시스템을 동작하게 하기 위한 일종의 토대가 되는 기능을 제공하는 소프트웨어.

우리가 사용하는 PC,휴대폰에 반드시 탑재되어 있으며 대표적인 OS로는 Windows, OS X, iOS, Android 등이 있다.

상용 시스템을 개발할 때 자주 사용되는 OS는 다음 3종류 이다.

 

Windows : Windows Server

오랜 기간 소비자용 데스크톱의 OS 로써 주류의 지위를 계속해서 점해왔던 Windows XP 를 시작으로 그 뒤를 이은 Windows 7,8 ~~ 등 GUI (Graphical User Interface) 에 의한 직관적인 조작을 할 수 있는 것이 특징. 즉 마우스로 아이콘이나 윈도를 클릭하여 조작이 가능하다.  상용 시스템 용도로도 Windows 계열의 OS가 있다.

 

Linux  : Red Hat, CentOS

UNIX : HP-UX, AIX, Solaris

Liniux 와 UNIX 를 개인 용도로 사용하는 사람은 많지 않다. 그런 의미에서 이 2가지 OS는 상용 시스템이라는 비즈니스용에서 주로 사용하는 OS이다. 둘 다 기본으로 키보드를 이용하여 명령 받아 조작하는 인터페이스를 가진 OS이고 조작 방법도 거의 비슷하다. (Windows와 비슷한 GUI가 있지만, 별로 사용하지는 않는다.) 이 둘은 실제 작업하는 화면을 자세히 보지 않고는 구분하기 어려운데, 이는 Linux가 UNIX의 사양을 기반으로 한 무료 오픈소스 소프트웨어라서 그 뿌리가 같기 때문.

또한 Liniux 와 UNIX는 카테고리 이름이며 실제 소프트웨어 제품 즉, 구현물은 여러 가지가 있다.

Debian , Ubuntu 등 수많은 제품이 있으며, UNIX는 기업 독자적인 제품을 가지고 있는 경우가 많은데, IBM 사의 'AIX' , HP 사의 'HP-UX'  Oracle 사의 'Solaris' 와 같은 것이 대표적이다.

OS에서도 추상(개념) 과 구상(구현) 계층의 구별이 있는 것에 유의하자.

 

 

- 미들웨어 

미들웨어는 직역하면 '중간 소프트웨어' 고, 데이터베이스는 여기에 속하는 소프트웨어이다. 즉 데이터베이스는 OS에 설치하여 움직이는 것을 의미한다.(이를 'OS에서 동작한다'라고 말한다.)

여기까지 왔다면, OS와 데이터베이스가 복수 개의 구현물이 존재한다면 어떠한 구현물들의 조합을 선택해야할까? 라는 의문이 들기 시작한다. 기본적으로 데이터베이스의 구현체는 대부분 OS에 대응해서 만들었기 때문에 기술적으로 가능한 선택지의 수는 매우 많다.

예를 들어 Windows + Oracle , HP-UX + Oracle , Red Hat + MySQL 의 조합 등이 가능하다. (가능하지 않은 예외적인 조합도 당연 존재한다.) 

 

이런 OS와 DBMS의 조합을 선택할 때는 주로 다음과 같은 점을 고려하여 선택한다.

예산

제품기능

개발자와 운용자의 기술 조합

 

OS도 DBMS도(상업적 용도로 사용할 수준) 무료로 구할 수도 없고 비용도 선택사항에 따라 상당한 변동이 존재한다. OSS(오픈소스 소프트웨어) 처럼 일정 요건을 충족하면 무료로 이용할 수 있는 소프트웨어도 있지만, 실제로는 유료 서비스를 받지 않으면 상용으로 운용하기에는 어렵다.

 

또한, 제품에 따라 기능이나 조작 방법이 다른 것도 OS나 DBMS의 공통 특징이다.

이것은 개발자의 기술 조합과 깊은 관계가 있는데 Liniux 계열과 UNIX 계열은 기능이나 동작이 비슷해서 OS를 변경해도 다루는 방법이 비슷하지만, Windows 계열의 OS는 조작 방법이 매우 다르다. 마찬가지로 DBMS에서도 Oracle에 익숙한 엔지니어가 MySQL로 갈아탄다면 바로 능숙하게 쓰지는 못할 것이다. 

 

이렇게 조합의 자유도가 높은 것은 OS나 DBMS가 가능에 대한 표준 규칙을 따르고 있고 어느정도의 이식성이 있기 때문이다. 그래서 하나의 조합에서 다른 조합으로 시스템을 변경하는 일도 드물지 않은데, 이를 마이그레이션(Migraiton) 이라고 한다. 하지만 두 가지 전부 마이그레이션을 이행하게 된다면 위험성이 가장 높기도 하다.

 

 

아까 말했던 예외의 조합에 대해 덧붙이자면, 기술적인 관점에서 한 DBMS에서 하나의 OS에 대응하는 형태로 만들어졌다면 다른 OS에서는 해당 DBMS를 사용할 수 없다. 이런 조합의 이유에는 비즈니스 전략에 따라 한 회사에서 OS, DBMS를 모두 개발, 판매할 경우 다른 경쟁사를 대비하여 자사의 제품 경쟁력을 높이기 위한 이유라고 책에서는 기술하고 있다. 하지만 이또한 해당 제품을 개발한 회사마다 방침이 나뉘어져 있어 나름의 흥미(?) 를 끌만한 대목인 것 같다.

 

 

 

-애플리케이션 

애플리케이션이란 업무용 기능을 가진 프로그램된 소프트웨어로, 사용자가 가장 빈번하게 조작하는 소프트웨어이다. 수많은 업무들은 시스템화 되어 있고, 업무 흐름은 프로그램으로 자동화되어 있다. 대표적으로 '회계,재무, 세금처리, 소매, 재고관리,고객관리, 주문관리' 등을 들 수 있다. 스마트폰에 있는 열러가지 소프트웨어도 이러한 애플리케이션에 해당된다. 

이런 업무에서 기존 인력에 의해 운영되던 처리(이를 비즈니스 로직 또는 비즈니스 룰이라고 한다.)를 프로그램으로 자동화하여 효율성을 높이고 비용을 줄일 수 있는 것이 시스템화의 장점 중 하나이다.

 

애플리케이션을 실현하는 수단으로는 크게 2가지가 있다.

스크래치(Scratch)

이는 Java, C언어와 같은 프로그래밍 언어를 사용하여 프로그램을 직접 작성하는 방법이다.

 

패키지(Package)

기존에 있던 애플리케이션 소프트웨어를 사는 방법

 

이 두 가지의 방법은 시스템 개발의 구성 단계에서 어느 것을 택할지로 자주 논쟁이 되는 부분으로 스크래치는 직접 만들기 때문에 업무의 세세한 부분까지 시스템에서 대응할 수 있어 꼼꼼한 서비스를 할 수 있는 장점이 있지만, 세세한 대응을 시작하면 한도 끝도 없는 경우가 있어 개발 비용이 커질 수 있다는 단점이 있다. 반대로 스크래치는 극단적으로만 본다면 기존 제품을 설치할 뿐이라서 일반적으로 개발 비용을 줄일 수 있다. 하지만 패키지의 기능이 부족하여 업무 흐름을 실현할 수 없는 경우에는 커스터마이징에 따른 추가 개발이 필요하게 되어 막상 스크래치보다 비용이 더욱 올라가는 사례도 드물지가 않다.

 

애플리케이션과 데이터베이스의 관계에서는 '애플리케이션이 사용자와 데이터베이스 사이를 비집고 들어가 있다.' 라는 것이 중요한 점이다. 결국, 사용자가 데이터베이스를 직접 조작하는 것이 아닌 어디까지나 애플리케이션을 매개로 해서 데이터베이스에 접근한다는 형태를 취하게 되는 것이다.

 

그러므로 사용자 입장에서는 데이터베이스에 접속하고 있다는 것조차 의식하지 않은 경우가 대부분이다. 이전 1장에서도 다루었듯이, 데이터베이스의 보안을 높이기 위해서이다. 또 하나의 이유로는 업무 로직을 애플리케이션에 집중 시켜 개발이나 수정에 걸리는 비용을 낮출 수 있는 이점이 있기 때문.(언제까지나 예외는 존재. 원칙적으로는!)


 

 

오.. 정말 들어는 본 것들에서 작게나마 이론으로 정리해보았음... ㅎㅁㅎ 그치만 입문자여서 아직은 추상, 구상 개념까지는 쵸큼 어렵군..

 

이렇게 2장을 요약하면서 내가 예전에 필요하다고 생각했던 지식들에 대해서 조금은 명분(?) 있게 읽어볼 수 있어 좋은 기회가 된 것 같다..!

아직까지는 가볍게 이론정도로 읽고 있는데 나중에 실습이 나오면 헤메려나.. 여튼 오늘의 정리도 끝끝! 2022년 연말에 다들 가볍게 읽어보면 좋을 것 같다. 안녀어엉!

 

댓글