TIL

이건선·2023년 6월 2일

알아볼것

목록 보기
7/13

자료구조와 알고리즘

자료구조:

  1. 배열 (Array): 배열은 가장 기본적이고 흔히 사용되는 자료구조로, 동일한 데이터 타입의 요소들이 연속적으로 저장됩니다.

  2. 객체 (Object): 객체는 키-값 쌍(key-value pairs)을 저장하는데 사용됩니다. JavaScript와 그것을 기반으로 하는 Node.js에서, 객체는 매우 핵심적인 자료구조입니다.

  3. 세트 (Set): 세트는 유일한 값들을 저장하는 데 사용되며, 이는 배열과 비슷하지만 중복된 요소를 허용하지 않습니다.

  4. 맵 (Map): 맵은 키-값 쌍을 저장하지만, 객체와 달리 키의 순서를 기억합니다.

  5. 링크드 리스트 (Linked List): 각 노드가 데이터와 다음 노드에 대한 포인터를 가지고 있는 선형 데이터 구조입니다.

  6. 스택 (Stack)과 큐 (Queue): 스택은 LIFO (Last In First Out) 원칙에 따라 데이터를 저장하고, 큐는 FIFO (First In First Out) 원칙에 따라 데이터를 저장합니다.

알고리즘:

  1. 정렬 알고리즘 (Sorting algorithms): 버블 정렬, 선택 정렬, 삽입 정렬, 퀵 정렬, 병합 정렬 등 다양한 정렬 알고리즘들이 있습니다.

  2. 검색 알고리즘 (Searching algorithms): 선형 검색, 이진 검색 등이 있습니다.

  3. 재귀 알고리즘 (Recursive algorithms): 재귀 알고리즘은 문제를 더 작은 부분 문제로 분할하여 문제를 해결하는 방식입니다.

  4. 그래프 알고리즘 (Graph algorithms): BFS (Breadth-First Search), DFS (Depth-First Search), 다익스트라 알고리즘 (Dijkstra's algorithm) 등이 있습니다.

  5. 동적 프로그래밍 (Dynamic Programming): 이 알고리즘은 복잡한 문제를 더 작은 하위 문제로 나누어 해결하는 방식을 사용합니다.

  6. 그리디 알고리즘 (Greedy algorithms): 이 알고리즘은 현재의 선택이 미래의 결과에 대해 최선의 선택이 될 것이라는 가정하에 최적의 해결책을 찾습니다.


데이터베이스 (Database)와 ORM(Object Relational Mapping)

데이터베이스 (Database)는 관련 데이터의 집합체로, 이 데이터는 표, 스키마, 뷰, 리포트 등 다양한 형태로 조직화 될 수 있습니다. 데이터베이스는 일반적으로 데이터베이스 관리 시스템 (DBMS)을 사용하여 관리됩니다. DBMS는 사용자가 데이터베이스에서 데이터를 저장, 수정, 검색, 삭제할 수 있게 합니다.

데이터베이스는 크게 두 가지 유형으로 분류됩니다: SQL(관계형 데이터베이스)과 NoSQL(비관계형 데이터베이스).

  1. 관계형 데이터베이스 (Relational Database): 이 데이터베이스 유형은 데이터를 테이블의 형태로 저장하며, 각 테이블은 행과 열로 구성됩니다. 이러한 테이블 간에는 관계가 설정될 수 있으며, SQL (Structured Query Language)을 사용하여 데이터를 쿼리합니다. 예를 들어, MySQL, PostgreSQL, Oracle 등이 있습니다.

  2. 비관계형 데이터베이스 (Non-relational Database): 이 데이터베이스 유형은 일정한 스키마가 없거나, 스키마가 유연합니다. 이 유형은 빅 데이터와 실시간 웹 애플리케이션에 적합하며, 키-값 쌍, 넓은 열, 그래프 또는 문서 기반 모델 등 다양한 데이터 모델을 지원합니다. 예를 들어, MongoDB, Cassandra, Redis 등이 있습니다.

ORM (Object-Relational Mapping)은 데이터베이스와 프로그래밍 언어 사이의 '다리' 역할을 합니다. ORM은 객체 지향 프로그래밍 언어를 사용하여 관계형 데이터베이스의 데이터를 관리할 수 있게 합니다.

ORM은 데이터베이스의 테이블을 객체와 매핑하고, 이 객체를 사용하여 SQL 쿼리를 생성하고 실행합니다. 이는 개발자가 SQL 쿼리를 직접 작성하지 않아도 데이터베이스와 상호 작용할 수 있게 해줍니다.

ORM의 장점:

  1. 코드 재사용과 유지보수: ORM을 사용하면 비슷한 코드를 반복해서 작성하지 않아도 됩니다. 데이터베이스 관련 코드를 한 곳에 모아 두면 유지 관리가 용이합니다.

  2. 데이터베이스 독립성: ORM은 개발자가 특정 DBMS에 종속되지 않게 해주며, 다양한 데이터베이스 시스템 간의 이동을 용이하게 합니다.

  3. 보안: ORM은 SQL

    쿼리를 자동으로 생성하므로, SQL 주입 공격에 대한 기본적인 보호를 제공합니다.

단점:

  1. 성능: ORM은 SQL 쿼리를 자동으로 생성하므로, 때때로 비효율적인 쿼리가 생성될 수 있습니다.

  2. 복잡성: 복잡한 쿼리를 작성하거나, 데이터베이스를 세밀하게 조정해야 하는 경우 ORM을 사용하는 것이 어려울 수 있습니다.

Node.js에서 많이 사용되는 ORM으로는 Sequelize, TypeORM 등이 있습니다.

profile
멋지게 기록하자

0개의 댓글