본문 바로가기
728x90
반응형

Database18

[Redis] 설치, Redis란 Redis (Remote Dictionary Server) 개요 고성능의 키-값(key-value)저장소로, 거대한 맵(Map=dictionary) 데이터 저장소형태를 가지고 데이터를 메모리에 저장(인메모리 데이터베이스)하여 빠른 읽기와 쓰기를 지원 - 성능을 위해 사용mariadb도 캐싱을 통해 메모리에 임시저장할 수 있지만 기본적으로 스토리지를 사용하기 때문에 보다 느리다주로 캐싱, 세션관리(로그인 인증값은 빈번하게 조회되고 빨리 조회되어야 하기 때문에 redis로 사용), db 동시성 제어(RDB 차원에서 지원하는 락은 update 시 select for update(조회)와 동시에 해야하기 때문에 느리고, 데드락 이슈 발생 가능 - Redis는 락의 유무를 관리해서 select for update.. 2023. 11. 27.
[MariaDB] DB 서버 구성 DB 서버 구성(아키텍처) DB의 사용성에 문제가 생기지 않도록 하는 고가용성(HA) 확보를 위한 방안(하나가 문제가 생길 때 대처 가능하도록)클러스터링1대의 스토리지(저장소)와 여러대의 서버(프로그램) 운영active/active(둘 다 활성화), active/stanby(하나만 활성화) active/active 시 로드밸런싱(한 곳으로 부하가 몰리지 않도록 분산해주는 것) 필요레플리카n개의 (스토리지, 서버) 를 운영하나의 스토리지와 하나의 서버가 한쌍으로 운영됨(이 세트가 n개)샤딩같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법분산 시 어떤 데이터베이스에 내가 원하는 데이터가 있는지 한번에 찾기 위한 규칙(기준)이 필요 - 샤딩 전략클러스터링DB를 한 대만 운영 할 .. 2023. 11. 27.
[MariaDB] 정규화 정규화 실습 데이터https://docs.google.com/spreadsheets/d/18q1zXxHk69SwHiD6nc5fD_lLMqrX52gJNFLtzx6NSo8/edit#gid=138746620함수적 종속성f(x)=y함수적 종속이라는 표현은 수학의 함수에서 유래y는 x의 값에 의해 결정되는 관계로서, y는 x에 종속적이고, 이를 수학적인 표현에서는 y는 x에 함수종속적이다 라고 표현정규화 관련해서 빈번히 사용되는 표현으로서, a가 b에 함수종속적이다 하면 b의 값에 의해 a가 결정됨을 의미예시)학번과 학부학번 -> 학부즉, 학번에 따라 학부가 결정되므로, 학부는 학번에 함수 종속적등록금과 학부학부 -> 등록금학부에 따라 등록금이 결정되므로, 등록금은 학부에 함수 종속적정규화란 관계형 스키마를 더 .. 2023. 11. 27.
[MariaDB] DB 설계 테이블 간의 참조 관계의 종류1:n관계author입장에서의 post와의 관계n:1관계post입장에서의 author와의 관계1:1관계한 테이블의 레코드가 다른 테이블의 레코드 하나와만 관련author테이블과 author_address 테이블로 분리 가능n:m관계만약 여러 author가 posting 글 1개를 수정할 수 있다면 n:m 관계post의 author_id가 multi가 되므로, author_id를 문자열로 하여 여러개 두는 것은 가능.그러나 정규화가 되지 않는 문제 발생해결책연결테이블을 만들어 1:n, n:1 관계로 풀어주는 것이 일반적인 해결책post_author 와 같은 테이블 생성post_author는 post와 n:1관계, author와 n:1관계 데이터모델링데이터 모델링이란 구축할 DB.. 2023. 11. 27.
[MariaDB] DB Dump DB Dump데이터베이스의 구조와 데이터를 SQL 형식으로 추출하는 데 사용되는 방식을 Dump라 함. 주로 특정 DB에서 다른 DB로 데이터와 DB구조를 이전, 복사, 백업 할때 사용데이터베이스 dumpmysqldump -u [username] -p [password] [database_name] > dumpfile.sqlmariaDB에서도 mysql명령어를 사용함에 유의(MariaDB가 MySQL의 fork였던 관계로, 여전히 MySQL관련 명령어 사용됨)덤프파일을 별도의 에디터에서 추가 작업하지 않도록 유의 → UTF8이 아닌 UTF16이 되면 복원에서 에러dump파일 복원스키마는 생성 필요mysql -u [new_username] -p[new_password] [new_database_name] .. 2023. 11. 24.
[MariaDB] 저장 프로시저 저장 프로시저저장 프로시저(Stored Procedure)는 데이터베이스에 저장되어 실행될 수 있는 하나 이상의 SQL문의 집합특성SQL문을 미리 컴파일하여 저장함으로써 데이터베이스 서버의 부하를 줄이고 성능을 향상한 번 작성된 저장 프로시저는 여러번 재사용복잡한 조건문 반복문 등을 프로시저에서는 프로시저 문법에 맞게 사용할 수 있음SQL은 본질적으로 선언문으로서 제어문에 대한 유연성 낮음(반복문 불가)프로시저는 절차적 언어로서 제어문 사용 가능데이터베이스 수준에서 직접 접근 권한을 제어할 수 있으므로 보안을 강화특정 사용자에게 프로시저 실행권한 부여GRANT EXECUTE ON PROCEDURE 데이터베이스명.프로시저명 TO ‘testuser’@’localhost’; 목적개발자가 자주 사용하는 쿼리를 .. 2023. 11. 24.
[MariaDB] 사용자 관리 사용자관리 신규 사용자 생성CREATE USER 'testuser'@'localhost' IDENTIFIED BY ‘testpw’;어떤 곳에서도 원격접속을 가능하도록 하려면 localhost대신 % 기호 사용사용자 목록 조회SELECT * FROM mysql.user;특정DB의 특정테이블에 특정권한 부여GRANT SELECT ON board.author TO ‘testuser'@'localhost';특정DB의 특정테이블에 특정권한 뺏기REVOKE SELECT ON board.author FROM ‘testuser'@'localhost';권한 변경사항 적용FLUSH PRIVILEGES;특정 사용자 권한 조회SHOW GRANTS FOR 'testuser'@'localhost';사용자 삭제DROP USER '.. 2023. 11. 24.
[MariaDB] INDEX INDEX인덱스(index)란?인덱스는 색인과 목차처럼 데이터 검색 속도를 향상시키는데 사용책의 목차에서 원하는 주제를 찾아 해당 페이지로 바로 이동하는 것처럼 DB는 해당 인덱스를 활용하여 테이블의 전체 레코드를 스캔하지 않고도 필요한 데이터를 빠르게 찾음기본적으로 DB는 데이터를 검색할 때 테이블 전체를 탐색해야 하나, 인덱스를 사용하면 테이블의 특정 컬럼 값과 그 레코드의 위치 정보를 보유하고 있어, 테이블 전체를 읽지 않아도 돼 성능 향상일반적으로 인덱스는 B-tree의 자료구조를 가지고, 이는 이진 트리를 확장한 형태로, 한 노드가 두 개 이상의 자식을 가질 수 있는 자료구조이진트리는 최대 2개의 자식 노드를 가지는 구조로. 모두 2개의 자식노드만을 가진 이진트리를 완전이진트리라 부른다.결론은,.. 2023. 11. 24.
728x90
반응형