2024년 3월 20일의 이야기(심지어 수요일)

2024년 3월 20일의 이야기(심지어 수요일)

·

5 min read

지나가다 들은 이야기 나는 배가 고프다

DB(데이터 베이스)db

우리가 기본적으로 아는 보조 기억 장치는

HDD(하드 디스크 드라이브), SSD(솔리드 스테이트 드라이브) 같은 영구 저장소보조 기억 장치가 있다

보조 기억 장치의 특징

비휘발성, 반영구적, 파일을 저장하는 파일 시스템, 데이터를 저장하는 데이터 베이스로 구성

정보 시스템

조직 운영에 필요한 데이터를 수집하여 저장해두었다가 의사 결정이 필요할 때 처리하여 유용한 정보를 만들어주는 수단을 정보 시스템

데이터 베이스의 정의

여러 사람이 공유하여 사용할 목적으로 체계화해 통합, 관리하는 데이터의 집합이다

  • 공유 데이터

    • 특정 조직의 여러 사용자가 함께 소유하고 이용할 수 있는 공유 데이터
  • 통합 데이터

    • 최소의 중복과 통제 가능한 중복만 허용하는 데이터
  • 저장 데이터

    • 컴퓨터가 접근할 수 있는 매체에 저장된 데이터
  • 운영 데이터

    • 조직의 주요 기능을 수행하기 위해 지속적으로 꼭 필요한 데이터

뭐가 이렇게 많을까 많기만 하고 많고 날라가고 싶다

데이터 베이스의 특징

데이터베이스는 우리에게 필요한 정보들을 구조적으로 모아둔 것

  • 실시간 접근

    • 사용자의 데이터 요구에 실시간으로 응답
  • 계속 변화

    • 데이터의 계속적인 삽입, 삭제, 수정을 통해 현재의 정확한 데이터를 유지
  • 동시 공유

    • 서로 다른 데이터의 동시 사용 뿐만 아니라 같은 데이터의 동시 사용도 지원
  • 내용 기반 참조

    • 데이터가 저장된 주소나 위치가 아닌 내용으로 참조

데이터 베이스 스키마(database schema)

엑셀로 따지면 확실하게 되어있는게 RDMS

데이터베이스 어떻게 설계할지에 대한 계획 즉, 구조와 제약 조건을 정하는 것

  • 전체적인 데이터베이스 구조를 뜻하며 자주 변경되지 않음.

  • 데이터베이스의 모든 가능한 상태를 미리 정의

  • 데이터베이스 상태

    • 특정 시점의 데이터베이스의 내용을 의미하며, 시간이 지남에 따라 계속해서 바뀜

    • 데이터베이스에 수정이 일어날 때마다 상태는 바뀝니다.

데이터베이스 시스템의 구성

  • DBMS: 사용자와 데이터베이스를 연결 시켜주는 소프트웨어(데이터베이스를 관리해주는 시스템)

  • 데이터 베이스: 데이터를 모아둔 토대

  • 데이터 모델: 데이터가 저장되는 기법에 관한 내용

DBMS

언어

  • DDL (Data Definition Language) = 데이터 정의어

    데이터베이스 스키마를 정의할 때 사용하는 언어를 의미한다(데이터베이스 구축 및 수정을 목적으로 사용하는 언어) - 새로운 엑셀 데이터 삭제하거나 만든다고 생각 하면 됨

  • DML (Data Manipulation Language) = 데이터 조작어

    용자가 데이터를 처리할 때 사용하는 언어를 의미한다.(데이터베이스의 데이터를 실질적으로 조작하기 위한 언어) 해상 엑셀의 셀을 수정 하는 곳

  • DCL (Data Control Language) = 데이터 제어 어

    데이터를 제어하기 위한 언어를 의미한다.(주로 데이터 보안, 무결성, 병행 수행 제어 등을 정의하는데 사용) 데이터 베이스에 접근 제어를 주거나 뺏는 곳(권한 주는 곳)

장점

  • 데이터 중복 및 불일치 최소화

  • 데이터의 표준화

  • 데이터의 보안 향상

  • 데이터의 일관성 및 무결성 유지

  • 다양한 유형의 장애로부터 DB 복구 가능

  • 시스템 개발 및 유지 보수 비용 절감

  • 동시 접근 가능

단점

  • 높은 비용 및 고급 인력 필요

  • 자료 처리의 복잡 화

  • 복잡한 백업 및 복구

  • 조회는 보통 됨 ”조회” 권한이 있다면 각 권한을 다르게 부여할 수 있음 조회 권한을 주면 다 볼 수 있으므로 프라이버시 노출 단점이 있으므로 권한을 잘 부여해야 함

단점의 현실

하드웨어 구입 비용 DB도 서버에 올라가야 쓸 수 있음 → 하나의 컴퓨터가 아니라 어떤 서버에 올려야 하므로, 어떤 자원이나 클라우드에 올려져야 한다.

DBMS 자체 구입 비용 오라클 두 대만 1억 5천 … 라이선스 종류에 따라 다르고, 오라클의 경우 코어로 돈을 따짐. (코어가 몇개냐. 해당 서버에서) 그래서 비싸다..

시스템이라 물리적이거나 클라우드에 올려서 사용해야 하는 자원이 필요함 라이선스도 가격이 상당함 무료로 지원해도 사업을 하려면 돈을 지불해야 함

DBMS 사용

  • 응용 프로그래머

    • 데이터베이스 위에서 특정 응용(예, 고객 관리, 인사 관리, 재고 관리 등)이나 인터페이스를 구현하는 사람

    • 이들이 작성한 프로그램은 최종 사용자들이 반복해서 수행하므로 기작성 트랜잭션(canned transaction) 또는 프로그램(기작성 트랜잭션 데이터베이스에 지속적으로 쿼리하고 업데이트하기 위해 일반 사용자가 자주 사용하는 쿼리 및 업데이트의 표준 유형)

    • 데이터베이스 관리자(DBA : Database Administrator 👷‍♂️)

    • 실제 DB 변경이 필요할 때 DBA님에게 요청(DB 구조나 스키마 등을 관리)

접근 제어

데이터베이스에서 변동 사항이 생기는 경우

유저별로 접근 제한을 걸어두는 것

동시 접근

내가 계좌를 누군가에게 입출금 하는것 이라고 이해하면 됨

여기서 중요한!

SQL(관계형 데이터 베이스-Structured Query Language)

데이터베이스에서 데이터를 추출하고 조작하는 데에 사용하는 데이터 처리 언어

SQL용어

1. 테이블(Table(릴레이션)):테이블은 데이터베이스에서 데이터를 저장하는 가장 기본적인 단위이다. 테이블은 열(Column)과 행(Row)으로 구성된다. 열은 테이블의 속성을 나타내며, 행은 테이블에 저장되는 값들을 나타냄

2.열(Column(속성)):열은 테이블의 각 속성을 나타내며, 데이터의 타입과 크기를 정의한다. 열은 테이블의 구조를 결정하는 중요한 요소이다. 열은 문자열, 숫자, 날짜 등 다양한 데이터 타입을 가질 수 있다

3.행(Row(레코드)):행은 테이블에서 하나의 레코드를 나타낸다. 각 행은 테이블의 열에 대한 값들을 포함한다. 행은 고유한 식별자(Primary Key)로 식별되며, 행을 기준으로 데이터를 검색하거나 조작할 수 있다

4.기본 키(Primary Key):기본 키는 테이블에서 각 행을 고유하게 식별하는 역할을 한다. 기본 키는 테이블의 열 중에서 선택되며, 중복되지 않는 값을 가져야 한다. 기본 키는 테이블에서 데이터를 고유하게 식별하고 조작할 때 사용됨(기본적으로-일련번호, 고객 ID 등)

관계형 데이터 베이스(SQL)

응용 프로그램들은 데이터베이스 내의 레코드들의 어떠한 순서와도 무관하게 작성됨(일단 데이터가 쌓이는 게 포인트고 이후에 SQL문으로 원하는 데이터 기준으로 뽑을 수 있기 때문에)

비관계형 데이터베이스 (NoSQL)

NoSQL이라고도 부르며, Not Only SQL(SQL 뿐만이 아닌. 이라는 뜻)의 줄임말

예시) RDBMS = 1대

NOSQL = 다수

*특징이 중요함! RDBMS / NOSQL

스쿼드 1

DB는 다른 IT랑 다르게 평생 사용 가능하다(DB는 잘 안변한다)

일단 DB는 사기다

일단 이 3개중에 1개를 알아야 내가 무엇을 선택하고 싶은지 알 수 있다

  • Os

  • Network

  • Db

CLI(?)

정말 정말 중요한 내용

은행이나 쇼핑몰이나 이러한 데이터는 RDBMS 데이터 베이스로 한다

예시)은행이나 쇼핑몰은 RDBMS를 사용함

천 원을 송금하면 송금한 사람의 계좌에는 1000원이 내려가고 송금받은 사람의 계좌는 1000원이 올라가야 함

순간적으로 주고받은 두 사람은 관계형이 됨

내 계좌에서 1000원이 내려가고 반대는 1000원이 올라감

쇼핑몰 같은 경우도 옷이 있으면 수량이 있을 것

어떤 일반 유저가, 옷을 사면 100벌 있다면 2벌 사면 98벌이 됨

두 개의 데이터는 관계를 이루고 있음

각각의 특징을 알아야 내가 만든 기획/서비스에 따라서 RDBMS나 NOSQL를 선택 할 수가 있다

예? 왜 아직도 수요일인가야! 으아아아아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ앍

이걸 읽고 힘들면 당근을 흔들어 주세요