
데이터베이스(Database)는 데이터를 체계적으로 저장하고 관리하는 시스템입니다. 데이터베이스 시스템은 데이터의 저장, 검색, 수정, 삭제 등을 효율적으로 수행할 수 있게 해줍니다.
storage: 데이터를 저장하고 관리하는 컨셉적인 단어. 물리적인 하드웨어를 뜻하기도 한다. 데이터를 저장/관리라는 차원에서 크게 두가지 방법이 있다; file system & database
file system: 데이터를 효율적으로 관리하기 위한 저수준의 기술 기법. 파일 시스템은 컴퓨터의 저장 매체(HDD, SSD 등)에 데이터를 조직적으로 저장하고 관리하는 소프트웨어입니다. 파일 시스템은 데이터의 물리적 위치를 추적하고, 데이터를 파일과 디렉토리 형태로 구성하여 사용자가 쉽게 접근할 수 있도록 합니다. 주요 기능은 저장, 접근, 관리, 보호 정도.... 즉, 파일의 내용이 아닌 파일 덩어리로만 인식하며 수납만 잘 해주는 기능! 세밀한 검색이나 체계적인 정렬기능은 없다.
Database: file system보다 정렬, 탐색, 삭제와 추가에 용이하게 만든 시스템으로 파일 시스템 위에 데이터베이스가 작동한다고 생각하면 편하다. 특히 키와 인덱스를 활용한 정렬이 아주 효율적!
이진 탐색은 데이터베이스에서 효율적으로 데이터를 검색하기 위한 알고리즘 중 하나입니다. 이진 탐색은 정렬된 데이터를 기반으로 작동하며, 검색 속도를 크게 향상시킬 수 있습니다. 인덱스를 사용하여 데이터베이스에서 빠르게 특정 레코드를 찾는 데 활용됩니다.
이진 탐색은 다음과 같은 과정으로 작동합니다:
(1) 배열의 중간 요소를 선택합니다.
(2) 중간 요소가 찾고자 하는 값과 같은지 확인합니다.
(3) 같다면, 찾고자 하는 값을 찾은 것입니다.
다르다면, 찾고자 하는 값이 중간 요소보다 작은지 큰지를 확인합니다.
(4) 찾고자 하는 값이 중간 요소보다 작다면, 배열의 왼쪽 반쪽에서 탐색을 계속합니다.
(5) 찾고자 하는 값이 중간 요소보다 크다면, 배열의 오른쪽 반쪽에서 탐색을 계속합니다.
(6) 이 과정을 값이 찾아질 때까지 반복합니다.
이진 탐색의 시간 복잡도는 O(log n)으로, 매우 빠르게 값을 찾을 수 있습니다.
정렬 알고리즘은 주어진 데이터를 특정 순서(오름차순 또는 내림차순)로 정렬하는 알고리즘입니다. 정렬 알고리즘은 데이터베이스에서 데이터를 효율적으로 정리하고 관리하기 위해 사용됩니다. 정렬된 데이터는 검색, 삽입, 삭제 등의 작업에서 성능을 향상시킵니다. 데이터베이스 관리 시스템(DBMS)은 내부적으로 다양한 정렬 알고리즘을 사용하여 데이터를 정렬하고, 인덱스를 생성합니다.
다양한 정렬 알고리즘이 있으며, 각각의 특성과 성능이 다릅니다. 몇 가지 대표적인 정렬 알고리즘은 다음과 같습니다
(1) 버블 정렬 (Bubble Sort): 인접한 두 요소를 비교하여 잘못된 순서라면 교환하며 정렬합니다.
(2) 삽입 정렬 (Insertion Sort): 데이터를 하나씩 가져와 이미 정렬된 부분에 삽입하여 정렬합니다.
(3) 퀵 정렬 (Quick Sort): 피벗 요소를 기준으로 작은 값들은 왼쪽, 큰 값들은 오른쪽으로 분할하여 정렬합니다.
(4) 병합 정렬 (Merge Sort): 데이터를 반으로 나누고, 각각을 정렬한 후 병합하여 최종 정렬합니다.
트리 자료구조는 데이터베이스에서 데이터의 계층적 구조를 표현하고 관리하는 데 사용됩니다. 계층적으로 데이터를 조직화하는 비선형 자료구조입니다.
트리는 노드(Node)와 간선(Edge)로 구성됩니다. 트리의 주요 특징은 다음과 같습니다:
(1) 루트 노드 (Root Node): 트리의 시작점이 되는 노드입니다.
(2) 자식 노드 (Child Node): 특정 노드에서 나오는 다음 레벨의 노드입니다.
(3) 부모 노드 (Parent Node): 자식 노드를 포함하는 상위 레벨의 노드입니다.
(4) 잎 노드 (Leaf Node): 자식 노드가 없는 최종 노드입니다.
트리 자료구조는 다양한 용도로 사용됩니다:
이진 트리 (Binary Tree): 각 노드가 최대 두 개의 자식 노드를 가지는 트리입니다.
이진 탐색 트리 (Binary Search Tree): 왼쪽 자식은 부모보다 작은 값, 오른쪽 자식은 부모보다 큰 값을 가지는 이진 트리입니다.
힙 (Heap): 최대 힙과 최소 힙으로 나누어, 특정 조건을 만족하는 특수한 이진 트리입니다.
AVL 트리, 레드-블랙 트리: 자가 균형을 유지하는 이진 탐색 트리로, 특정 조건을 통해 트리의 높이를 최소화하여 검색, 삽입, 삭제 등의 작업을 효율적으로 수행합니다.
특히, 이진 탐색 트리(BST), B-트리, B+트리 등의 트리 구조는 데이터베이스에서 매우 중요한 역할을 합니다. 이러한 트리 구조는 데이터의 빠른 검색, 삽입, 삭제를 가능하게 하며, 인덱스 관리에 효과적입니다.
예를 들어, B-트리와 B+트리는 대용량 데이터를 효율적으로 관리하기 위해 고안된 자료구조로, 데이터베이스 인덱스에 많이 사용됩니다. 트리 구조를 사용하면 데이터의 검색, 삽입, 삭제 작업이 균형 있게 이루어져 성능을 최적화할 수 있습니다.
이진 탐색: 정렬된 데이터를 빠르게 검색하는 알고리즘.
정렬 알고리즘: 데이터를 정렬하여 데이터베이스의 효율성을 높이는 알고리즘들.
트리 자료구조: 데이터의 삽입, 삭제, 검색을 효율적으로 관리하는 자료구조.