자료구조와 알고리즘 그리고 데이터베이스 와 ORM

이정기·2023년 4월 20일
0

TIL

목록 보기
57/71
post-thumbnail

자료구조와 알고리즘 중에서 자주 사용되는 것들

자료구조와 알고리즘 기본 개념 숙지

  1. 배열 (Array)
  • 같은 자료형의 데이터를 일렬로 나열한 자료 구조
  • 인덱스를 사용하여 데이터에 접근할 수 있음
  • 데이터의 삽입, 삭제가 불편하고, 크기를 변경하기 어려움
  1. 연결 리스트 (Linked List)
  • 데이터와 다음 데이터의 위치를 가리키는 포인터로 이루어진 노드들이 연결된 자료 구조
  • 삽입, 삭제가 용이하지만, 임의의 위치에 데이터에 접근하기 어려움
  1. 스택 (Stack)
  • Last In First Out (LIFO)의 특성을 가지는 자료 구조
  • push(삽입), pop(삭제), peek(최상위 값 참조) 등의 연산을 지원함
  1. 큐 (Queue)
  • First In First Out (FIFO)의 특성을 가지는 자료 구조
  • enqueue(삽입), dequeue(삭제), peek(최상위 값 참조) 등의 연산을 지원함
  1. 트리 (Tree)
  • 계층적인 구조를 가지는 자료 구조
  • 루트 노드에서부터 자식 노드로 뻗어가는 형태로 구성됨
  • 이진 트리(Binary Tree), 이진 탐색 트리(Binary Search Tree), 힙(Heap) 등이 있음
  1. 그래프 (Graph)
  • 정점(Vertex)과 간선(Edge)으로 이루어진 자료 구조
  • 방향 그래프(Directed Graph), 무방향 그래프(Undirected Graph), 가중치 그래프(Weighted Graph) 등이 있음
  1. 정렬 알고리즘 (Sorting Algorithm)
  • 데이터를 일정한 순서로 나열하는 알고리즘
  • 대표적으로 버블 정렬(Bubble Sort), 선택 정렬(Selection Sort), 삽입 정렬(Insertion Sort), 퀵 정렬(Quick Sort), 합병 정렬(Merge Sort) 등이 있음
  1. 탐색 알고리즘 (Searching Algorithm)
  • 주어진 데이터 집합에서 특정 데이터를 찾는 알고리즘
  • 대표적으로 선형 탐색(Linear Search), 이진 탐색(Binary Search), 해시 탐색(Hash Search) 등이 있음

해당 자료구조와 알고리즘은 Javascript로 직접 구현하며 공부해보자!

데이터베이스와 ORM

데이터베이스와 ORM 을 알기 전 용어에 대해 공부해보았다.

데이터베이스란?

데이터를 저장하고 관리하는 시스템
데이터베이스는 여러개의 테이블(Table)로 구성되어 있으며, 각 테이블은 레코드(Record) 라는 행(row)로 구성되어 있다.

데이터베이스를 이용할 때, 데이터를 검색, 수정, 삭제 등 다양한 작업을 할 수 있다.

이러한 작업은 SQL(Structured Query Language) 언어를 사용한다.

SQL 은 데이터베이스와 상호작용하기 위한 표준화된 언어로, 대부분의 관계형 데이터베이스 시스템에서 사용한다.

DBMS 란?

DBMS(Datebase Magagement System)의 약자이다.
데이터베이스를 관리하고 운영하는 소프트웨어이다. 다양한 데이터가 저장되어있는 데이터베이스는 여러 명의 사용자나 응용 프로그램과 공유하고 동시에 접근이 가능해야한다. DBMS 는 다양한 종류가 있다.

DBMS 종류

  • MySQL
  • MariaDB
  • PostgreSQL
  • Oracle
  • SQL Server
  • DB2
  • Access
  • SQLite

DBMS 유형

DBMS 유형은 계층형, 망형, 관계형, 객체지향형, 객체관계형 등으로 분류된다. 현재 사용되는 DMBS 중 관계형 DBMS가 가장 많이 사용된다.

내가 자주 사용한 MySQL 또한 관계형 DBMS 이다.

열과 행으로 된 데이터베이스만 봐와서 그 이외에 데이터베이스를 생각하지 못했는데, 계속 사용해왔던 관계형 데이터베이스가 정말 편했다는걸 새삼 느꼈다.

관계형 데이터베이스란?

관계형 DBMS(Relational DBMS) 는 줄여서 RDBMS 라고 부른다.

RDBMS 에서는 모든 데이터가 테이블에 저장된다. 테이블로 이루어져 있으며 , 테이블은 열과 행으로 구성되어 있다.

두 테이블을 관계를 설정해 중복된 데이터를 최소화하며 다양한 작업들을 할 수 있다.

출처

데이터베이스 이해하기

객체지향 프로그래밍

이것에 대해선 따로 정리 해야겠지만, ORM 을 설명하기 위해 간단히 적자.

데이터와 이를 처리하는 동작(메서드)를 하나의 단위인 객체(Object)로 묶어서 관리한다. 따라서 데이터의 구조와 동작을 하나의 객체로 정의하고, 객체 간의 관계를 이용하여 데이터를 저장한다.

ORM

Object Relational Mapping(객체-관계-맵핑) 의 약자로 객체와 데이터베이스의 관계를 매핑해주는 도구이다.
내가 썼던 ORM 은 sequelize , typeORM 이였다.
이 ORM 이 있었기 때문에, 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑 해줄 수 있었다.
즉, 객체와 관계형 데이터베이스 사이의 중계자 역할을 한다.

객체지향 프로그래밍

객체지향 프로그래밍은 데이터와 해당 데이터를 처리하는 메서드를 하나의 객체로 묶어서 처리한다. 데이터와 메서드를 캡슐화하여 객체 단위로 관리하므로 객체를 사용하여 복잡한 문제를 해결하기 용이하다. 또한 객체 간의 관계를 이용하여 데이터를 표현하며, 이러한 관계는 객체의 상속 및 합성을 통해 구성된다.

관계형 데이터베이스

관계형 데이터베이스는 테이블과 열로 구성된 데이터 구조를 사용하여 데이터를 저장한다. 각각의 테이블은 유일한 기본키(Primary Key)를 가지며, 이를 이용하여 다른 테이블과 관계를 맺는다. 이러한 관계는 일대일(One-to-One), 일대다(One-to-Many), 다대다(Many-to-Many) 등 다양한 유형이 있다.

객체는 클래스의 인스턴스이므로 상속, 다형성 등의 개념을 사용하고
관계형 데이터베이스에서는 테이블 간의 관계를 이용하여 데이터를 저장한다.

ORM 사용 이유

위에서 보았듯 객체 지향 프로그래밍과 관계형 데이터베이스는 데이터를 다루는 방식에 차이가 있다.
이러한 차이를 해결하기 위해 ORM은 객체와 테이블 간의 매핑(mapping)을 제공한다. 개발자는 객체를 정의할 때 해당 객체와 매핑될 테이블과의 관계를 정의할 수 있다. ORM 프레임워크가 이러한 매핑 정보를 바탕으로 SQL 쿼리문을 자동으로 생성하여 데이터베이스에 접근하므로 개발자는 SQL 쿼리문 작성에 대한 부담을 덜 수 있다는 장점도 있다.

ORM을 사용하면 개발자는 객체지향 프로그래밍에서 사용하는 객체를 그대로 사용하면서, 이를 관계형 데이터베이스와 연결하여 데이터를 저장하고 조회할 수 있습니다. 따라서, ORM은 객체지향 프로그래밍과 관계형 데이터베이스 간의 상호 운용성을 높이는데 큰 도움이 된다.

profile
Node.js 로 꿈을 꾸었다..

0개의 댓글