DB 17

[DB] 면접 예상 질문(2)

인덱스란? 인덱스란 추가적인 저장 공간을 활용하여 데이터베이스 처리 속도를 향상시키기 위한 자료구조를 의미합니다. 스키마란? 관계형 데이터베이스에서 데이터베이스에 대한 전체적인 구조와 제약조건에 대한 명세를 기술한 정의를 의미합니다. 관계형 데이터베이스 명령어 종류를 설명해주세요. 관계형 데이터베이스 명령어는 크게, 정의어(DDL), 조작어(DML), 제어어(DCL) 로 나눌 수 있습니다. 정의어는 테이블(TABLE), 인덱스(INDEX) 등의 개체를 만들고 관리하는데 사용되는 명령어로 CREATE, ALTER, DROP 등이 있습니다. 조작어는 데이터 검색, 삽입, 갱신, 삭제를 위한 명령어로 SELECT, DELETE, UPDATE, INSERT 등이 있습니다. 제어어는 데이터 핸들링 권한 설정, 데..

DB 2023.08.06

[DB] 트랜잭션 격리 수준(Transaction Isolation Levels)

트랜잭션 격리 수준(Transaction Isolation Levels) 데이터베이스에서 동시에 여러 트랜잭션이 동작할 때, 트랜잭션들 사이에서 어떻게 데이터의 일관성과 격리를 유지할지를 정의하는 개념 데이터베이스 시스템은 보통 다양한 격리 수준을 제공하여 사용자가 필요에 맞게 선택할 수 있도록 한다. 1. READ UNCOMMITTED 한 트랜잭션에서 변경한 데이터가 커밋되지 않더라도 다른 트랜잭션에서 해당 데이터를 읽을 수 있음 이로 인해 Dirty Read(더티 리드), Non-Repeatable Read(비반복 가능한 읽기), Phantom Read(유령 읽기)와 같은 문제가 발생할 수 있다. 이러한 문제들로 인해 READ UNCOMMITTED 격리 수준은 일반적으로 사용되지 않는다. 2. REA..

DB 2023.08.06

[DB] Redis의 영속성과 복구: 스냅샷과 AOF란?

Redis는 인메모리 데이터베이스로 모든 데이터를 메모리(RAM)에 저장합니다. 때문에 서버가 종료되면 RAM에 저장된 데이터는 모두 사라지겠죠. 즉, 데이터의 지속성은 보장하지 않습니다. 그렇다면, Redis는 데이터의 영속성을 어떻게 보장할까요? 1. 스냅샷 (Snapshot): 스냅샷은 Redis의 데이터를 특정 시점의 상태를 파일로 저장하는 기능입니다. 일정 시간 간격으로 데이터를 스냅샷 파일에 저장하면서 Redis가 비정상적으로 종료되거나 서버가 다시 시작될 경우, 이 스냅샷 파일을 사용하여 데이터를 복구할 수 있습니다. 예시: Redis에 10개의 키-값 쌍을 저장한 상태라고 가정합시다. 스냅샷이라는 기능을 사용하여 현재 데이터 상태를 스냅샷 파일로 저장하였습니다. 그리고 갑작스럽게 Redis..

DB 2023.08.01

[DB] 검색 엔진: 역색인(Inverted Index) 구조란?

Inverted Index(역색인) 검색 엔진에서 사용되는 데이터 구조로, 효율적인 텍스트 검색을 가능하게 합니다. 역색인은 문서에 등장하는 단어들을 기준으로 구축되며, 각 단어가 어떤 문서에 등장하는지를 기록하는 방식으로 동작합니다. 일반적으로 텍스트 데이터는 문서 단위로 구분되고, 각 문서는 여러 단어로 구성됩니다. 역색인은 이러한 각 단어를 중심으로 데이터를 구조화합니다. 각 단어는 해당 단어를 포함하고 있는 문서들의 위치 정보와 함께 색인되어 저장됩니다. 예를 들어, 다음과 같은 세 개의 문서가 있다고 가정해봅시다: 문서 1: "I like apples." 문서 2: "Apples are delicious." 문서 3: "I like oranges." 이 경우 역색인은 다음과 같이 구축될 수 있습..

DB 2023.07.31

[DB] NOSQL 특징: 분산 확장성

수평 확장(Horizontal Scaling)과 분산 처리(Distributed Processing)는 NOSQL 데이터베이스의 중요한 특징입니다. 1. 수평 확장 (Horizontal Scaling): 데이터베이스의 성능을 향상시키기 위해 서버 또는 노드의 수를 늘리는 방식 즉, 데이터베이스에 새로운 서버 또는 노드를 추가하여 처리 능력을 확장하는 것을 의미합니다. 이렇게 분산된 노드는 동등한 역할을 수행하며 데이터를 분산 저장하고 처리합니다. 예를 들어, 하나의 NOSQL 데이터베이스를 사용하여 웹 서비스를 운영한다고 가정해봅시다. 초기에는 단일 서버만으로 웹 서비스를 처리할 수 있지만 시간이 지남에 따라 트래픽이 증가하면서 성능 문제가 발생할 수 있습니다. 이럴 때 수평 확장을 적용하여 새로운 서버..

DB 2023.07.31

[DB] 면접 예상 질문(1)

★ 데이터베이스에서 인덱스를 사용하는 이유 및 장단점에 대해 설명해주세요. 데이터베이스에서 인덱스를 사용하는 이유는 검색 성능을 향상시키기 위함입니다. 하지만 검색 성능을 실질적으로 향상시키기 위해서는 해당 쿼리가 index를 사용하는지, 카디널리티(Cardinality: 전체 행에 대한 특정 컬럼의 중복 수치를 나타내는 지표), 선택도(Selectivity) 같은 요소들이 고려된 인덱스가 생성되어야 합니다. 일반적인 경우의 장점으로는 빠른 검색 성능을 들 수 있습니다. 일반적인 경우의 단점으로는 인덱스를 구성하는 비용 즉, 추가, 수정, 삭제 연산 시에 인덱스를 형성하기 위한 추가적인 연산이 수행됩니다. 따라서, 인덱스를 생성할 때에는 트레이드 오프 관계에 놓여있는 요소들을 종합적으로 고려하여 생성해야..

DB 2023.07.31

[DB] 인덱스(Index)란?

인덱스(Index)란? 데이터베이스에서 특정 컬럼(또는 여러 컬럼의 조합)의 값을 빠르게 찾아내기 위한 자료구조 데이터베이스 성능을 향상시키는 데 도움을 주는 개념 주로 데이터베이스의 검색 작업을 최적화하고, 데이터를 빠르게 접근하고 필터링하는 데 사용 데이터베이스의 레코드들을 정렬된 형태로 유지하며, 검색 시 해당 값이 존재하는 위치를 빠르게 찾아냄 이를 통해 데이터베이스는 모든 레코드를 순차적으로 검색하는 것보다 빠르게 원하는 값을 찾아낼 수 있음 B-Tree 혹은 Hash Table과 같은 자료구조로 구현 주요 장점: 1. 검색 성능 향상 인덱스가 적용된 컬럼을 검색하는 쿼리는 인덱스를 사용하지 않은 경우보다 빠르게 실행됩니다. 데이터베이스가 해당 인덱스를 통해 검색 대상 값을 빠르게 찾아낼 수 있..

DB 2023.07.31

[DB] 윈도우 MariaDB utf8 설정 방법

https://ryureeru.tistory.com/4 [DB Error] 한글 입력 오류 SQL Error [1366] [22007]: (conn=20) Incorrect string value why ? 한글은 utf-8을 사용해야 한다는 점 !! 1. 기본 변수 확인 2. 테이블 인코딩 값 확인 3. 컬럼 인코딩 값 확인 해결 방법 테이블 기본 인코딩 값을 utf-8 ryureeru.tistory.com 예전에 my.ini 파일을 건드리지 않고 끝냈던 게 생각나서 .. !! 정리합니다 ~ 1. MariaDB 서비스 중지 2. mariadb-x.x.x\data\my.ini 파일 기존 거에서 추가해 주세요! [mysqld] init_connect="SET collation_connection = utf..

DB 2022.12.06

[DB] MariaDB - 원격 접속

지금까지 로컬에 개발 세팅을 했었다 그치만 대부분의 데이터베이스 서버는 원격에서 접속해서 구현된다 !! 윈도우에서 리눅스 서버에 접속한 후 DB를 접근하는 방법이 아닌 직접 DB를 접속하기 위한 방법을 알아보자 쉽게 말해, 윈도우 cmd 창에서 mysql -h [리눅스서버 ip] -u root -p 를 통해 직접 DB에 접속하기 위한 방법을 알아보자는 뜻이다 1. Local Address 확인 netstat -anpt netstat -anpt 명령어를 통해 Local Address가 127.0.0.1:3306으로 열려 있는 것을 확인 2. my.cnf 파일 수정 cd /etc/mysql 경로를 이동해서 보면 my.cnf 파일이 있다 vi my.cnf [mysqld] bind-address=0.0.0.0 ..

DB 2022.10.19