본문 바로가기

CSKnowledge10

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