본문 바로가기

야미스터디/Database9

[DB] Redis 📌 🖐 들어가기 전에 Cache란? 서비스 요청이 증가하여 DB 요청이 많아지면 DB 서버 부하가 증가하게 된다 이 때 메모리 캐시가 적용되면 성능 및 처리 속도가 향상된다 즉, 캐시 방식을 통해 DB 조회의 부하를 감소시킬 수 있게 된다 Cache는 나중에 요청된 결과를 미리 저장해두었다가 빠르게 제공하기 위해 사용된다 캐시는 파레토의 법칙에 의해 모든 결과를 캐싱할 필요 없이, 서비스를 할 때 많이 사용되는 20%만 캐싱함으로써 전체적으로 효율을 끌어들일 수 있다 Cache 사용 구조 Cache 처리의 순서는 다음과 같다 클라이언트로부터 요청을 받는다 Cache와 작업을 한다 실제 DB와 작업한다 다시 Cache와 작업한다 클라이언트가 웹 서버에 요청을 보내면, 웹 서버는 데이터를 DB에서 가져오기 전에.. 2022. 9. 13.
[DB] DB View 📌 뷰(View) 데이터베이스에 존재하는 일종의 가상 테이블이다 뷰는 사용자에게 접근이 허용된 자료만을 제한적으로 보여주기 위해 하나 이상의 기본 테이블로부터 유도된, 이름을 갖는 가상 테이블이다 뷰는 저장 장치 내에 물리적으로 존재하지 않지만, 사용자에게 있는 것처럼 간주되며 실제 테이블처럼 행과 열을 갖는다 뷰는 데이터 보정작업, 처리과정 시험 등 임시적인 작업을 위한 용도로 활용된다 즉, 뷰를 사용하면 여러 테이블이나 뷰를 하나의 테이블처럼 볼 수 있기 때문에 JOIN 문의 사용 최소화로 사용상의 편의성을 최대화한다 MySQL에서 뷰(view)는 다른 테이블이나 다른 뷰에 저장되어 있는 데이터를 보여주는 역할만을 수행한다 뷰는 데이터 보정, 처리 과정 시험 등의 임시적인 작업을 위한 용도로 활용된다 뷰.. 2022. 9. 7.
[DB] SQL Injection 📌 SQL Injection (SQL 삽입 공격) 악의적인 사용자가 보안상의 취약점을 이용하여 임의의 SQL 문을 주입하고 실행되게 하여 데이터베이스가 비정상적인 동작을 하도록 조작하는 행위 SQL Injection 공격은 OWASP Top 10 중 첫번쨰에 속해 있으며, 공격이 비교적 쉬운 편이고 공격에 성공할 경우 큰 피해를 입힐 수 있다 이는 대부분 클라이언트가 입력한 데이터를 제대로 필터링하지 못하는 경우에 발생한다 SQL Injection의 성립 조건 웹 애플리케이션이 DB와 연동되어 있다 사용자가 입력한 외부 입력값이 SQL 구문의 일부로 사용된다 위의 두 조건을 만족해야 SQL Injection이 가능하다 그러나 현대 웹 애플리케이션의 대부분은 위 조건들을 충족하고 있기 때문에 SQL Injec.. 2022. 8. 31.
[DB] DDL, DML, DCL 📌 데이터베이스에서는 모든 작업을 SQL문을 이용해서 작업한다 SQL문은 다루는 객체나 용도에 따라 그룹핑하여 DDL, DML, DCL로 나눌 수 있다 DDL (Data Definition Language) - 데이터 정의어 데이터베이스를 정의하는 언어 데이터를 생성하거나 수정, 삭제 등의 데이터의 전체 골격을 결정하는 역할의 언어를 말한다 단, DDL은 명령어를 입력하는 순간 작업이 즉시 완료(AUTO COMMENT)되기 때문에 주의해야 한다! 또한 DDL은 ROLLBACK이 불가능하다 CREATE : 데이터베이스, 테이블 등을 생성하는 역 ALTER : 테이블을 수정하는 역할 DROP : 데이터베이스, 테이블을 삭제하는 역할 TRUNCATE : 테이블을 초기화시키는 역할 RENAME : 대상 객체 이름을.. 2022. 8. 10.
[DB] RDB vs NoSQL 📌 Database 일반적으로 컴퓨터 시스템에 전자 방식 저장된 구조화된 정보 도는 데이터의 체계적인 집합을 의미한다 DBMS Database Management System 사용자와 데이터베이스 사이에서 사용자의 요구에 따라 정보를 생성해주고 데이터베이스를 관리해주는 소프트웨어이다 SQL Structured Query Language 관계형 데이터베이스 관리 시스템의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이다 관계형 데이터베이스 관리 시스템에서 자료의 검색과 관리, 데이터베이스 스키마 생성과 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안되었다 RDBMS R은 Relationl의 약자로, RDBMS는 관계형 데이터베이스 관리 시스템을 의미한다 즉, RDB(Relational Dat.. 2022. 8. 4.
[DB] DB Index 📌 DB 인덱스(Index)란? 데이터베이스 테이블에 대한 검색 성능의 속도를 높여주는 자료 구조 예를 들어 우리가 책을 볼 때 원하는 내용을 찾고 싶으면 책은 전부 찾는 것이 아니라 책의 색인을 통해 페이지를 찾는 것과 동일하다 인덱스 생성 시 데이터를 오름차순으로 정렬하기 때문에 정렬된 주소 체계라고 할 수 있다 인덱스 사용 예시 특정 컬럼에 인덱스를 생성하면, 해당 컬럼의 데이터들을 정렬하여 별도의 메모리 공간에 데이터의 물리적 주소와 함께 저장된다 인덱스를 생성한 후, 쿼리문에 인덱스 생성 컬럼을 WHERE 조건으로 거는 등의 작업을 하면 *옵티마이저에서 판단하여 생성된 인덱스를 탈 수 있다 만약 인덱스를 타면, 위의 그림처럼 먼저 인덱스에 저장된 데이터의 물리적 주소로 가서 데이터를 가져오는 방식으.. 2022. 7. 17.