Home
SoThoughtful;
Cancel

Ruby on Rails Exception 그리고 트랜잭션

예외처리 프로그램 실행중에 발생할 수 있는 예외를 처리하고 무엇보다 중단되지않도록 사용하는 기법이다. 루비에서의 예외처리 기본구조는 아래와같다. begin # 예외가 발생할 수 있는 코드 rescue Exception => e # 예외가 발생했을 때 처리할 코드 else # 예외가 발생하지 않았을 때 실행할 코드 ensure #...

Ruby on Rails 성능 최적화: 레일즈 캐싱

Rails에서 제공하는 캐싱(Caching)은 웹 애플리케이션의 성능을 향상시키기 위해 자주 사용되는 데이터나 결과를 저장하여 불필요한 데이터베이스 호출이나 복잡한 연산을 줄이는 기술이다. Rails는 다양한 캐싱 메커니즘을 제공하며, 각각의 용도와 특징이 있다. 1. Page Caching 페이지 캐싱은 컨트롤러 액션의 전체 HTML 출력을 정적 ...

Ruby on Rails 성능 최적화: 가비지 컬렉션

정리하게된 계기 Rails App 경우 자바와 같이 object가 생성될떄 힙에 실제데이터를 올리고 있는데 메모리를 해제를 어떻게하는지 궁금해서 찾아보게 되었다. Ruby의 가비지 컬렉션(GC) 메커니즘은 메모리 관리의 핵심 부분이다. GC 모듈을 통해 이 과정을 이해하고 최적화할 수 있다. Rails 애플리케이션에서 메모리 사용...

비슷하면서 다른 SQL 정리

GROUP BY와 PARTITION BY GROUP BY와 PARTITION BY는 SQL에서 데이터를 그룹화하는 데 사용되는 중요한 구문이다. 두 구문은 유사한 기능을 하지만, 결과 데이터의 구조와 사용 목적에 차이가 있다. 주요 차이점 특성 GROUP BY PARTITION BY ...

가상테이블

MySQL에서 가상 테이블은 실제 데이터를 저장하지 않고 쿼리 결과를 임시로 저장하는 객체아다. 가상 테이블의 주요 형태로는 View, 파생 테이블(Derived Table), CTE(Common Table Expression), Temporary Table이 있다. 1. 뷰(View) 뷰는 하나 이상의 테이블에서 원하는 데이터를 선택하여 만든...

내가 이해하려고 적는 카프카

카프카란 카프카는 대규모 실시간 데이터 스트리밍을 위해 설계된 분산 이벤트 스트리밍 플랫폼이다. 대략적인 구조는 시스템에서는 프로듀서가 메시지를 생성하고, 이를 카프카 클러스터의 토픽으로 전송한다. 토픽은 여러 파티션으로 나뉘어 있어 병렬 처리가 가능하고, 컨슈머는 만들어진 파티션에서 메시지를 읽어 처리한다. 이런 구조로 인...

INDEX에 관하여

전에 클러스터인덱스와 넌클러스터 인덱스에 대해 다뤄봤었는데 복습겸 다시 한번 적자면 클러스터 인덱스는 기본키나 빈번하게 검색이나 정렬이 필요한 열에 사용하고(자동으로 기본키가 됨) 넌클러스터 인덱스는 WHERE 절에 자주 사용되고 여러조합에 쿼리 성능을 뽑아낼때 쓴다고 한다. 그래서 이참에 인덱스에 대해 정리해볼까 하고 글을 쓴다. 단순한...

mysql 쿼리 기능

윈도우 함수란? 행과 행 간의 관계를 정의하거나 계산할때 씀. 데이터를 그룹화하지 않고도 각 행을 유지하면서 추가적인 계산을 수행 특징으로는 GROUP BY와 다르게 행이 유지되고 OVER절을 써야하고 행간 순위, 누적합계 비교가 가능함. LEAD LEAD 함수는 현재 행을 기준으로 이후 행의 데이터를 가져오는 데 사용. 주로 다음 ...

Ruby GEM 시리즈

ZipLine Zipline은 Rails 애플리케이션에서 동적으로 생성된 ZIP 파일을 스트리밍하기 위한 Ruby gem이다. 스트리밍 방식으로 ZIP 파일 생성을 위해 전체 파일이 완성될 때까지 기다리지 않는다. 따라서 대용량 ZIP 파일 생성에도 큰 디스크 공간이나 메모리가 필요하지 않아 대기 시간과 다운로드 시간이 감소한다. ZIP ...

Rails 디버깅

View 헬퍼 debug: YAML 형식으로 객체를 출력 to_yaml: YAML 변환 inspect: 배열이나 해시 값을 문자열로 출력 # 컨트롤러 @user = User.find(1) # 뷰에서 <%= debug @user %> # --- !ruby/object:User # id: 1 # name: "John" # e...