Hyperskill - 컴퓨터 CS 및 영어 독해/Introducing to SQL

What are Databases? - 데이터베이스는 뭘까?

코딩크리처 2024. 3. 31. 03:00

What are Databases? - 데이터베이스는 무엇일까?


세상은 넘쳐나는 정보로 넘쳐납니다.

당신은 중요한 정보를 어떻게 안전하면서, 정렬되도록 가지고 있나요?

아마 모든 정보를 잊거나, 혼동하지 않기를 바랄 것입니다.

하지만, 기기에 쓰고 저장하는 것이 훨씬 낫습니다!

따라서 당신은 컴퓨터나 핸드폰의 프로그램에 정보를 안전하게 가지고 있습니다.

프로그램이 동작하는 동안, 기기는 모든것을 기억합니다.

하지만, 프로그램을 종료하며 모든 정보가 누락 될 것 입니다.

이러한 배경이, 데이터를 더 정밀한 도구 (SQL...) 로 저장하는 이유가 됩니다.


이 배움의 목표는 방대하고 복잡한 웹의 정보를 검색하고, 모든 중요한 정보를 안전하고 정렬된 상태로 보장하는 것 입니다.

이러한 일 처리는 데이터베이스가 잘 처리합니다.

Databases - 데이터베이스


데이터베이스는 빠른 검색과 컴퓨터의 검색 과정을 위한 구체적으로 조직화 된 데이터의 컬렉션입니다.

데이터베이스와 일반 파일 간의 차이점을 말하자면,

파일은 구조적일 수도 아닐수도 있지만, 데이터베이스는 무조건 구체적으로 조직화 되어 있다는 것 입니다.

예를 들어, "To-do list" 라는 파일을 만들어 보겠습니다.


---
title : To-do
---
graph LR;
    1("1. Do Groceries");
    2("2. Work out");
    3("3. Read a book");
    4("4. ...");

확실히, 이 To-do-List 파일은 어떤 종류의 구조를 가지고 있습니다.

하지만, 컴퓨터의 관점으로부터 본다면, 이건 그저 평범한 plain file입니다.

대개 데이터베이스의 정보는 압축되며, plain text 보다는 binarie 정보로 저장됩니다.

따라서, 이러한 종류의 구조는 인간이 아니라 컴퓨터를 위한 구조란 것을 의미합니다.


우리와는 다르게, 컴퓨터는 binary 포맷의 데이터를 쉽게 이해 할 수 있습니다.

하지만, 어떤 것이 이러한 컴퓨터에게 올바르게 읽고 쓰게 허용 해 줄까요?

그건 Database Management System 이라고 불리며, 데이터베이스 내부에서 데이터를 조작합니다.


Databases Management System - 데이터베이스 관리 시스템


Database Management System, 즉, DBMS는 유저가 데이터를 정의하며, 만들며, 조작할 수 있게 허용 해 주는 일종의 소프트웨어입니다.

DBMS는 쿼리를 최적화하며 데이터베이스로부터 데이터를 검색합니다.

이건 유저와 데이터베이스 간의 중간자이며,

DBMS의 인터페이스를 통해 유저가 작업할 수 있다는 것을 의미합니다.

게다가, 유저로부터 데이터를 격리시킬 수 있게 도울 수 있습니다.


DBMS와 같은 소프트웨어의 또다른 목적은,

다른 타입의 데이터베이스를 사용할 때, 데이터베이스 간의 실제 차이점을 드러내지 않고 사람들이 일할 수 있게 돕는 것 입니다.


flowchart LR
    User("User") --> DBMS{"DBMS"} --> Database[(Database)];
    Database --> DBMS --> User

대부분의 DBMS는 각자의 사이트에서 꽤 괜찮은 설명과 튜토리얼을 가지고 있습니다.

그곳에서는 DBMS와 작업하기 위해 배워야 하는 SQL과 비슷하며 상세한 언어가 있습니다.

하지만, 만약에 당신이 프로그래밍 언어를 알고 있다면, 해당 프로그래밍 언어의 도구로 데이터베이스와 작업할 수 있습니다.

예를 들어, Python, Java 와 같은 언어에 DBMS와 작업하기 위한 수많은 라이브러리들이 존재합니다.

모든 데이터베이스가 마치 각기 다른 Syntax 법칙을 가지고 있다고 보일 수 있지만,

대부분은 평범한 기준 Syntax를 약간 다르게 구현 한 것입니다.

거의 모든 관계형 데이터베이스는 SQL standard를 사용하고 있으므로, 같은 커맨드를 다른 DBMS에서 적용 할 수도 있습니다.


Access to data - 데이터에 접근하기


이 단계에서, 어떻게 데이터베이스를 사용하는지에 대해서 많은 질문을 갖고 있을 겁니다.

당신은 데이터를 업데이트하고 선택하기 위해 새로운 언어를 배워야 하는데, 이는 시간이 많이 걸릴 수도 있습니다.

Plain file(평범한 파일)로 대신하면 안될까요?


당연하게도, 직접 파일을 저장할 수 있습니다.

하지만, 그 수가 늘어나며 정보를 빠르게 찾을 수 없게 됩니다.

데이터베이스는 스키마(schemas) 와 메타데이터(metadata)를 제공하는데,

이는 필요한 데이터를 빠르게 찾을 수 있게 허용합니다.

schema 는 어떻게 데이터를 구성 할 것인지 표현합니다.

Metadata 는 구조적, 통계적 정보를 가지고 있습니다.

만약 다양한 기기가 당신의 데이터에 접근하기를 원한다면,

대부분의 시스템은 그 기기들과 편리하게 일할 수 있는 길을 제공합니다.

다른 사람에게 제한적인 접근을 제공하기 위해서,

몇몇 관리 시스템은 간단한 login/password authentication을 사용합니다.

이 관리 시스템의 도움으로,

각 유저에게 제한된 양 만큼의 데이터를 허용하게 권한을 부여 할 수 있습니다.


flowchart LR 
    User1("User1") 
    User2("User2")
    User3("User3")
    DBMS{"DBMS"}

    User1 --> |login: password| DBMS
    User2 --> |login: password| DBMS
    User3 --> |login: password| DBMS


Data consistency - 데이터 일관성


데이터베이스의 가장 좋은 기능 중 하나는, 데이터를 올바르게 유지하고 복원하는 능력입니다.

이것은 DBMS가 어떻게 올바른 지 아는 것을 의미하지 않습니다.

그러나, 한 번 Schema의 설정에 대한 규칙을 정의 한다면, 어떠한 것도 이 규칙을 부술 수 없습니다.

DBMS는 데이터를 위한 format을 제공합니다.

그리고 원하는 모든 테스트와 제약 조건을 설정 할 수 있습니다.


만약, 몇몇 사람이 동시에 같은 데이터를 접근하려고 한다면, 아마 문제가 될 겁니다.

파일의 업데이트는 주로 "last save wins"(마지막 저장 우선) 규칙을 따릅니다.

이 규칙은 업데이트의 충돌로 이끕니다.

예를 들어, 만약 누군가 당신의 To do List를 변경하기로 결정했다면,

"last changes saved" 파일 업데이트 규칙을 따릅니다.

그리고 이는 당신이 방금 만든 알림을 잃어버리고, 내일 예정되어 있던 일정을 놓칠 것 입니다.

설명


상황 : 어떤 사람나 자신이 동시에 동일 파일을 열고, 수정하고 있는 상황


흐름1 : 나 자신이 내일 To-do List에 내일 일정 운동하기를 등록하고 종료. (어떤 사람은 아직 종료 하지 않은 상황.)


흐름2 : 어떤 사람나 자신의 To-do List에 내일 일정 공부하기를 등록하고 종료.


결과 : 나 자신이 만든 일정은 파일에 저장되지 않고, 어떤 사람이 수정 한 내용만 파일에 저장된다.


이유 : 파일은 Last Changes Saved 규칙을 따르기 때문이다.

한 편, 데이터베이스는 각기 다른 유저를 격리시키고, 다른 유저들의 업데이트 간의 충돌을 해결하도록 구성할 수 있습니다.


데이터베이스의 장점은 하나 더 있습니다.

파일을 이용한 데이터 저장 방식에서 파일이 손상되어 열지 못 하게 된다면, 해당 데이터는 영원히 사라지게 됩니다.

하지만, 대신에 DBMS를 쓴다면, 백업을 만들고 데이터를 복원하여 작업을 이어 갈 수 있습니다.

당연히, 당신만의 DBMS를 개발하여 이러한 동작을 에뮬레이팅 할 수 있습니다만,

이미 개발된 DBMS 솔루션을 사용하여 작업 해 보세요.


Conclusion - 결론


데이터베이스와 같이 작업하는 것 시작하기 전, 해야 할 것이 많습니다.

하지만, 고통이 없으면, 얻는 것도 없습니다.

그리 당신이 실제로 얻는 것이 많습니다.

데이터베이스로 당신이 할 수 있는 것들

  • 데이터 저장, 검색 그리고 업데이트
  • metadata 가져오기
  • 원격 데이터베이스 접근
  • 제한된 데이터 접근
  • 동시 업데이트 수행
  • 어떠한 지점(시간)으로 복구 가능
  • 데이터 일관성을 위한 규칙을 자동으로 체크

데이터가 이끌어 나가는 이 세상에서, 이러한 기능성은 매우 값집니다.

새로운 기회의 세상에 오신 걸 환영합니다!

그리고 데이터베이스를 탐험하며 좋은 운이 있길 바랍니다.