본문 바로가기

전체 글

(212)
[알고리즘 이론] 유니온 파인드 (Union-Find) 알고리즘 문제를 풀다 보면 "여러 개의 노드 중에서 이 두 노드가 같은 그래프에 속해 있을까?"를 확인해야할 경우가 있다. 이때 가장 효율적으로 사용할 수 있는 자료구조가 바로 유니온 파인드 알고리즘이다. 1. 유니온 파인드(Union-Find)란?유니온 파인드는 다음의 두 가지 핵심 연산을 지원하는 상호 배타적 집합 자료구조이다.기본적으로 트리 구조를 활용하며, 각 노드는 자신의 부모 노드 번호를 가리키는 하나의 배열(parent)을 가지고 관리된다.union (합치기): 두 개의 원소가 속한 집합을 하나의 집합으로 합친다find (찾기): 특정 원소가 속한 집합이 어디인지 즉, 해당 집합의 루트 노드가 어디인지 찾는다.2. 어떤 상황에 사용하는가그래프의 연결 요소 판별두 노드가 같은 그래프에 속해 있..
한국대학생IT경영학회(KUSITMS) 33기 기업프로젝트 회고 기업프로젝트란다른 IT 개발 동아리와 비교했을 때 오직 큐시즘에서만 경험할 수 있는 활동은 당연히 기업프로젝트이다.기업프로젝트란 실제 기업과 연계하여 해당 기업이 겪고 있는 페인포인트를 해결하기 위한 아이디어를 기획/개발하는 프로젝트이다. 이번 33기 기업프로젝트에는 IT 외주 전문 스타트업 리트머스와 LG전자가 참여했다. LG전자의 네임벨류와 고민했지만 나는 리트머스의 과제가 더 개발적으로 기여할 부분이 많다고 느꼈고, 평소 스타트업이 일하는 방법이 궁금했기에 리트머스를 최종적으로 선택했다.리트머스의 페인포인트리트머스는 고객사와의 협업 과정에서 구조적인 비효율을 겪고 있었다.가장 핵심적인 문제는 소통 채널의 분산이었다. 이에 대해 자세히 알아보기 위해 저희는 리트머스의 실제 PM분과 인터뷰를 통해 문제..
[데이터베이스응용] 벡터 DB 1. 왜 AI 서비스에서 벡터 DB가 필요한가기존 데이터베이스는 정확한 키워드 일치 기반 검색에 특화되어 있다. 숫자 비교나 정형 데이터 처리에는 강점을 보이지만, AI 서비스에서 다루는 비정형 데이터를 의미 단위로 검색하는 데는 본질적인 한계가 있다.SELECT *FROM productsWHERE product_name LIKE '%배터리%';위와 같은 쿼리는 "배터리"라는 단어가 포함된 문서만 검색한다. 사용자가 "노트북 배터리가 빨리 닳아요"라고 질문했을 때 실제로 원하는 정보는 절전 모드 설정, 전원 관리 옵션, 배터리 수명 관리 방법 같은 내용일 수 있다. 하지만 기존 검색은 단어 포함 여부만 판단하기 때문에 이런 관련 정보를 놓칠 수 있다.의미 기반 검색의미 기반 검색(Semantic Sear..
[데이터베이스응용] SQLite 1. SQLite란SQLite는 가벼운 파일 기반 관계형 데이터베이스 관리 시스템(RDBMS)이다. 별도의 서버 없이 단일 파일로 동작하며, 애플리케이션 내부에 라이브러리처럼 직접 포함해 사용하는 내장형(Embedded) DBMS다.MySQL이나 PostgreSQL은 DB 서버를 별도로 실행해야 하지만, SQLite는 .db 파일 하나만 있으면 동작한다. 이 파일 하나 안에 테이블, 인덱스, 데이터, 메타데이터가 모두 저장된다.SQLite DB 파일├─ Table B-Tree Page → 실제 테이블 행 저장├─ Index B-Tree Page → 인덱스 엔트리 저장└─ Metadata Page → DB 구조 정보 저장주요 특징을 정리하면 다음과 같다.서버가 필요 없음하나의 파일이 하나의 데이터..
[데이터베이스응용] PostgreSQL 저장 구조 1. PostgreSQL 개요PostgreSQL은 오픈소스 관계형 데이터베이스 관리 시스템이다. MySQL, Oracle, SQL Server처럼 데이터를 테이블 형태로 저장하고 SQL을 사용해 데이터를 조회·삽입·수정·삭제한다.트랜잭션, 동시성 제어, 복잡한 질의 처리에 강하며 다양한 확장 기능을 제공한다는 점에서 웹 서비스, 업무 시스템, 분석 시스템, GIS 데이터 처리 등 폭넓은 영역에서 사용된다.PostgreSQL의 주요 특징특징설명오픈소스 DBMS무료로 사용할 수 있으며 소스 코드가 공개되어 있음관계형 데이터베이스데이터를 테이블, 행, 열 구조로 저장트랜잭션 지원데이터의 일관성과 안정성을 보장다중 버전 동시성 제어 지원여러 사용자가 동시에 접근해도 안정적으로 처리확장성 우수함수, 데이터 타입,..
[데이터베이스응용] InnoDB와 스토리지 엔진 1. 스토리지 엔진SQL을 실행하면 DBMS 내부에서는 인덱스 탐색, 디스크 읽기, 메모리 캐싱, 행 조회, 잠금 처리, 로그 기록 같은 다양한 작업이 일어난다. 이 작업을 담당하는 것이 스토리지 엔진(Storage Engine)이다. SQL이 사용자의 명령이라면 스토리지 엔진은 실제 저장 장치를 다루는 내부 장치다.MySQL 구조와 스토리지 엔진 역할MySQL은 서버 계층과 스토리지 엔진 계층으로 나뉜다.사용자 SQL↓[ MySQL 서버 계층 ] SQL 문법 검사 실행 계획 생성 권한 확인↓[ 스토리지 엔진 ] 데이터 저장 인덱스 관리 잠금 처리 복구 처리↓디스크 파일MySQL에서 사용할 수 있는 주요 스토리지 엔진은 다음과 같다.엔진특징InnoDB현재 기본 엔진MyISAM과거에 많이 사용..
[데이터베이스응용] B+Tree 인덱스 구조와 복합 인덱스 설계 원칙 1. 인덱스 종류와 용도 구분데이터베이스에서 사용하는 인덱스는 검색 목적에 따라 구조가 다르다.FULLTEXT 인덱스와 B+Tree 인덱스FULLTEXT 인덱스는 긴 문장이나 게시글처럼 텍스트에서 특정 단어를 빠르게 찾기 위한 구조다. DBMS는 문장을 처음부터 끝까지 비교하는 대신 단어 중심으로 미리 만들어 둔 인덱스를 활용하며 MATCH() AGAINST() 구문으로 사용한다.B+Tree 인덱스는 특정 값과 일치하는 행을 찾거나 범위에 해당하는 행을 검색할 때 사용한다.구분FULLTEXT 인덱스B+Tree 인덱스주요 목적문장/단어 검색값 검색/범위 검색예시 조건'인공지능'이 포함된 글student_id = 2024001검색 방식단어 중심 검색정렬된 키 중심 검색대표 SQLMATCH() AGAINST(..
[데이터베이스응용] 전체 텍스트 검색 및 데이터 백업 1. 전체 텍스트 검색LIKE 검색의 한계신문 기사나 게시글처럼 긴 문자열에서 특정 키워드를 찾을 때 LIKE '교통%'처럼 앞에 고정 문자가 있으면 B-Tree Index를 활용할 수 있다. 하지만 LIKE '%교통%'처럼 %가 앞에 오는 순간 검색 시작 위치를 알 수 없기 때문에 인덱스를 사용할 수 없다. 결과적으로 전체 테이블 스캔이 발생하고 서버에 엄청난 부하가 걸린다.MySQL은 이 문제를 해결하기 위해 긴 텍스트 데이터를 키워드 기반으로 빠르게 검색하는 전체 텍스트 검색(Full-Text Search) 기능을 제공한다. 이 기능의 핵심이 텍스트 인덱스(FULLTEXT Index)다.텍스트 인덱스 생성텍스트 인덱스를 생성하는 방법은 세 가지다.방법 1 — 테이블 생성 시 함께 지정CREATE T..