데이터베이스 인덱스
·
Computer Science/Database
인덱스란?데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로 저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지한다 (MySql InnoDB 기준) 값을 항상 정렬된 상태로 유지하는 이유는 B-Tree의 변형 구조인 B+Tree 자료구조를 통해 인덱스를 구현하기 때문이다 먼저 B-Tree의 구조를 알아보자 B-Tree B-Tree는 균형 잡힌 트리 구조를 가지며, 데이터를 정렬된 상태로 유지하는 특징을 갖고 있다 B-Tree에서는 크게 3가지의 노드가 존재한다루트 노드 (최상위)리프 노드 (최하위)브랜치 노드 (중간) B-Tree는 모든 데이터를 순회하기 위해서 트리의 모든 노드를 방문해야 한다는 단점이 존재하다 그렇기에 이를 개선한 B+Tree가 인덱스의 자료구조로 채택되었다 B+Tree ..
Redis
·
Computer Science/Database
특징인메모리 기반의 키-값 구조 데이터 관리 시스템모든 데이터를 메모리에 저장하여 빠른 읽기/쓰기 속도 제공싱글 스레드 기반한 번의 하나의 명령만 실행Redis 6.0부터는 멀티스레딩 I/O를 지원하기 시작했지만 코어 로직은 여전히 싱글 스레드 https://charsyam.wordpress.com/2020/05/05/%EC%9E%85-%EA%B0%9C%EB%B0%9C-redis-6-0-threadedio%EB%A5%BC-%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90/데이터 구조StringsRedis의 가장 기본적인 데이터 타입최대 512MB의 길이를 가질 수 있음binary safe하며 JPEG image 같은 데이터도 포함할 수 있음Lists삽입 순서로 정렬된 String List..
저장 프로시저 (Stored PROCEDURE)
·
Computer Science/Database
저장 프로시저는 SQL 문장들의 집합으로, 데이터베이스에 저장되어 필요할 때 호출하여 실행할 수 있는 프로그램 단위이다 프로시저의 특징재사용성자주 사용되는 쿼리를 모듈화하여 필요할 때마다 호출 가능성능 향상최초 실행 시 컴파일되어 캐시에 저장, 이후 실행 시 빠른 속도로 처리네트워크 트래픽 감소하나의 요청으로 여러 sql문을 실행할 수 있음보안 강화테이블 직접 접근 대신 프로시저 접근 권한 부여로 보안 강화 단점초기 컴파일 후 변경된 데이터 환경에 대한 최적화 어려움실행 과정최초 실행: 구문 분석, 최적화, 컴파일 과정이후 실행: 캐시된 실행 계획을 사용하여 처리데이터 분포, 데이터의 양, 인덱스 변경, 통계 정보, 하드웨어 리소스 등의 변화가 일어나도 초기에 캐시된 실행 계획을 계속 사용하기 때문에 발..
SQL과 NoSQL
·
Computer Science/Database
SQL관계형 데이터베이스 관리 시스템(RDBMS)의 데이터를 관리하기 위해 설계된 프로그래밍 언어장점데이터는 정해진 데이터 스키마에 따라 테이블에 저장 → 무결성 보장스키마: 테이블, 열, 관계, 제약 조건 등의 정보를 포함데이터는 관계를 통해 여러 테이블에 분산정규화 과정 (데이터의 중복을 피하고 일관성을 유지하기 위한 원칙)ACID 원칙을 준수하여 트랜잭션의 안정성 보장단점스키마 변경이 어려워 유연성이 떨어짐복잡한 조인 쿼리로 인한 성능 저하 가능성대체로 수직적 확장만 가능수평적 확장이 어려운 이유테이블 간 관계로 데이터 분산이 복잡함스키마 변경 시 모든 서버에 영향ACID 준수를 위한 오버헤드 발생JOIN 연산이 서버 간에 이루어져야 하므로 성능 저하사용 사례금융, 결제 등 데이터 정합성이 중요한 ..