Computing and DB 🖥12 Redis란? NoSQL 기반 Key-Value 저장소의 특징과 활용 Redis는 NoSQL 데이터베이스 중 하나로,Key-Value 구조를 기반으로 동작하는인메모리 데이터 저장소입니다. Redis와 관계형 데이터베이스(RDBMS) 비교항목Redis관계형 데이터베이스 (RDBMS)데이터 모델Key-Value 기반테이블 기반 (행, 열 구조)저장 위치메모리(RAM)디스크(SSD, HDD)속도매우 빠름 (ns 단위 처리)상대적으로 느림 (ms 단위)트랜잭션지원하지만 복잡한 ACID 특성 부족ACID 완벽 지원 Redis의 주요 특징인메모리 데이터베이스 → 데이터를 메모리에 저장하여 빠른 처리 속도 보장다양한 데이터 구조 지원 → String, List, Set, Sorted Set, Hash 등 활용 가능영속성(AOF,.. 2024. 3. 27. SQL Injection SQL Injection 악의적인 SQL 코드가 DB Query 에 삽입되어 논리가 변경되고 이에 따라 민감한 정보가 추출되거나 데이터가 수정 및 삭제가 되는 상황 SQL Injection 예시 input: ' OR '1'='1 original query: SELECT * FROM users WHERE username = 'value' AND password = 'value'; injected query: SELECT * FROM users WHERE username = '' OR '1'='1' AND password = 'value'; 공격자는 ' OR '1' = '1' 구문을 사용하여 원래의 조건과 별개로 항상 참인 조건('1' = '1' 은 항상 참인 조건)을 추가했으므로 원래 Query 의 목적인.. 2024. 2. 2. [JDBC] - PreparedStatement Prepared Statement 란? SQL Query 를 실행하기 전에 미리 컴파일하고 실행 시에만 파라미터를 전달하는 방식의 SQL 문 성능 향상 처음 실행될 때 DB 에 의해 컴파일되고 서버 측에 캐싱하여 같은 Query 가 재사용될 때 재컴파일 하지 않고 이미 컴파일된 Query 를 재활용하므로 반복된 Query 실행 시 컴파일 시간이 단축된다 SQL Injection 방지 파라미터를 '?' 로 표시하고 실행 시점에 값을 바인딩하는 특성상 문자열의 일부로 해석되지 않고 별도의 값으로 처리되기에 사용자의 입력이 쿼리의 논리를 변경할 수 없으므로 SQL Injection 을 차단하는데 효과적이다 입력 데이터의 자동 변환 지정된 데이터 타입에 따라 자동으로 입력값을 변환하는 특성을 가지고 있다 예시로.. 2024. 1. 31. [디자인 패턴] 싱글톤 제 2장 - "싱글톤의 심화과정" 지난 시간에는 싱글톤의 개념과 기본적인 구현 방법 멀티 쓰레드 환경에서 thread - safe 하게 구현하기 그리고 이른 초기화에 대해서 알아보았습니다 (지난 챕터, 싱글톤 제 1장 보러 가기) 이번 시간에는 JAVA 에서 권장하는 방법들과 더불어 1 장에서 다뤘던 개념들의 단점들을 보완하기 위해 나온 방안들을 살펴보겠습니다 Double Checked Locking 멀티 쓰레드 환경에서 이른 초기화처럼 객체를 미리 생성하지 않으면서 synchronized 의 성능 이슈 또한 사전에 방지할 수 있는 기법입니다 Double Checked Locking public class GlobalSettings { private static volatile GlobalSettings instance; private .. 2024. 1. 25. [디자인 패턴] 싱글톤 제 1장 - "개념 및 멀티 쓰레드와 이른 초기화" 전역으로 공통되어야 하는 데이터가 담긴 인스턴스를 여러 개 생성한다면? 예를 들어 GlobalSettings 라는 클래스가 존재하고 PersonalSettings 에서 GlobalSettings 의 인스턴스를 여러 개 사용한다면 인스턴스의 일관성을 보장할 수 없고, 자원 낭비, 동기화 문제 등 여러 문제가 발생합니다 (GlobalSettings 는 글로벌 세팅으로 각 객체의 독립성이 요구되지 않는다는 가정) 문제가 되는 상황 예시 public class PersonalSettings { GlobalSettings gloSetOne = new GlobalSettings(); GlobalSettings gloSetTwo = new GlobalSettings(); boolean equalCheck = (glo.. 2024. 1. 24. DB LOCK 에 대해서 알아보자 "여러 사용자 / 프로세스가 동시에 DB 에 접근하고 변경할 수 있다면??" 데이터의 일관성과 무결성이 보장되지 않을 것이다 이를 방지하기 위해 등장한 개념 데이터베이스 락 (Database Lock) 동시에 여러 사용자 혹은 프로세스가 DB 에 접근할 때 데이터의 일관성과 무결성을 유지하기 위해 데이터의 동시 수정을 제어하여 충돌을 방지하는 메커니즘 락의 주요 종류 공유 락(Shared Lock) 여러 트랜잭션이 동시에 데이터를 읽는 것을 허용한다 하지만 공유 락이 걸린 데이터를 다른 트랜잭션이 수정하는 것은 불가하다 주로 읽기 작업에 사용되며 여러 트랜잭션이 동시에 해당 데이터를 읽을 때 유용하다 트랜잭션 A 와 B 가 동일한 데이터에 접근하여 읽으려고 할 때 두 트랜잭션 모두 공유 락을 획득할 수 .. 2024. 1. 23. 이전 1 2 다음 728x90 반응형