본문 바로가기
728x90

CS 지식37

[데이터베이스] InnoDB vs MyIsam InnoDB의 주요 특징과 장점 트랜잭션 지원InnoDB는 완벽한 ACID(Atomicity, Consistency, Isolation, Durability) 모델을 지원하는 트랜잭션을 제공합니다. 이는 데이터의 정합성과 안정성을 보장하며, 여러 작업을 그룹화하여 하나의 작업으로 관리할 수 있습니다. 외래키 지원데이터베이스 설계에서 중요한 요소인 외래키를 지원합니다. 이를 통해 데이터 간의 일관성을 유지하고 복잡한 쿼리와 관계를 효율적으로 관리할 수 있습니다. MVCC (Multi-Version Concurrency Control)동시성을 높이기 위해 여러 버전의 데이터를 관리할 수 있는 기능을 제공합니다. 이는 읽기 작업 중에 발생할 수 있는 락 경쟁을 최소화하여 성능을 향상시킵니다. Locking L.. 2024. 5. 10.
[데이터베이스] MySQL 엔진 처리 동작 과정 쿼리파서쿼리파서는 쿼리를 요청 받았을 때 가장 먼저 작동하는 구간입니다. 사용자의 요청으로 들어온 SQL구문을 토큰으로 분리해 트리형태의 구조로 변경합니다. 쿼리파서는 쿼리를 파싱한후 SQL 구문의 문법오류 여부 확인합니다. 이후 전처리기로 보내게 됩니다. 전처리기전처리기는 SQL 쿼리의 유효성을 검증하는 중요한 단계입니다. 먼저, Parser가 만든 트리를 기반으로 SQL 구문의 유효성을 검사합니다. 각 토큰을 테이블이나 컬럼명, 내장 함수 등의 개체와 매핑하여 해당 객체의 존재 여부와 접근 권한을 확인합니다. 이 과정에서 권한이 없는 개체의 토큰은 걸러지게 됩니다. 옵티마이저옵티마이저는 SIUD와 같은 쿼리를 최적으로 실행하기 위한 실행 계획을 수립하는 프로세스입니다. 이때 비용 기반 최적화와 규칙 .. 2024. 5. 9.
[데이터베이스] MySQL의 구성 요소: 엔진과 스토리지 엔진 MySQL은 관계형 데이터베이스 관리 시스템(RDBMS)으로, 데이터의 저장, 관리, 접근을 담당하는 여러 구성 요소로 구성되어 있습니다. MySQL의 구성요소를 알면 쿼리문 하나 하나 날릴 때마다 어떤 식으로 동작하는 지 조금더 자세히 할수 있게 되고, 오류를 더 쉽게 수정할수 있을 듯합니다. 이 글에서는 MySQL의 핵심 구성 요소인 MySQL 엔진과 스토리지 엔진에 대해 살펴보겠습니다.MySQL 엔진MySQL 엔진은 클라이언트의 접속과 SQL 요청을 처리하는 역할을 합니다. 이를 위해 다음과 같은 논리적인 절차를 거칩니다. 일종의 사람에게서 두뇌와 같은 역할을 하며, 논리적인 절차로 결정을 내립니다.쿼리 파싱 및 전처리: 클라이언트로부터 받은 SQL 쿼리를 분석하여 문법적으로 올바른지 확인하고, 실.. 2024. 5. 8.
[알고리즘] 그래프: 이해와 활용하는 자료구조 그래프는 현대의 정보 시대에서 다양한 분야에서 활발히 사용되는 중요한 자료구조입니다. 이 글에서는 그래프의 기본 개념과 그래프를 활용하는 방법에 대해 알아보겠습니다. 또한, 이를 통해 다양한 분야에서 그래프가 어떻게 활용되는지에 대해 살펴보겠습니다.그래프의 기본 개념그래프는 노드(정점)와 간선(엣지)으로 이루어진 자료구조입니다. 이 노드들은 서로 연결되어 있으며, 이 연결 관계가 그래프의 핵심입니다. 무방향 그래프는 간선에 방향이 없는 경우이며, 양쪽으로 이동할 수 있습니다. 반면에 유향 그래프는 간선에 방향이 있는 경우로, 한 방향으로만 이동할 수 있습니다.Adjacency정점을 연결하는 모서리가 있는 경우 정점이 다른정점과 인접하다고 함Path(경로)정점 A에서 정점 B로 이동할 수 있는 일련의 가장.. 2024. 5. 7.
[알고리즘] 트라이(Trie) 자료구조: 문자열 검색의 효율적인 해결책 문자열 검색은 컴퓨터 과학에서 중요한 문제 중 하나입니다. 특히, 대용량의 텍스트 데이터베이스나 자연어 처리 시스템에서 문자열을 효율적으로 찾아야 할 때 매우 중요한 역할을 합니다. 이를 위해 다양한 자료구조가 고안되었는데, 그 중에서도 트라이(Trie)는 문자열 검색을 위한 효율적인 해결책으로 널리 사용되고 있습니다. 이번 글에서는 트라이의 원리와 구현, 그리고 실제 응용 사례에 대해 알아보겠습니다.트라이(Trie)란?트라이는 검색 트리의 일종으로, 일련의 문자열을 저장하고 탐색하는 데 사용됩니다. 트라이는 각 문자열을 공통된 접두사(prefix)를 기준으로 묶어서 트리 구조로 나타냅니다. 이를 통해 문자열의 검색이 매우 빠르게 이루어지며, 시간 복잡도는 입력 문자열의 길이에 선형적으로 비례합니다. 즉.. 2024. 5. 5.
[알고리즘] 이진 검색 트리(Binary Search Tree, BST)의 이해와 Up & Down 게임 비교 이진 검색 트리란?이진 검색 트리(Binary Search Tree, 이하 BST)는 데이터의 검색 속도를 최적화하기 위해 고안된 데이터 구조입니다. 이 구조에서 각 노드는 최대 두 개의 자식 노드(왼쪽 및 오른쪽)를 가지며, 각 노드는 다음과 같은 특정 규칙을 준수합니다:노드의 왼쪽 하위 트리에 있는 모든 요소는 해당 노드보다 작습니다.노드의 오른쪽 하위 트리에 있는 모든 요소는 해당 노드보다 큽니다.이 규칙은 BST의 모든 레벨에 걸쳐 일관적으로 적용되며, 데이터를 효과적으로 분류하고 검색하는 데 큰 도움이 됩니다. 그림에서 보면 4가 6보다 작기 때문에 왼쪽으록 가게 됩니다. 반면에 2같은 경우는 3보다 크기 때문에 3의 왼쪽으로 와야합니다.이진 검색 트리의 장점 BST의 가장 큰 장점은 탐색 성능.. 2024. 5. 4.
[알고리즘] 우선순위 큐를 이진힙(Heap)으로 구현하기 우선순위 큐(Priority Queue)는 각 요소가 우선순위 값과 연관되어 있는 특별한 유형의 대기열입니다. 이것은 FIFO(First-In-First-Out) 대기열과는 다르게, 요소들이 우선순위에 따라 처리됩니다. 즉, 높은 우선순위를 갖는 요소가 낮은 우선순위를 갖는 요소보다 먼저 처리됩니다. 이것은 일상생활에서 VIP가 다른 사람들보다 먼저 서비스를 받는 것과 유사합니다. 우선순위 큐를 구현할 때, 이진힙(Heap) 자료구조를 사용하는 것이 일반적입니다. 이진힙은 완전이진트리(Complete Binary Tree)로서, 부모 노드의 값이 자식 노드의 값보다 항상 크거나 작은 성질을 가집니다. 이를 통해 우선순위 큐의 삽입(insert)과 삭제(delete) 연산을 O(logn)의 시간 복잡도로 .. 2024. 5. 3.
[알고리즘] 힙 데이터 구조: Complete Binary Tree와 우선순위 큐의 핵심 힙(Heap)은 컴퓨터 과학에서 널리 사용되는 중요한 데이터 구조 중 하나입니다. 이번 글에서는 힙이 무엇인지, 어떻게 구성되는지, 그리고 어떻게 활용되는지에 대해 알아보겠습니다. 특히, 힙이 Complete Binary Tree(완전 이진 트리)라는 속성을 가지고 있으며, 우선순위 큐(priority queue)를 구현하는 데 사용된다는 점을 강조할 것입니다.힙 데이터 구조 소개 힙은 완전 이진 트리로 구성됩니다. 여기서 완전 이진 트리란 마지막 레벨을 제외한 모든 레벨이 꽉 차 있고, 마지막 레벨의 노드들이 왼쪽부터 차례대로 채워진 트리를 말합니다. 이러한 특성은 배열을 사용하여 효율적으로 구현할 수 있습니다.Max Heap과 Min Heap힙은 두 가지 주요 유형으로 나뉩니다: Max Heap과 M.. 2024. 5. 2.
[알고리즘] 이진트리 유형 : Complete Binary Tree, Balanced Binary Tree, Full Binary Tree, Perfect Binary Tree 이진트리에는 4가지 유형이 주로 있습니다. Complete Binary Tree, Balanced Binary Tree, Full Binary Tree, Perfect Binary Tree 입니다. 이러한 4가지 유형의 트리를 알아야하는 이유는 데이터를 검색속도를 향상시키고 정확하고 빠르게 해당 데이터에 접근하기 위해서입니다. 각 유형별로 특징이 있기 때문에 해당 상황에 맞게 쓰시면 됩니다. 컴플리트 이진트리는 메모리 효율적인 데이터 구조로 사용됩니다. 배열을 기반으로 구현되어 메모리적으로 활용할 수 있으며, 우선순위큐 및 힙자료 구조 구현 등에도 사용됩니다.균형이진트리는 검색 및 삽입 작업을 효율적으로 수행해야하는 경우에 사용됩니다. 균형이진트리는 AVL 트리 레드블랙트리 형태로 사용됩니다. .. 2024. 5. 1.
[알고리즘] 이진 트리 순회 방법: 중위, 전위, 후위 순회에 대한 이해 이진 트리는 컴퓨터 과학에서 널리 사용되는 중요한 자료 구조 중 하나입니다. 각 노드가 최대 두 개의 자식 노드를 가질 수 있는 이진 트리는 데이터를 효율적으로 저장하고 탐색하는 데 사용됩니다. 이진 트리를 순회하는 것은 트리의 모든 노드를 방문하는 과정으로, 그 중에서도 중위, 전위, 후위 순회는 가장 흔히 사용되는 방법입니다.따라서 각 서브트리를 찾을때는 순회방식을 채택하여 알고리즘을 짜면 됩니다. ㅎㅎ   1. 중위 순회 (Inorder) 중위 순회는 왼쪽 하위 트리의 모든 노드를 먼저 방문한 후에 루트 노드를 방문하고, 마지막으로 오른쪽 하위 트리의 모든 노드를 방문하는 방식입니다. 이를 통해 트리의 노드를 오름차순으로 순회할 수 있습니다. 이러한 특성은 이진 탐색 트리(BST)에서 데이터를 검색.. 2024. 4. 30.
728x90