본문 바로가기
  • 오늘도 한걸음. 수고많았어요.^^
  • 조금씩 꾸준히 오래 가자.ㅎ

IT기술/DB16

[redis] 캐싱 전략(Caching Strategies) 정리하기, 어떤 식으로 설계하고 사용할 것인가? 오픈 소스 기반의 비관계형 데이터베이스 관리 시스템인 redis를 사용하려면, 설치하고 어플리케이션에 캐싱을 사용하기 위한 로직을 넣어줘야 합니다.그러려면 소프트웨어 아키텍처 설계를 해야 하고, 이 과정에서 캐싱을 언제 어떤 과정으로 사용할지 설계가 들어가야 합니다.그러다보니 캐싱 전략을 사용하지 않는 어플리케이션에서 캐싱을 도입하려면, 어플리케이션에 캐싱할 서비스나 위치에는 많은 수정이 들어가게 됩니다.이를 조금 더 편리하게 제공하기 위해 완전관리형으로 제공하는 aws서비스 중 elasticache와 rdb를 연계시켜 사용할 수도 있습니다.그러나 조금 더 개념적인 부분에서 캐싱을 어떤식으로 어플리케이션에 구현할 지 다루는캐싱 전략(Caching Strategies)에 대해 정리해보려 합니다.레디스를 어.. 2024. 5. 20.
[redis] 캐싱, 활용할 데이터 선정, 고려할 점 이전엔 캐싱을 사용할 수 있는 redis가 무엇인지 정리해봤습니다.그런데, 모든 데이터를 캐싱 적용 하면, 성능이 올라갈까?redis는 메모리에 값을 저장해 db에 저장하는 것 보다 값을 빠르게 불러오도록 해주지만, 저장장치에 저장된 데이터를 메모리에도 모두 저장시킨다면 자원이 많이 필요하게 될 것이라 생각합니다.수정이 자주 일어나는 작업이라면 캐싱을 쓰지 않는 부분이 더 나을수도 있으며,사용 빈도가 높지 않은 데이터라면 캐싱을 안쓰더라도 별 영향이 없을 수도 있습니다.또한 메모리에 지속적으로 보관할 지, 아니면 수명 정책을 걸어 일정 시간이 지나면 삭제하고 메모리 여유를 둘지 고민해야 합니다.이런 부분들을 고려하여 캐싱을 적용할 정책, 기준을 정하는 것이 필요합니다.1. 데이터에 만료 정책 적용하기캐.. 2024. 5. 20.
[redis] 메모리 기반 캐싱기능을 지원하는 레디스 알아보 Redis는 빠른 성능과 유연성으로 많은 개발자들에게 인기 있는 오픈 소스 인-메모리 데이터 스토어입니다. 프로젝트에 따라 다양한 활용 방법이 있겠지만, 일반적으로 Redis는 다음과 같은 경우에 유용합니다:캐싱: 데이터베이스 쿼리 결과나 계산된 값 등을 임시로 저장하여 빠른 응답 속도를 제공합니다.세션 관리: 사용자 세션 정보를 저장하여 웹 애플리케이션의 상태를 유지합니다.메시지 브로커: 메시지 큐를 통해 서비스 간 메시지를 전달하고 처리합니다.실시간 애플리케이션: 채팅, 게임 서버 등 실시간으로 데이터를 교환해야 하는 애플리케이션에 적합합니다.Java와 Spring Boot를 사용하여 REST API 서비스에 Redis 캐시를 적용하는 간단한 예제가 있습니다.샘플 프로젝트를 시작하기 전에, Redis.. 2024. 5. 20.
[Postgre] AutoCommit 테스트해보기 Postgre에서 AutoCommit 기본설정은 true로 되어 있습니다. 목차 AutoCommit 기본상태 확인 AutoCommit 상태 변경 Rollback 테스트 Commit 전에 Insert 후 다른 세션에서 조회 pgAdmin 에서 AutoCommit 설정하기 즉, 쿼리 실행시 자동으로 Commit을 수행해주는 것을 의미합니다. psql에서 AutoCommit을 해제할 수 있습니다. $ \set AUTOCOMMIT off // AutoCommit 끄기 $ \set AUTOCOMMIT on // AutoCommit 켜기 $ \echo :AUTOCOMMIT // AutoCommit 상태 확인 먼저 psql에 로그인해봅니다. 1. AutoCommit 기본상태 확인 $ \echo :AUTOCOMMIT .. 2024. 2. 23.
[DB, JBDC] 데이터베이스 연결, JDBC, SQL Mapper, ORM 정리 프로그래밍은 절차지향, 객체지향, 함수형 프로그래밍 같은 개발 지향적 방법이 있습니다. 비슷하게 데이터베이스도 데이터를 저장하고, 데이터에 접근하여 읽기 위해 사용하며 효율적으로 데이터를 저장하기 위한 방법이 있습니다. 대표적으로 관계형(RDB)으로 저장하거나 비관계형(NoSQL DB)으로 저장하기도 합니다. 자바를 기준으로 DB를 사용하려면 아래같은 구조가 필요합니다. 자바 어플리케이션 -> 데이터 접근 인터페이스 -> 데이터 베이스 자바어플리케이션에서 데이터베이스에 접근하기 위해 데이터 접근 인터페이스를 통해 연결을 구현하고 데이터를 교환하게 됩니다. DB에서 데이터를 교환하는 과정을 크게 풀어보면 다음과 같습니다. - DB에 Connection을 연결합니다. - Connection 을 통해 SQL을.. 2024. 1. 29.
[DB] 데이터 모델링, 관계형 데이터베이스에서 1:1, 1:N, N:N 관계 데이터베이스 설계를 하기 위해 데이터 모델링을 공부하고 있습니다. 요구사항 분석-개념적 모델링- 논리적 모델링- 물리적 모델링 단계를 거쳐 데이터베이스를 설계하는 것이 일반적이긴 하기에 이 방법대로 진행하고 있습니다. - 요구사항 분석 : 저장이 필요한 요소가 어떤게 있는지 모아서 정리 - 개념적 모델링: 중요 개념을 기준으로 핵심 Entity 도출, ERD 작성 - 논리적 모델링: Entity를 구체화하고 상세 속성을 작성, 엔티티간 관계 정의 및 정규화, ERD 세부작성 - 물리적 모델링: 데이터베이스 생성 계획에 따라 개체 인덱스 등을 생성, 테이블 및 인덱스 설계 모델링을 하는데 있어 데이터 관점(데이터 위주), 프로세스 관점(처리과정 위주), 상관 관점(데이터와 처리과정의 적절한 조합)에서 모델.. 2024. 1. 27.
[Mysql] LEFT JOIN 이용하는방법. (NOT IN 대체하기) MySQL에서 특정 항목들을 제외시킬 때 주로 사용하는 명령어가 NOT IN 인데, 속도가 만족스럽지 못할때가 있다.. 이때는 LEFT JOIN명령어를 대신 사용할 수 있다. 예를 들어, select * from cdr where calldate not in ( select calldate from cdr where disposition = 'ANSWERED') 의 경우는 다음과 같이 바꿀 수 있다. select t1.calldate from cdr as t1 left join ( select calldate from cdr where disposition = 'ANSWERED') as t2 on t1.calldate=t2.calldate where t2.calldate is null 2023. 7. 31.
[OracleDB] 오라클 DB 계정 생성하기, 21c 버전 21c 버전 기준으로 오라클 DB에 계정을 생성하는 방법을 정리하고자 합니다. SQL plus 에 접속 후 admin 계정인 system 으로 로그인 후 스크립트를 입력합니다. create user [id] identified by [pw]; grant connect, resource, dba to [id]; 그런데 계정생성중에 오류가 확인됩니다. 1행에 오류: ORA-65096: 공통 사용자 또는 롤 이름이 부적합합니다. 오라클 12c 버전부터 사용자명에 c##을 붙이지 않으면 오류가 발생할 수 있어서 그렇습니다. 11g 버전까지는 아무 문제없이 계정생성 가능하지만, 12c 부터 계정 생성을 하려면 사용자명에 c##(c##scott)을 붙이거나 _oracle_script 설정을 true로 변경해야 합니.. 2023. 7. 17.
[OracleDB] 오라클 DB 설치 및 사용방법(Express Edition(XE), sql plus, sql developer) oracle db는 아는분은 아시겠지만 라이센스가 필요합니다. 기업에선 유료로 사용하고 있는 것이죠.그렇다보니 규모가 있는 기업이 아니면 오라클 db를 사용하지 않는 곳이 꽤 되었었습니다. 기업에서 오라클 db를 다루지 않아 접할 일이 없어 공부할 필요가 없는 경우도 있었구요.최근엔 오픈소스 기반인 postgre db로 넘어가는 추세다보니 oracle db를 쓰는 곳이 점차 줄어가고 있다고 생각합니다만, 그럼에도 시장점유율은 높은 편이며, postgre db와 유사하여 공부해 두면 도움이 된다고 생각합니다.그러면 공부하기 위해 설치 및 사용방법부터 알아야 하는데, 해당 포스팅에선 설치방법 및 사용방법을 정리해두려 합니다. 1. 오라클 라이센스 확인하기 설치 전에 라이센스를 확인해두는게 좋습니다. 오라클 .. 2023. 7. 17.
[sql] NVL 함수, 쿼리 null 처리하기 data의 값이 null일 경우 대체값으로 출력하고 싶을 때 사용하는 함수다. 1 NVL("값","지정값") cs NVL 쓰고 안쓰고 차이 구분하기 SELECT no, name, salary from table SELECT no, name, NVL(salary,0) AS salary from table 2023. 7. 17.
[sql] 윈도우 함수, 알고 넘어가기 윈도우 함수는 고급 SQL 기능인데요. 이는 분석가뿐만 아니라 보고서를 만드는 사람, 데이터를 가공하는 그 누구에게도 상당히 유용한 기능입니다. 윈도우 함수(Window Function)가 무엇인가요? 윈도우 함수는 테이블 내부에 '윈도우 프레임'이라고 부르는 범위를 정의하고, 해당 범위 내부에 포함된 값을 자유롭게 사용할 수 있습니다. 윈도우 함수는 GROUP BY와 상당히 유사합니다. 이유는 윈도우 함수도 GROUP BY처럼 여러 행의 집계 값을 계산할 수 있기 때문입니다. 하지만, GROUP BY와 달리 윈도우 함수는 여러 행들을 합쳐 1개의 행으로 만들지 않습니다. 기존에 있던 원래 값은 그대로 두고 집계 값만 추가로 구할 수 있습니다. 이 기능은 데이터 분석가, 마케터, 재무 담당자에게 꽤나 유.. 2023. 7. 17.
[sql] join 문법 정리, inner join, outer join SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN) 하나의 테이블에 원하는 데이터가 모두 있다면 참 좋겠지만, 두 개의 테이블을 엮어야 원하는 결과가 나오는 경우가 많습니다. 여기서 조인을 쓰면 두 개의 테이블을 엮어서 원하는 데이터를 추출할 수 있습니다. JOIN 5줄 요약 조인은 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. INNER JOIN(내부 조인)은 두 테이블을 조인할 때, 두 테이블에 모두 지정한 열의 데이터가 있어야 한다. OUTER JOIN(외부 조인)은 두 테이블을 조인할 때, 1개의 테이블에만 데이터가 있어도 결과가 나온다. CROSS JOIN(상호 조인)은 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인하는 기능.. 2023. 7. 14.