Cute Blinking Unicorn

서버/Node.js

데이터 베이스 이론

민밥통 2023. 12. 21. 14:00

데이터 베이스 기본 개념

데이터베이스의 개념은 개론이라고 보면 된다. 


데이터 베이스 관리 시스템 몽고 디비, mySQL. 여러가지의 회사들만의 데이터베이스들이 있음

>> DB에 일반적인 규칙을 따라가야함 기술문서

>>DBMS 데이터베이스를 관리하는 시스템

 


한 마을에 사는 사람들이 있어요. 이들은 각자의 정보를 기록하고 싶어졌어요. 그래서 마을에는 큰 책장이 생기고, 각 사람의 정보가 담긴 책이 쌓여갔어요.

여기서 책장은 데이터베이스(DB)이고,

각각의 책은 데이터베이스 관리 시스템(DBMS)이에요.

DBMS는 데이터를 효율적으로 저장하고, 필요할 때마다 꺼내서 읽을 수 있게 해줘요.

마을 사람들은 정보를 책에 적을 때 SQL(Structured Query Language)이라는 언어를 사용해요. SQL은 책장에서 정보를 검색하거나 새로운 정보를 추가하고 수정할 때 사용되는 언어로, 마치 마법처럼 데이터베이스와 소통할 수 있게 도와줘요.


SQL은 관계형 데이터베이스이다. 

관계형 데이터베이스에서만 SQL을 쓰겠다는 것 

스파크 > 논SQL > 애는 관계형 데이터베이스가 아니기 때문에 SQL을 쓰면 안된다. 



데이터베이스의 스키마

데이터베이스 스키마는 데이터베이스에서 데이터의 구조와 관계를 정의하는 청사진 또는 설계입니다. 스키마는 데이터베이스에 저장되는 데이터의 형식, 구조, 제약 조건 등을 명시적으로 정의하여 데이터의 일관성과 유효성을 보장합니다.

스키마는 크게 두 가지 유형으로 나뉩니다.

  1. 물리적 스키마 (Physical Schema): 물리적 스키마는 데이터가 실제로 저장되는 방식을 정의합니다. 이는 데이터베이스의 실제 저장 구조를 설명하며, 테이블, 인덱스, 파티션 등과 같은 물리적 요소들을 포함합니다. 예를 들어, 각 테이블이 어떻게 디스크에 저장되는지, 데이터가 어떻게 색인화되는지 등을 정의합니다.
  2. 논리적 스키마 (Logical Schema): 논리적 스키마는 데이터베이스의 전체 구조를 논리적으로 정의합니다. 이는 테이블, 열, 관계, 무결성 제약 조건 등과 같은 개념적인 데이터 모델을 나타냅니다. 예를 들어, 사용자가 어떤 정보를 저장하려고 하는지, 데이터 간의 관계가 어떻게 되는지 등을 정의합니다.

스키마는 데이터의 정의를 포함하고 있어서, 데이터베이스를 만들거나 수정할 때 중요한 역할을 합니다. 데이터베이스 설계자나 관리자는 스키마를 통해 데이터의 일관성, 무결성, 보안 등을 관리할 수 있습니다. 각 테이블이나 엔터티의 속성, 관계, 제약 조건 등이 스키마를 통해 명확하게 정의되어야 합니다.


쿼리를 만들면 > 수만 개다 > 다모았다가 일정한 시간 모았다가 너어감(10개면 10개가 다 차야 넘어감)

우리가 왔다 갔다 하는 횟수가 줄어듦 그런식으로 동작하는 규칙


데이터 모델링

객체를 관계형 데이터로 바꾸는 방법

쪼개서 테이블로 만들어서 > 나의 객체를 관계형 데이터베이스 양식인 테이블 형태대로 바꿔라.

내가 테이블 형태대로 정보를 뽑아서 거기다가 입력 (내 이름, 나이 , 이런 여러가지 정보 등등)

(객체: 눈코입 내이름 등 ) > 그거를 키 선정해서 형태로대로 바꿔라


관계형 데이터 모델

관계도 ER다이어그램, ERD 1대N N대M

관계형 데이터의 모델 > 테이블을 만들고 그 테이블의 릴레이션 키의 종류.


관계 데이터 연산

A, B, C 이 세개  >> D 테이블로 모아서 씀 

관계 데이터 연산은 관계형 데이터베이스에서 데이터를 조작하고 검색하기 위한 연산들의 집합을 의미합니다. 이러한 연산들은 관계형 데이터 모델에 기반을 두고 있으며, SQL(Structured Query Language)에서 많은 부분을 차지하고 있습니다. 주요한 관계 데이터 연산에는 다음과 같은 것들이 있습니다:

  1. 선택(Selection): 특정 조건을 만족하는 튜플(행)을 선택합니다. SQL에서는 WHERE 절을 사용하여 구현됩니다.
    SELECT * FROM Employees WHERE Department = 'IT';

  2. 투영(Projection): 특정 열(속성)을 선택하여 결과를 생성합니다. 이는 필요한 열만을 선택하는 것을 의미합니다.SELECT EmployeeID, FirstName, LastName FROM Employees;

  3. 결합(Join): 두 개 이상의 테이블을 결합하여 새로운 테이블을 생성합니다. 이는 서로 연관된 정보를 가져오는 데 사용됩니다.
    SELECT Orders.OrderID, Customers.CustomerName
    FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

  4. 교집합(Intersection): 두 개의 관계에서 공통된 튜플을 선택합니다.
  5. 합집합(Union): 두 개의 관계에서 중복을 허용한 튜플을 선택합니다.
  6. 차집합(Difference): 한 관계에는 속하면서 다른 관계에는 속하지 않는 튜플을 선택합니다.
  7. 나눗셈(Division): 한 관계에서 다른 관계에 속한 값들을 가진 튜플을 찾아냅니다.
  8. 교차곱(Cartesian Product): 두 개 이상의 관계에서 모든 가능한 조합을 생성합니다.

이러한 관계 데이터 연산을 통해 데이터베이스에서 필요한 정보를 추출하고 조작할 수 있습니다. SQL은 이러한 연산을 효과적으로 수행할 수 있는 문법과 기능을 제공하여 데이터베이스 쿼리를 작성할 수 있게 해줍니다.


데이터베이스 언어 SQL 

CRUD , 컴퓨터에 입력하겠다는 것, 


데이터과학과 빅데이터 분야에서 NoSQL 데이터베이스는 중요한 역할을 하고 있습니다. 빅데이터 환경에서는 대량의 데이터를 효과적으로 저장, 처리, 분석하기 위한 유연하고 확장 가능한 데이터베이스 시스템이 필요하며, NoSQL 데이터베이스가 이러한 요구사항을 충족시킬 수 있습니다.

NoSQL 데이터베이스의 특징과 데이터과학 및 빅데이터 분야에서의 역할은 다음과 같습니다:

  1. 유연한 데이터 모델:
    • NoSQL 데이터베이스는 스키마리스(Schema-less)이거나 스키마 유연성이 뛰어나다. 이는 다양한 형태의 데이터를 수용할 수 있어 데이터 과학에서 다양한 데이터 타입과 형식을 다루는 데 용이하다.
  2. 확장성:
    • 빅데이터 환경에서는 데이터의 양이 급증하므로 확장성이 중요합니다. NoSQL 데이터베이스는 수평적 확장을 지원하여 대용량의 데이터를 처리할 수 있습니다.
  3. 분산 아키텍처:
    • NoSQL 데이터베이스는 대부분 분산 데이터베이스로 설계되어 있어서 다수의 노드에 데이터를 분산 저장하고 처리할 수 있습니다. 이는 대규모 데이터 처리 및 분석에 적합하다.
  4. 비정형 및 반정형 데이터 처리:
    • NoSQL 데이터베이스는 비정형 데이터나 반정형 데이터를 효과적으로 다룰 수 있는데, 이는 데이터과학 분야에서 많이 활용되는 데이터 형식 중 하나입니다.
  5. 높은 처리 성능:
    • NoSQL 데이터베이스는 쿼리의 처리 속도가 빠르고, 읽기 및 쓰기 작업에 있어서 뛰어난 성능을 보여줍니다. 이는 빅데이터 분석 작업에 필요한 높은 처리 성능을 지원합니다.
  6. 다양한 모델 지원:
    • NoSQL 데이터베이스는 여러 종류의 데이터 모델을 지원합니다. Document-oriented, Key-Value, Column-family, Graph 등 다양한 모델을 선택하여 사용할 수 있습니다.

데이터과학자들은 NoSQL 데이터베이스를 사용하여 대용량의 다양한 형태의 데이터를 효과적으로 다루고, 데이터 분석 및 머신러닝 작업에 활용하고 있습니다. 그러나 NoSQL이 항상 최적의 선택이 되는 것은 아니며, 사용 사례와 요구사항에 따라 관계형 데이터베이스와의 조합 등을 고려해야 합니다.


데이터베이스의 필요성

- 정보 시스템과 데이터베이스 

H2 >  조그마한 데이터 >가벼워서 사용 > 메모리에서 생성해서 전원을 꺼버리면 데이터들이 날아간다
 
 

 

JPA에서 데이터베이스 사용함 > 


정형 데이터와 반정형 데이터의 가장 큰 차이점은 데이터의 구조화 여부입니다.

  1. 정형 데이터 (Structured Data):
    • 구조화된 형태: 정형 데이터는 구조화된 형태를 갖추고 있습니다. 이는 일관된 행과 열의 형태로 데이터가 정리되어 있는 것을 의미합니다.
    • 테이블 형태: 주로 데이터베이스의 테이블에 저장되며, 각 열은 특정 유형의 데이터를 나타내고 각 행은 레코드를 나타냅니다.
    • 예시: 관계형 데이터베이스에 저장된 테이블, 스프레드시트의 데이터 등이 정형 데이터의 예시입니다.
  2. 반정형 데이터 (Semi-Structured Data):
    • 구조화되지 않은 형태: 반정형 데이터는 정형 데이터처럼 완전히 구조화된 형태가 아니며, 데이터 내의 구조적인 요소가 부분적으로 정의되어 있습니다.
    • 태그 또는 속성: 일반적으로 텍스트 기반 데이터이며, 데이터 내에 태그, 속성 또는 계층 구조를 사용하여 일부 구조를 제공합니다.
    • 예시: XML, JSON과 같은 형식으로 표현되는 데이터, 로그 파일, 웹 페이지의 HTML 등이 반정형 데이터의 예시입니다.

간단한 예시 비유:

  • 정형 데이터: 마을의 주민 명부 같이 각 주민의 이름, 나이, 주소 등이 표 형태로 정리되어 있는 데이터.
  • 반정형 데이터: 주민들의 이야기가 적힌 편지들이 있는데, 각 편지에는 주인공의 이름, 나이, 주소 등이 있는데 정형적인 표 형태는 아니지만 일부 구조가 있어 분석이 가능한 데이터.

요약하면, 정형 데이터는 구조화된 형태를 가진 데이터이고, 반정형 데이터는 부분적으로 구조화된 형태를 가진 데이터입니다.

 

정형 데이터는 추가 하려면 기존 테이블을 삭제하고 새로운 테이블에 옮겨씀

 

반정형 데이터는 추가 계속 할 수 있음


 

'서버 > Node.js' 카테고리의 다른 글

데이터베이스 이론 (2)  (0) 2023.12.21
Packet Tracer  (0) 2023.12.13
포스트랑 비주얼 연동!  (0) 2023.12.06
모듈 활용하기  (0) 2023.11.29
filter, map, reduce 함수, 재귀함수 등 코드 작성  (1) 2023.11.22