본문 바로가기
728x90

넓고 얕은 데이터베이스 지식49

Redis의 RESP에 대해 간단히 알아보자 🤖 RESP(Redis Serialization Protocol)란?Redis 서버는 클라이언트와 통신할 때 RESP(Redis Serialization Protocol)라는 간단한 텍스트 기반 프로토콜을 사용한다.일반적인 서버와 클라이언트가 JSON 형식으로 데이터를 주고받는 것처럼 클라이언트가 명령을 보낼 때와 Redis 서버가 응답할 때 모두 정해진 포맷으로 문자열을 주고받는 방식이다. 😗 간단한 예시# 클라이언트$ set email gildong@email.email클라이언트에서 사용자가 입력하는 명령어이다. # RESP로 변환되어 서버에는 아래와 같이 전송됨*3\r\n$3\r\nSET\r\n$5\r\nname\r\n$19\r\ngildong@email.email\r\nRedis 서버로 전송될.. 2025. 5. 21.
Valkey 오픈 소스를 직접 빌드하고 나만의 명령어를 추가해보자 💡 설명 : C언어를 전혀 모르는 자바 개발자가 최대한 이해하기 쉽게 풀어쓴 실습 기록입니다.🌀 목표 : Valkey의 소스 코드에서 echo 명령어를 참고하여 나만의 echo 명령어 만들어보기- 커맨드 이름 : echoX3- 커맨드 설명 : 입력 문자열을 세 번 반복하는 echo 명령어- 커맨드 입력 예시 : "helloworld!"- 커멘드 출력 예시 : "helloworld! helloworld! helloworld!" 👨🏻‍🔬 사전 준비🧪 Valkey GitHub 저장소 Fork & Clone아래 링크로 접속:👉 https://github.com/valkey-io/valkey오른쪽 상단의 Fork 버튼 클릭👉 본인의 GitHub 계정으로 복사본 생성됨 (예: github.com/yo.. 2025. 5. 13.
Redis & Valkey에 대해 알아보자 - 원자성과 자료구조(Siphash, Skiplist) 💡 공부하며 작성한 내용으로 잘못된 내용이 있을 수 있습니다.🌀 Valkey는 Redis의 포크 버전으로 기본 개념과 동작방식은 동일하기 때문에 명칭 생략했습니다. 💧 Redis의 원자성(Automicity)Redis는 모든 명령어가 원자적으로(Atomic) 실행되도록 설계되어 있습니다.즉, 하나의 명령어는 중간에 끼어들거나 나뉘지 않고, 완전히 실행되거나 아예 실행되지 않습니다.예를 들어 INCR counter 명령어는 다른 클라이언트의 명령어가 중간에 끼어들 수 없이 한 번에 실행되기 때문에, 여러 클라이언트가 동시에 이 명령을 실행해도 값이 정확하게 증가합니다.INCR counter 명령어는 특정 키의 숫자 값을 1 증가시키는 명령어입니다.이러한 동작이 가능한 이유는 Redis가 단일 스레드 .. 2025. 5. 11.
Redis & Valkey에 대해 알아보자 - 개념, 역사, 캐싱, 사용 분야 💡 공부하며 작성한 내용으로 잘못된 내용이 있을 수 있습니다. 🟥 Redis란? Redis는 "REmote DIctionary Server"의 약자로, 메모리 기반의 고성능 키-값(key-value) 데이터 저장소입니다. NoSQL 계열의 데이터베이스 중 하나로 분류되며, 빠른 읽기/쓰기 성능을 위해 데이터를 디스크가 아닌 메모리에 저장합니다. 🟥 개발 배경 Salvatore Sanfilippo는 LLOOGG라는 실시간 로그 분석 툴을 개발 및 운영하던 중, 기존 MySQL의 확장성에 한계를 느끼고 이를 해결하기 위해 2009년에 Redis를 개발하였습니다. 이후 Redis는 빠르게 성장하며 전 세계적으로 널리 사용되었고, 2015년부터는 Redis Labs(현 Redis Inc.)가 프로젝트의.. 2025. 5. 9.
뷰(View)에 대해 알아보고 엔티티(Entity) 객체와 매핑해보자. 📌 MySQL에서의 뷰(View) 뷰(View)는 가상의 테이블로 하나 이상의 테이블로부터 개발자가 미리 유도한 결과 집합을 보여준다. 데이터를 실제로 저장하지 않고 쿼리를 실행할 때마다 기본 테이블에서 데이터를 가져와서 결과를 생성한다. 기존 테이블을 커스텀한, 읽기 전용의 테이블이라고 볼 수 있으며 매번 뷰가 참조하는 실제 테이블에 수정, 삭제 등의 쿼리가 있을 때마다 변경된 결과로 갱신된다. 일반적으로 뷰를 통해 데이터를 수정하거나 삭제하는 것은 불가능하며 수정 작업은 해당하는 기본 테이블에서 직접 수행되어야 한다. MySQL의 경우 옵션을 이용하여 수정이 가능하기는 하나 기존 데이터의 가공과 조회를 위한 용도로 활용하는 것이 적합하다. 데이터의 가공, 필터링, 보안 설정 등 다양한 용도로 활용된다.. 2024. 1. 30.
MySQL Replication : DB 서버 이중화(master - slave)하기 📌 MySQL Replication MySQL Replication은 데이터베이스 서버 간 데이터의 동기화를 위해 사용되는 기술이다. 주 서버에서 변경된 데이터를 다른 서버로 복사하여 데이터의 일관성과 가용성을 보장한다. MySQL Replication의 세 가지 역할 첫째, 마스터 서버(master)는 데이터의 원본이 되는 서버로, 변경된 데이터를 기록하고 복제 로그(binlog)를 생성한다. 둘째, 슬레이브 서버(slave)는 마스터 서버로부터 변경된 데이터를 복사받아 동기화한다. 슬레이브 서버는 읽기 작업에 사용되며 읽기 부하를 분산시킬 수 있다. 셋째, 중간 마스터 서버(Intermediate Master)를 이용하여 복제 체인(replication chain)을 형성해 복제의 유연성을 높일 수 .. 2024. 1. 10.
MySQL VS PostgreSQL JSON 데이터 INSERT & 조회 성능 및 장단점 비교하기 👨🏻‍🔬 테스트 주제 MySQL(5.7 이상)과 PostgreSQL 모두 JSON 타입의 컬럼을 지원한다. Spring boot 2.7 + Spring Data JPA 사용 시 데이터베이스에 JSON 형식의 컬럼을 INSERT 하고, JSON 데이터의 특정 key 값으로 value를 조회할 때의 속도 및 기타 특징을 비교해보려고 한다. MySQL의 주요 특징 MySQL의 경우 JSON 데이터 내 전체 키를 인덱싱 하는 방법을 제공하지 않는다. JSON 데이터 내 특정 키를 선택하여 인덱싱 할 수는 있다. 무조건 JSON 타입으로 저장해야 하는 특별한 상황이 아니면 해당 key만 따로 빼서 컬럼으로 추가하는 것이 더 좋은 선택일 수 있다. 별도의 컬럼으로 관리하는 것이 RDBMS의 장점을 온전히 활용할 수.. 2023. 8. 23.
PostgreSQL의 JSON 데이터 저장 타입 JSON vs JSONB 비교하기 💡 PostgreSQL은 JSON과 JSONB 두 가지 데이터 타입을 제공한다. 두 타입을 통해 데이터베이스에 JSON 데이터를 효율적으로 저장하고 처리할 수 있다. PostgreSQL에서의 JSON과 JSONB 데이터 타입의 차이점과 각각의 장단점을 비교해 보자. 저장 형식 JSON 타입 원본 JSON 형식의 텍스트로 데이터를 저장한다. 이 때문에 저장 공간이 더 크게 필요하며 처리 속도가 JSONB 타입 대비 느릴 수 있다. JSONB 타입 바이너리 형식으로 JSON 데이터를 저장한다. 바이너리 형식으로 저장한 덕분에 데이터 저장 공간을 절약하고 쿼리 속도를 높일 수 있다. 데이터 구조 JSON 타입 원본 JSON 문자열의 공백과 순서를 그대로 유지한다. JSONB 타입 공백이 제거되고, 객체의 키 .. 2023. 8. 22.
728x90