ComputerScience51 비선형 자료 구조 ✏️ 비선형 자료 구조 비선형 자료 구조란 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말합니다. 📌 그래프 그래프(Graph)는 정점과 간선으로 이루어진 자료 구조를 말합니다. 정점과 간선 어떠한 곳에서 어떠한 곳으로 무언가를 통해 간다고 했을 때 어떠한 곳은 정점(Vertex)이 되고 무언가는 간선(Edge)이 됩니다. 단방향 간선 단방향 간선(Directed Edge)은 간선이 가리키는 방향이 정해져 있는 간선을 말합니다. 예를 들어, A에서 B로 가는 길이 있지만 B에서 A로는 갈 수 없는 상황을 단방향 간선으로 표현할 수 있습니다. 이러한 간선으로 이루어진 그래프를 유향 그래프(Directed Graph)라고 합니다. 유향 그래프에서 각 간선은 화살표로 표시되어 간선의 방향을 나타냅니.. ComputerScience/비선형 자료 구조 2023. 11. 25. 선형 자료 구조 ✏️ 선형 자료 구조 선형 자료 구조는 요소가 일열로 나열되어 있는 자료 구조를 말합니다. 📌 연결 리스트 연결 리스트는 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료 구조입니다. 삽입과 삭제가 O(1)이 걸리며 탐색에는 O(n)이 걸립니다. 싱글 연결 리스트 싱글 연결 리스트(Singly Linked List)는 각 노드가 다음 노드에 대한 링크만을 포함하는 가장 간단한 형태의 연결 리스트입니다. 각 노드는 데이터와 다음 노드를 가리키는 포인터를 가집니다. 구조 : Node(data, next) 장점 : 구현이 간단하고, 적은 양의 메모리를 사용합니다. 단점 : 이전 노드로 바로 이동할 수 없어서 일부 작업(역방향 탐색)에서 비효율적입니다. 예시 : 다음 코드는 add 기능만.. ComputerScience/선형 자료 구조 2023. 11. 24. 시간 복잡도와 공간 복잡도 ✏️ 시간 복잡도 시간 복잡도는 어떤 알고리즘이 문제를 해결하는 데 소요되는 시간이 입력의 크기에 따라 어떻게 변하는지를 나타냅니다. 이는 일반적으로 최악의 경우(worst-case)를 기준으로 측정되며, 때로는 평균적인 경우(average-case)나 최선의 경우(best-case)도 고려됩니다. 빅오(Big-O) 표기법이은 알고리즘의 성능을 최악의 상황에서 분석하기 위해 사용되는 표현 방법입니다. 예를 들어, O(n)은 알고리즘이 입력 데이터의 크기(n)와 비례하여 시간이 증가한다는 것을 의미합니다. 추가적인 표기법으로 빅오메가(Ω) 표기법과 빅세타(Θ) 표기법이 있으며 각 표기법의 역할은 다음과 같습니다. 빅오메가(Ω) 표기법 - 알고리즘의 최선 성능을 나타냅니다. 예를 들어, Ω(n)은 알고리즘이.. ComputerScience/복잡도 2023. 11. 24. 조인의 원리 ✏️ 조인의 원리 조인 연산은 여러 가지 알고리즘에 기반하여 수행됩니다. 이러한 알고리즘들을 조인의 원리라고 합니다. 주요 조인 알고리즘으로는 중첩 루프 조인, 블록 중첩 루프 조인, 정렬 병합 조인, 해시 조인이 있습니다. 📌 중첩 루프 조인 중첩 루프 조인(NLJ, Nested Loop Join)은 중첩된 for 문과 같은 원리로 작동합니다. 외부 테이블의 각 행에 대해 내부 테이블의 모든 행을 순차적으로 검사하며 조인 조건을 만족하는지 확인합니다. 이 방식은 작은 테이블들에 대해 효과적이지만, 대용량의 테이블에서는 랜덤 접근에 대한 비용이 크게 증가하여 비효율적일 수 있습니다. 📌 정렬 병합 조인 정렬 병합 조인(Sort Merge Join)은 두 테이블을 조인 키로 정렬한 후, 이 정렬된 테이블들.. ComputerScience/조인의 원리 2023. 11. 24. 조인의 종류 ✏️ 조인의 종류 조인(Join)이란 두 개 이상의 테이블 또는 데이터 집합을 묶어서 하나의 결과물을 만드는 데이터베이스 연산입니다. 이 연산은 관계형 데이터베이스 시스템(RDBMS)에서 주로 사용되며, MySQL 같은 관계형 데이터베이스에서는 JOIN이라는 쿼리로 이를 처리합니다. MongoDB와 같은 NoSQL 데이터베이스에서도 유사한 작업을 수행할 수 있는데, 이는 $lookup 연산을 통해 가능합니다. $lookup은 두 개의 컬렉션을 결합하는 연산입니다, 이는 관계형 데이터베이스의 JOIN 연산과 비슷한 기능을 수행합니다. 그러나 중요한 점은 MongoDB가 기본적으로 문서 지향적인 NoSQL 데이터베이스로 설계되었다는 것입니다. 이로 인해 MongoDB는 조인 연산에 관계형 데이터베이스만큼 특.. ComputerScience/조인의 종류 2023. 11. 24. 인덱스 최적화 기법 ✏️ 인덱스 최적화 기법 데이터베이스의 인덱스 최적화는 성능 향상 및 쿼리 응답 시간 단축을 목표로 합니다. 인덱스 최적화 기법은 다양하지만, 주요 기법들을 몇 가지 소개하겠습니다. 📌 적절한 인덱스 선택 예시 : SELECT * FROM orders WHERE customer_id = 123; 쿼리가 자주 실행된다면 customer_id에 인덱스를 생성합니다. 데이터베이스에서 SELECT 쿼리는 데이터를 검색할 때 사용됩니다. 이때, 어떤 조건으로 데이터를 찾을지 정의하는 것이 WHERE 절입니다. 위의 예시에서는 customer_id가 123인 주문 데이터를 찾기 위한 쿼리입니다. 인덱스 없이 데이터를 검색할 때 데이터베이스는 orders 테이블의 첫 번째 레코드부터 마지막 레코드까지 모든 레코드를 .. ComputerScience/인덱스 2023. 11. 24. 인덱스의 필요성 ✏️ 인덱스의 필요성 인덱스는 도서관의 컴퓨터 시스템이나 색인 카드와 같은 역할을 합니다. 데이터베이스에 수백만, 혹은 수십억의 레코드가 있을 때, 원하는 데이터를 찾기 위해 모든 레코드를 순차적으로 검색하는 것은 매우 비효율적입니다. 인덱스를 사용하면, 데이터를 빠르게 찾을 수 있습니다. 인덱스는 특정 열(column)의 값과 해당 데이터가 저장된 위치를 매핑하여 테이블을 빠르게 검색할 수 있도록 도와줍니다. 따라서, 데이터 검색 속도를 크게 향상시킬 수 있습니다. 하지만, 인덱스를 과도하게 사용하면 데이터 삽입, 수정, 삭제 시 성능 저하를 초래할 수 있으므로 적절한 인덱스 설계와 사용이 중요합니다. 🌲 B-트리 B-트리는 데이터베이스와 파일 시스템에서 널리 사용되는 균형 잡힌 트리 자료구조입니다. .. ComputerScience/인덱스 2023. 11. 22. NoSQL 데이터베이스 ✏️ NoSQL 데이터베이스 NoSQL(Not only SQL)이라는 슬로건에서 생겨난 데이터베이스입니다. SQL을 사용하지 않는 데이터베이스를 말하며, 대표적으로 MongoDB와 redis 등이 있습니다. 🍃 Mongo DB MongoDB는 JSON을 통해 데이터에 접근할 수 있으며, 데이터는 Binary JSON 형태(BSON)로 저장됩니다. 와이어드타이거 엔진은 기본 스토리지 엔진으로 사용되며, MongoDB는 도큐먼트 지향적 데이터 모델을 기반으로 합니다. 이 데이터베이스는 확장성이 뛰어나며 빅데이터 저장에 있어서 우수한 성능을 보입니다. 고가용성 샤딩, 레플리카셋을 지원하며, 스키마를 사전에 정의하지 않고 데이터를 삽입할 수 있는 유연성을 가집니다. 이러한 특성 때문에 다양한 도메인의 데이터베이.. ComputerScience/데이터베이스의 종류 2023. 11. 22. 관계형 데이터베이스 ✏️ 관계형 데이터베이스 관계형 데이터베이스(RDBMS)는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리키며 SQL이라는 언어를 써서 조작합니다. MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등이 있습니다. 참고로 관계형 데이터베이스의 경우 표준 SQL은 지키기는 하지만, 각각의 제품에 특화시킨 SQL을 사용합니다. 예를 들어 오라클의 경우 PL/SQL이라고 하며, SQL Server에서는 T-SQL, MySQL은 SQL을 사용합니다. 더보기 💡 SQL SQL(Structured Query Language)는 구조화된 질의 언어로 번역됩니다. 이는 데이터베이스에서 데이터를 질의, 조작, 정의 및 제어하기 위해 설계된 특수 목적의 프로그래밍 언어입니다.. ComputerScience/데이터베이스의 종류 2023. 11. 22. 트랜잭션 ✏️ 트랜잭션 트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 연속된 작업의 단위를 의미합니다. 일련의 쿼리들로 구성될 수 있으며, 트랜잭션의 수행 중에 오류가 발생하면 이미 진행된 작업들도 모두 취소되며, 오류 없이 성공적으로 수행되면 모든 작업이 한꺼번에 적용됩니다. 트랜잭션에 대한 특징은 원자성, 일관성, 독립성, 지속성이 있으며 이를 한꺼번에 ACID 특징이라고 합니다. 💥 원자성 원자성은(Atomicity)은 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징입니다. 예를 들어 트랜잭션을 커밋했는데, 문제가 발생하여 롤백하는 경우 그 이후에 모두 수행되지 않음을 보장하는 것을 말합니다. 예를 들어 고객 A는 자신의 은행 계좌에서 500달러를 고객 B의 계좌로 이.. ComputerScience/트랜잭셕과 무결성 2023. 11. 22. ERD ✏️ ERD ERD(Entity Relationship Diagram)는 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것입니다. ✅ ERD의 중요성 ERD는 시스템의 요구 사항을 기반으로 작성되며 이 ERD를 기반으로 데이터베이스를 구축합니다. 데이터베이스를 구축한 이후에도 디버깅 또는 비즈니스 프로세스 재설계가 필요한 경우 설계도 역할을 담당하기도 합니다. 하지만 ERD는 관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용할 수 있지만 비정형 데이터를 충분히 표현할 수 없다는 단점이 있습니다. 더보기 💡 비정형 데이터 비구조화 데이터를 말하며, 미리 정의된 모델이 없거나 미리 정의된 방식으로 정리되지 않은 정보를 말합니다. ⚙️ 정규화 과정 정규화 과정.. ComputerScience/ERD와 정규화 과정 2023. 11. 22. 데이터베이스 테이블 관계와 키 ✏️ 데이터베이스 테이블 관계 데이터베이스에 테이블은 하나만 있는 것이 아닙니다. 여러 개의 테이블이 있고 이러한 테이블은 서로의 관계가 정의되어 있습니다. 이러한 관계를 관계화살표로 나타냅니다. 1:1 관계 예를 들어 한 명의 국민은 한 개의 주민등록증을 가질 수 있습니다. 반대로 각 주민등록증은 한 명의 국민에게만 발급됩니다. 이 경우 1:1 관계가 형성됩니다. 이러한 1:1 관계는 데이터베이스 설계에서는 그렇게 흔하지 않을 수 있지만, 특정 정보의 독립성을 보장하거나 추가 정보를 제공하는데 유용할 수 있습니다. 1:N 관계 예를 들어 교사와 학생에 상황에서 한 명의 교사는 여러 명의 학생을 지도할 수 있습니다. 그러나, 각 학생은 하나의 반에서만 수업을 들을 수 있기 때문에 한 명의 교사에게만 지도.. ComputerScience/데이터베이스 기본 2023. 11. 21. 이전 1 2 3 4 5 다음