본문 바로가기

분류 전체보기

(61)
쉽게 이해하는 SOLID 원칙: 유지보수성을 높이는 객체지향 설계 방법 개발 과정에서 복잡한 코드와 구조에 직면했을 때, SOLID 원칙은 강력한 지침이 됩니다.처음 들어본다면 다소 어려울 수 있지만, 이 원칙들은 깔끔하고 유지보수가 쉬운 코드를 작성하는 데 필수적입니다. Single Responsibility Principle 단일 책임 원칙단일 책임 원칙이라는 단어도 왠지 맘에 안듭니다.하나의 객체는 하나의 역할만 해야한다는 내용입니다.예를 들어, "요리사" 객체는 요리만 담당해야 하며, 웨이터의 역할인 "서빙"을 해서는 안 됩니다.객체가 여러 역할을 수행하면 단일 책임 원칙을 위반하게 됩니다. Open-Closed Principle 개방-폐쇄 원칙이름이 더 이해하기 어렵게 만드는 것 같습니다.새로운 기능을 추가할 때 기존 코드가 변경되면 안된다는 내용입니다.예를들어 쇼..
MySQL 8에서 인덱스 성능 극대화: 알고리즘과 실전 사례 MySQL 8 버전에서 사용되는 Index(인덱스) 기능에 대해 자세히 알아보겠습니다. 이 내용은 MySQL 8 버전을 기준으로 하며, InnoDB 스토리지 엔진을 주로 다룰 것입니다.  1. InnoDB의 Index 알고리즘은 B-Tree 알고리즘을 사용한다.InnoDB 스토리지 엔진에서는 기본적으로 B-Tree 알고리즘을 사용합니다. 이 알고리즘은 트리 형식으로 데이터를 정렬하며, 원하는 값을 찾을 때 상단부터 시작하여 작으면 왼쪽으로, 크면 오른쪽으로 이동하면서 탐색하는 방식입니다.  2. 인덱스 압축 기능을 비활성화 할 수 있다.InnoDB는 인덱스 페이지를 압축하여 디스크 공간을 절약하는 기능을 제공합니다. 그러나 이 기능은 CPU 리소스를 사용하기 때문에 추가, 변경, 삭제 작업이 많을 때 부..
데이터베이스 프로시저, 함수, 뷰: 각각의 역할과 사용법 프로시저와 함수 뷰의 차이점을 설명드리겠습니다. 1. 프로시저프로시저(Procedure)는 데이터베이스의 데이터에 대한 작업을 수행하기 위한 목적으로 사용됩니다. 이것은 데이터의 추가, 수정, 삭제, 검색 등과 같은 다양한 데이터 조작 작업을 수행하는 데 사용됩니다.비즈니스 룰 검증, 트랜잭션 관리, 보안 제어 등과 같은 데이터베이스 관리 작업에도 활용됩니다.프로시저는 무엇을 return하는 것 보다 데이터를 조작하기 위해 사용됩니다. 그런 이유로 리턴값이 없는 프로시저가 일반적입니다. 2. 함수함수(Function)는 주로 값을 계산하거나 가공하기 위해 사용됩니다.함수는 return 값으로 단일 값(숫자 또는 문자열)을 제공하는 것이 일반적입니다.함수는 입력 값을 받아서 계산하고, 그 결과 값을 반환합..
트랜잭션 격리 수준의 종류와 성능 최적화 전략 트랜잭션과 격리 수준 데이터베이스에서 트랜잭션과 격리 수준은 데이터의 무결성을 유지하고 동시성을 관리하는 중요한 개념입니다. 트랜잭션이란?트랜잭션은 데이터베이스의 상태를 변화시키기 위해 실행되는 프로그램의 단위 작업입니다. 트랜잭션은 다음과 같은 ACID 속성을 만족해야 합니다.A : Atomicity 원자성을 의미하며, 트랜잭션 내의 모든 연산은 하나의 작은 단위로 동작해야 합니다. 쉽게말해 모든 연산이 실패하거나, 모든 연산이 성공하거나 둘 중 하나만 처리되도록 해야합니다.C : Consistency 일관성을 의미하며, 트랜잭션은 데이터 일관성 상태에서 다른 일관된 상태로 전환해야 합니다. 예를 들면 "학생"이라는 데이터가 테이블에서 삭제된다면 "수강신청"이라는 학생에 Relation 되어있는 데이터..
JPA와 Hibernate의 차이점은 무엇인가요? JPA와 Hibernate는 둘 다 자바 환경에서 관계형 데이터베이스를 다루기 위한 도구입니다. 몇 가지 중요한 차이점이 있습니다. JPA는 자바 객체와 데이터베이스 테이블 간의 매핑을 위한 표준 API를 제공합니다.JPA 자체는 구현이 없으며, 인터페이스만 제공합니다. 그러므로 Hibernate라는 ORM이 없을 경우 JPA의 기능들을 사용할 수 없습니다.JPA는 JPQL이라는 언어를 제공합니다. 객체 지향적인 쿼리를 작성할 수 있습니다. Hibernate는 JPA의 표준 사양을 구현한 구현체이며 라이브러리 중 하나입니다. 따라서 JPA의 모든 기능을 Hibernate에서도 사용할 수 있습니다.Hibernate는 JPA기능 외에도, Lazy Loading, Caching, Dirty Checking 등..
ORM이란 무엇인가요? ORM은 Object Relational Mapping의 약자로, 객체 지향 프로그래밍과 관계형 데이터베이스 관리 시스템(RDBMS) 사이의 데이터를 매핑하는 프로그래밍 기술입니다.즉, ORM은 데이터베이스의 테이블과 프로그래밍 언어의 클래스 간의 매핑을 담당하며, 이를 통해 개발자가 SQL 쿼리 없이도 데이터베이스 작업을 쉽게 수행할 수 있게 해줍니다. ORM의 주요 기능은 다음과 같습니다.객체 생성과 테이블 레코드의 생성을 연결객체 필드와 테이블 컬럼 사이의 매핑객체 연산과 SQL 쿼리의 자동 변환ORM의 장담점은 다음과 같습니다.장점개발 속도 향상 : SQL 쿼리를 직접 작성하지 않아도 되므로 개발 과정이 빨라집니다.코드의 가독성과 유지보수 : 데이터베이스 관련 코드가 객체 지향적으로 작성되므로, ..
JPA가 무엇인가요? JPA는 Java Persistence API의 약자로, Java 어플리케이션에서 관계형 데이터베이스의 데이터를 쉽게 관리할 수 있게 해주는 프로그래밍 인터페이스입니다. 이것은 Java EE 표준의 일부이며, 자바 객체와 데이터베이스 테이블 간의 매핑을 담당합니다. JPA는 다음과 같은 기능을 제공합니다.Object Relational Mapping : ORM이라고도 불리며, 객체와 테이블을 매핑해서, 코드 내에서 데이터베이스를 객체처럼 다룰 수 있습니다.Java Persistence Query Language : JPQL이라고도 불리며 SQL과 유사한 문법을 가진 쿼리 언어를 제공합니다.캐시 시능 : 자주 사용되는 데이터를 캐시에 저장하여 성능을 향상시킬 수 있습니다.1차 캐시 : EntityMange..
TCP 통신과 Keep-alive로 통신 효율 최적화: 실무에서 경험한 Connection Timeout 해결 사례 먼저 Keep-alive 에 앞서 TCP 통신부터 보겠습니다. 클라이언트와 서버의 TCP 통신을 하기 위해서는 여러 준비 과정이 필요합니다.Three-way handshakeSlow Start데이터 압축 등Three-way handshake란?Three-way handshake는 TCP 통신을 시작하기 전에 클라이언트와 서버가 통신 가능한 상태인지 확인하는 절차입니다.예를 들어, 구글의 메인 페이지에 접속한다고 생각해봅시다.사용자가 브라우저에 www.google.com을 입력하고 엔터를 누르면 시작됩니다.사용자(클라이언트)는 구글(서버)에게 sync 패킷을 전송합니다.구글은 이를 수신하고 사용자에게 ack 패킷과 함께 자신의 sync 패킷을 전송합니다.사용자는 마지막으로 ack 패킷을 구글에게 보내, T..