TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 44 READS

PostgreSQL 함수를 코모도어 64 베이직으로 짠다고요? — pl/cbmbasic 이야기

데이터베이스 함수를 1982년에 나온 코모도어 64의 베이직 언어로 작성할 수 있다면 믿으시겠어요? PostgreSQL에서 실제로 그게 가능해졌어요. pl/cbmbasic이라는 확장이 등장했거든요. CREATE FUNCTION을 하면서 언어로 코모도어 베이직을 지정하면, 라인 넘버가 붙은 그 추억의 BASIC 코드가 데이터베이스 안에서 실행되는 거예요. 물론 실용적인 도구라기보다는 재미로 만든 프로젝트지만, 이걸 뜯어보면 PostgreSQL이 왜 "확장 가능한 데이터베이스"의 대명사인지 제대로 배울 수 있어요.

코모도어 64 베이직, 이게 뭐냐면

코모도어 64는 1982년에 나온 8비트 가정용 컴퓨터예요. 역사상 가장 많이 팔린 단일 기종 컴퓨터로 꼽히죠. 전원을 켜면 바로 BASIC 인터프리터가 뜨는데, 10 PRINT "HELLO" 다음 줄에 20 GOTO 10 같은 식으로 줄 번호를 붙여가며 코드를 짜던, 그 시절 수많은 프로그래머들의 첫 언어였어요. 변수 타입도 빈약하고 GOTO로 흐름을 제어하는, 지금 기준으로는 아주 원시적인 언어고요.

PostgreSQL은 어떻게 남의 언어를 품을까요

이 프로젝트의 진짜 재미는 PostgreSQL의 프로시저럴 언어(procedural language) 아키텍처에 있어요. PostgreSQL에서 함수를 만들 때 보통 LANGUAGE plpgsql이라고 쓰잖아요? 그런데 이 부분이 사실 플러그인 구조거든요. PostgreSQL은 '언어 핸들러'라는 인터페이스를 정의해두고 있어요. 어떤 언어든 이 핸들러만 구현하면, 그러니까 "함수가 호출되면 이 소스 코드를 받아서 실행하고 결과를 돌려줘"라는 약속만 지키면 데이터베이스 안의 일급 언어가 될 수 있는 거예요. 그래서 파이썬으로 함수를 짜는 plpython, 펄을 쓰는 plperl, 자바스크립트 엔진 V8을 품은 plv8, 러스트로 짜는 plrust 같은 확장들이 존재할 수 있는 거고요.

pl/cbmbasic은 이 구조에 cbmbasic이라는 오픈소스 인터프리터를 연결한 거예요. cbmbasic은 코모도어 64의 BASIC 인터프리터를 C로 재구현한 프로젝트인데, 이걸 언어 핸들러로 감싸서 PostgreSQL이 함수 본문을 넘겨주면 BASIC 인터프리터가 실행하고 출력을 함수 결과로 돌려주는 구조죠. SELECT 쿼리로 함수를 부르면 40년도 더 된 언어가 최신 데이터베이스 프로세스 안에서 돌아가는 거예요. 상상만 해도 웃음이 나면서도 묘하게 감동적이지 않나요?

장난처럼 보이지만 배울 게 많아요

"이걸 어디다 써?"라고 하면 솔직히 쓸 데는 없어요. 하지만 이런 프로젝트가 주는 교육적 가치는 진짜거든요. 첫째, PostgreSQL 확장 개발의 전 과정을 작고 유쾌한 예제로 완주해볼 수 있어요. 언어 핸들러 등록, C 확장 빌드, CREATE EXTENSION으로 설치하기까지의 흐름이 전부 담겨 있으니까요. 둘째, 신뢰 언어(trusted)와 비신뢰 언어(untrusted)라는 개념을 생각해보게 해요. PostgreSQL에서는 그 언어가 파일 시스템 접근처럼 위험한 일을 할 수 있느냐에 따라 아무 사용자나 쓸 수 있는 언어인지, 관리자만 쓸 수 있는 언어인지가 갈리거든요. 새 언어를 품을 때 데이터베이스가 어떤 안전장치를 고민해야 하는지 보여주는 좋은 소재예요.

업계 맥락에서 보면, 데이터베이스 안에서 범용 언어를 돌리는 흐름 자체는 꽤 진지한 주제예요. plv8로 자바스크립트 로직을 데이터 가까이에 두는 팀도 있고, plrust처럼 성능과 안전을 동시에 노리는 시도도 활발하고요. 비즈니스 로직을 애플리케이션에 둘지 데이터베이스에 둘지는 여전히 뜨거운 설계 논쟁이잖아요. 이 장난스러운 확장은 그 논쟁의 기술적 토대가 얼마나 유연한지를 극단적인 예시로 보여주는 셈이에요.

한국 개발자에게 주는 시사점

PostgreSQL을 그냥 "쿼리 받아주는 저장소"로만 쓰고 있었다면, 이런 프로젝트를 계기로 확장 생태계를 한번 들여다보시길 권해요. 요즘 많이 쓰는 pgvector, PostGIS, pg_trgm 같은 확장들이 전부 이 유연한 플러그인 구조 위에 서 있는 거거든요. 언젠가 팀에 필요한 커스텀 확장을 직접 만들 수도 있고요. 그리고 이렇게 "쓸데없어 보이는" 토이 프로젝트야말로 시스템의 내부 구조를 가장 즐겁게 배우는 방법이라는 것도 기억해두시면 좋겠어요.

한줄 정리: pl/cbmbasic은 코모도어 64 베이직을 PostgreSQL 함수 언어로 만든 장난스러운 확장이지만, PostgreSQL의 언어 핸들러 아키텍처를 배우기엔 더없이 좋은 교재다. 여러분이 데이터베이스 안에 넣어보고 싶은 엉뚱한 언어가 있다면 뭔가요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://thombrown.blogspot.com/2026/07/load-plcbmbasic81-com...
SHARE
처리 중...