티스토리 뷰

개요

데이터 중심 애플리케이션 설계를 재독하며 스터디 중인데 함께 스터디하시는 LCH님이 Redis에서의 Lua script를 소개해주셨다.

재미있어서 정리해둔다.

Lua

Lua는 경량의 멀티패러다임 프로그래밍 언어로, 특히 임베디드 시스템, 서버 사이드 애플리케이션, 클라이언트 사이드 웹 애플리케이션 개발에 적합하다. 포르투갈어로 '달'을 의미하며, 브라질의 테칠리아 대학교에서 1993년에 개발되었다.

주요 특징

  • 간결하고 표현력이 뛰어난 문법
  • 메모리 사용량이 적은 경량
  • 임베디드 시스템과의 호환성: C 언어로 작성되어 있으며, C 언어 기반의 시스템에 쉽게 통합될 수 있다.
    • 게임 엔진, 애플리케이션, 임베디드 시스템 등 다양한 영역에서 확장 스크립팅 언어로 사용될 수 있는 이유 중 하나이다.
  • 멀티패러다임 언어: 절차적, 객체지향, 함수형 프로그래밍을 포함한 다양한 프로그래밍 패러다임을 지원한다.
    • 개발자가 문제를 해결하기 위해 다양한 접근 방식을 선택할 수 있다.
  • 강력한 데이터 설명 기능: 테이블이라는 강력한 데이터 구조를 제공하는데, 테이블은 배열, 해시 테이블, 객체 등을 표현할 수 있으며, Lua 프로그래밍의 핵심 요소 중 하나이다.
  • 확장성: 코루틴(coroutine)을 지원하여 비동기 프로그래밍이 용이하다. 또한, 메타메커니즘을 통해 기존의 데이터 구조와 함수에 사용자 정의 동작을 추가할 수 있다.

널리 사용되는 분야

  • 웹 서버 스크립팅, 게임 개발, 데이터베이스 애플리케이션, 네트워크 프로그래밍 등 다양한 분야에서 사용됨.
  • 특히, 게임 업계에서는 게임 내 스크립팅 언어로 많이 채택되고 있으며
  • Redis와 같은 데이터베이스에서는 서버 사이드 스크립팅 언어로 활용된다.

Lua scripting in Redis vs. Stored Procedure

Lua scripting in Redis

Redis는 Lua 스크립팅 언어를 내장하여, 복잡한 연산이나 트랜잭션 처리를 한 번의 네트워크 호출로 수행할 수 있다.

  • 효율성: 여러 명령어를 하나의 스크립트로 묶어서 실행하여 네트워크 지연을 줄이고, 명령어 사이의 중간 상태를 저장할 필요 없이 데이터를 빠르게 처리한다.
  • 원자성(Atomicity): Lua 스크립트는 Redis에서 단일 연산으로 처리된다. 스크립트 실행 도중 다른 클라이언트의 명령어가 끼어들 수 없다는 것을 의미하여, 데이터의 일관성(consistency)을 보장한다.
  • 유연성: 쉽게 배울 수 있는 스크립팅 언어이며, Redis 데이터 구조와의 상호 작용을 위한 강력한 기능을 제공한다.

Stored Procedure

전통적인 관계형 데이터베이스에서 사용된다.

데이터베이스 내에 저장되어 실행할 수 있는 일련의 SQL 문과 로직을 가지는 프로그래밍 코드 블록이다.

  • 성능: 데이터베이스 서버에 저장되고 최적화되어 실행된다. 덕분에 애플리케이션과 데이터베이스 간의 네트워크 트래픽을 줄일 수 있다.
  • 보안: 사용자는 저장 프로시저를 실행할 권한만 있으면 되고, 직접 테이블에 접근할 필요가 없다. 이는 데이터 접근을 제한하고 보안을 강화하는 데 도움이 된다.
  • 재사용성과 일관성: 한 번 작성하면 다양한 애플리케이션에서 재사용할 수 있다. 이는 비즈니스 로직의 일관성을 유지하는 데 도움이 된다.

비교

Redis의 Lua scripting과 전통적인 데이터베이스의 Stored Procedure는 데이터 처리와 관련된 로직을 데이터베이스 서버 내에서 실행시키는 기능을 제공하지만, 사용 목적, 구현 방식, 그리고 활용 분야에서 차이점을 가진다.

  • Lua 스크립팅은 키-값 저장소인 Redis에서 사용하고, Stored Procedure는 주로 관계형 데이터베이스(RDBMS)에서 사용한다.
  • Lua 스크립팅은 Redis의 성능을 극대화하고, 데이터 처리를 최적화하기 위해 사용하며, Stored Procedure는 데이터 처리 로직을 데이터베이스 서버에 캡슐화하고, 보안 및 재사용성을 높이기 위해 사용한다.
  • 구현 언어: Redis의 Lua 스크립팅은 Lua 언어를 사용하는 반면, 저장 프로시저는 SQL과 데이터베이스가 지원하는 특정 프로시저 언어(예: PL/SQL, T-SQL)를 사용한다.
반응형
반응형
잡학툰 뱃지
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함