개발을 하다 보면 가장 많이 다루게 되는 데이터는 역시 문자열 데이터입니다.백엔드 개발자로서 저는 평소 "문자열 데이터를 어떻게 하면 효율적으로 저장하고 불러올 수 있을까?"라는 고민을 가장 많이 하는 것 같습니다.특히 데이터 저장을 위해서는 반드시 테이블이 필요한데요. 문자열 데이터를 저장하기 위한 테이블을 설계하다 보면 자연스럽게 한 가지 고민에 부딪히게 됩니다.바로, 문자열 데이터를 저장할 때 어떤 컬럼 타입을 선택해야 할지에 대한 고민이죠. (CHAR와 VARCHAR, 과연 무엇을 선택해야 할까요?) CHAR VS VARCHAR CHAR 타입과 VARCHAR 타입은 모두 문자열을 저장하기 위해 고안된 컬럼 타입이에요.두 타입 모두 다양한 문자 인코딩 방식(ASCII, UTF-8 등)을 지원하며, ..
개발을 하다보면 데이터베이스 서버에서 트랜잭션이라는 개념을 쉽게 마주하게 됩니다.트랜잭션은 개발을 편하게 해주는 기능이지만, 이를 주의 없이 사용했다간 더 큰 문제를 마주하게 되기 마련이지요.오늘은 그런 불상사를 미리 예방하는 차원에서 데이터베이스의 트랜잭션에 대해 알아보는 시간을 갖겠습니다! 트랜잭션은 무엇인가요?트랜잭션은 데이터베이스에서 수행되는 작업의 논리적 단위로, 하나 이상의 데이터베이스 연산(읽기, 쓰기, 수정, 삭제 등)을 포함합니다.트랜잭션을 사용하여서 데이터베이스의 일관성을 유지하고, 동시성 제어를 통해 여러 사용자가 동시에 데이터에 접근하더라도 데이터의 무결성을 보장할 수 있습니다. 예시를 들어볼까요? 은행에서 계좌 A에서 계좌 B로 돈을 이체하는 과정에서 데이터베이스에는 다음과 같은 ..
데이터 저장소의 개념은 계속해서 발전해오고 있습니다. 특히, 빅데이터의 발전에 따라 용도와 목적에 따른 데이터 저장소의 개념이 계속해서 새롭게 생겨나고 있는데요 저같이 백엔드 공부를 하고 있는 분들은 데이터베이스의 개념에만 익숙하실텐데요... (아니면 말구) 오늘은 대표적인 데이터 플랫폼인 데이터베이스 / 데이터 웨어하우스 / 데이터레이크에 대해서 알아보도록 하겠습니다. 데이터베이스 먼저, 데이터베이스란 사용자에게 트랜잭션 데이터를 저장, 회수할 수 있도록 하는 기술입니다. 트랜잭션이란 데이터를 안전하게 처리하는 기술 입니다. 간단한 예시를 통해 트랜잭션에 대해 이해해볼까요? 먼저 고객 A가 고객 B의 계좌로 100만원을 이체하려고 합니다. 이 과정에서 데이터베이스는 아래와 같은 트랜잭션이 실행됩니다. ..
안녕하세요, 지난번 발표에 이어서 또 다시 기술 세미나를 맡아 시작하게 되었습니다. 2024.02.02 - [Language/Java ☕️] - 자바의 가비지 컬렉션 자바의 가비지 컬렉션 안녕하세요, 이번에 Kernel 360 과정에 참여하게 되면서 기술 세미나를 맡아 준비하게 되었는데요. 거의 대부분의 팀들이 Java 와 Spring Framework 환경으로 프로젝트를 진행하고 있었습니다 (역시,, 자 stonehee99.tistory.com 특별히 지난번 가비지 컬렉션 발표에 이어서 또 다른 컬렉션에 대해 발표를 해보면 어떨까? 하는 생각에 (농담입니다) 객체지향에서 크루분들이 어려워하는 개념 중 하나인 일급 컬렉션에 대해 발표를 진행하기로 하였답니다. 일급 컬렉션(first-class-collec..
오늘은 Docker 환경에서 PostgreSQL 물리적 복제(Physical Replication)를 구성하는 방법을 단계별로 작성해볼게요.이 글을 보고 레플리케이션을 적용하면 다음과 같은 효과를 기대할 수 있어요.Master 장애 발생 시 서비스 중단 위험 감소Read/Write 분리를 통한 데이터베이스 부하 분산PostgreSQL 물리적 복제 방식에 대한 이해 향상본 가이드는 Docker + PostgreSQL 16을 기준으로 작성되었습니다.AWS RDS 기반 복제 구성은 별도 문서에서 다룰 예정이니, 기대해주세요! 준비 사항환경Docker Desktop 또는 Docker CLI 사용 가능 환경5432 포트를 바인딩하여 실행 중인 PostgreSQL Master 컨테이너PostgreSQL 16 버전 ..
오늘은 두 정수의 최대공약수(GCD)를 가장 효율적으로 구하는 방법인 유클리드 호제법(Euclidean Algorithm)을 소개합니다.이 알고리즘은 단순 반복 방식보다 훨씬 빠르고 구현이 간단하며, 실제로 대부분의 프로그래밍 언어 내부에서도 사용되는 고전적이면서 강력한 기법입니다. 이 글을 통해 다음 내용을 이해할 수 있어요.유클리드 호제법이 동작하는 직관적 원리반복문과 재귀를 활용한 자바 구현 예제단순 반복 방식과 비교했을 때의 차이점과 장점 기존 방식: 반복문으로 공약수 찾기가장 단순한 접근은 두 수 중 작은 값까지 반복문을 돌며 공약수를 찾는 방식입니다.public int getGreatestCommonDivisor(int num1, int num2) { int little = num1 직관..