Acadia - 데이터베이스 프로그래밍을 다시 생각하기

3 hours ago 1

Elm 창시자 Evan Czaplicki가 수년간 개발한 Acadia의 Public Alpha를 공개함. 목표는 Elm 같은 언어의 정밀한 타입, 친절한 오류 메시지, 컴파일러 검증을 SQL과 데이터베이스 작업에 가져오는 것 테이블과 Endpoint를 함수형 코드로 정의하면 Acadia가 이를 컴파일 타임에 SQL로 변환하며, 현재 Elm과 Haskell 통합을 지원하고 다른 언어도 추가할 계획 Rust Enum, Elm Custom Type, Haskell ADT 같은 정밀한 애플리케이션 타입을 DB까지 그대로 연결하고, 클라이언트·서버·DB 사이의 타입 불일치를 컴파일 단계에서 발견하는 것을 목표로 함 SQL Migration도 사람이 직접 실행하며 긴장하는 작업이 아니라, 현재 스키마와 목표 타입을 알고 있는 컴파일러가 사전에 검증할 수 있는 문제로 다루려 함 내부는 일반 SQLite를 사용하며 필요하면 직접 SQL로 내려갈 수 있음. 현재는 대부분의 일반적인 쿼리를 작성할 수 있지만 Window Function과 Custom Aggregate 같은 고급 기능은 아직 빠진 초기 Alpha 단계 SQL에 Elm 같은 개발 경험을 가져오기 Acadia의 출발점은 SQLite/PostgreSQL 같은 데이터베이스 구현은 이미 뛰어나지만, 현대적인 프로그래밍 언어에서 사용하기에는 인터페이스가 불편하다는 문제의식임 네 가지 목표를 중심으로 설계함 더 정밀한 타입: Rust Enum, Elm Custom Type, Haskell Algebraic Data Type 등을 JSON이나 Nullable Column 같은 우회 표현 없이 DB에 저장 검증된 Migration: 현재 Column Type과 목표 Type을 바탕으로 Migration을 컴파일러가 미리 검증 친절한 오류 메시지: Elm과 Rust처럼 DB Query에서도 이해하기 쉬운 컴파일 오류 제공 End-to-End Type: Client/Server/Database에서 타입을 공유하고 DB Column이 바뀌면 Elm 코드에서도 정확한 오류를 표시 전체 동작은 소개 영상에서 확인할 수 있음 테이블과 Endpoint를 함수형 코드로 정의 테이블은 일반적인 데이터 타입처럼 정의하고 Primary Key, Row-Level Security, Index, Constraint를 함께 지정함 type alias Food = { id : FoodID , name : ...

Read Entire Article