목록전체 글 (4)
개발 메모장
오늘은 컴파일 언어와 인터프리터 언어에 대해 알아보겠습니다. 또한 많이 사용되는 언어들이 어떤 언어인지도 살펴보도록 하겠습니다.1. 컴파일 언어(Compiled Language)컴파일 언어는 소스 코드가 실행되기 전에 컴파일러를 통해 기계어로 변환되는 언어입니다. 이 과정에서 전체 소스 코드가 기계어로 변환되며, 변환된 기계어 코드는 특정 운영 체제와 하드웨어에서 직접 실행됩니다.예시: C, C++, Go장점:빠른 성능: 컴파일된 기계어 코드는 직접 실행되기 때문에 성능이 뛰어납니다.최적화: 컴파일러는 다양한 최적화 기법을 적용하여 성능을 개선할 수 있습니다.단점:플랫폼 종속성: 기계어는 특정 운영 체제와 하드웨어에 종속적입니다. 따라서 코드의 이동성과 호환성에 제약이 있을 수 있습니다.1.1 컴파일러(..
오늘은 MySQL의 스토리지 엔진 중 하나인 InnoDB에 대해 알아보겠습니다.1. InnoDB 특징InnoDB는 다음과 같은 특징을 가집니다.레코드 기반의 잠금 제공: 행 수준의 잠금(Record Lock)을 통해 동시성을 향상시키고, 테이블 전체 잠금과 관련된 성능 문제를 줄입니다.프라이머리 키에 의한 클러스터링: 프라이머리 키를 기준으로 데이터를 클러스터링하여 데이터 접근 성능을 높입니다.외래 키 지원: 참조 무결성(Foreign Key Constraints)을 제공하여 데이터베이스의 관계형 모델을 지원합니다.MVCC (Multi-Version Concurrency Control): 다중 버전 동시성 제어를 사용해 트랜잭션 격리 수준에서 잠금 없이 일관된 읽기(Consistent Read)를 제공합..
이번 글에서는 MySQL 아키텍처에 대해 알아보겠습니다.1. MySQL 아키텍처MySQL의 아키텍처는 크게 2가지로 나눌 수 있습니다.1.1 MySQL 엔진요청된SQL 문장을 분석하고 최적화하는 등의 작업을 수행합니다.MySQL 엔진은 다음의 요소들로 구성되어 있습니다.쿼리 파서: 요청된 쿼리 문장을 토큰으로 분리 하여 파서 트리로 만드는 작업을 수행합니다.전처리기: 파서 트리를 기반으로 쿼리 문장에 구조적인 문제점이 있는지 확인합니다.옵티마이저: 쿼리 문장을 어떻게 실행할지 계획을 작성합니다.실행 엔진: 계획을 바탕으로 핸들러 API를 호출합니다.1.2 스토리지 엔진실제 데이터를 디스크 스토리지에 저장하거나 읽어오는 작업을 수행합니다.MySQL의 경우 스토리지 엔진을 플러그인해서 사용할 수 있으며, 동..
결합도(Coupling)와 응집도(Cohesion)은 소프트웨어 공학에서 중요한 개념으로, 소프트웨어의 구조와 품질을 평가하는 데 중요한 역할을 하며, 잘 설계된 시스템은 높은 응집도와 낮은 결합도를 가집니다. 이번 글에서는 결합도와 응집도가 무엇인지, 그리고 왜 중요한지에 대해 알아보겠습니다.1. 모듈(Module)과 모듈화(Modularization)모듈은 소프트웨어 기능을 독립적이고 재사용 가능하게 설계하기 위해 논리적으로 분리된 코드의 집합을 말합니다.모듈화는 소프트웨어를 여러 개의 모듈로 분할하는 과정을 말합니다.1.1 모듈의 특징독립성: 각 모듈은 다른 모듈과 독립적으로 작동할 수 있습니다.재사용성: 모듈은 여러 곳에서 재사용할 수 있습니다.캡슐화: 모듈은 자신의 데이터와 기능을 내부적으로 유..