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

3 days ago 6

Acadia는 함수형 언어의 정밀한 타입과 친절한 오류 메시지를 SQL 데이터베이스까지 확장하려는 프로그래밍 언어로, 현재 공개 알파로 배포됨 테이블과 엔드포인트를 함수형 코드로 정의하면 컴파일 시점에 최적화된 SQL로 변환되며, Elm·Haskell의 클라이언트 및 서버 코드와 통합할 수 있음 사용자 정의 타입 저장, 컴파일러가 검증하는 마이그레이션, 클라이언트·서버·데이터베이스를 잇는 종단 간 타입으로 계층 간 형식 변환 오류를 줄이는 것이 목표임 여러 데이터베이스 작업은 := let-binding으로 값을 전달하면서 하나의 트랜잭션을 이루며, 모든 단계가 성공해야 커밋됨 일반적인 쿼리는 지원하지만 윈도 함수와 사용자 정의 집계 함수는 아직 없으며, 필요하면 기반 데이터베이스인 SQLite의 SQL을 직접 사용할 수 있음 Acadia가 해결하려는 문제 Acadia는 SQLite와 PostgreSQL 같은 데이터베이스를 현대적인 프로그래머가 더 편리하게 사용하도록 Elm 계열 언어의 장점을 SQL에 적용하는 프로젝트임 첫 번째 목표는 정밀한 타입을 데이터베이스에 자연스럽게 저장하는 것임 Rust의 Enum, Elm의 Custom Type, Haskell의 Algebraic Data Type 같은 타입을 수작업 이진 형식이나 JSON, nullable 열 조합으로 변환하지 않아도 됨 검증된 마이그레이션을 지향함 현재 열 타입과 목표 타입을 바탕으로 실제 데이터베이스에 명령을 실행하기 전에 컴파일러가 마이그레이션을 검증하도록 설계함 운영 환경과 스테이징 환경의 미묘한 차이나 잘못된 SQL 명령에서 오는 위험을 줄이려는 목적임 데이터베이스 쿼리에도 Elm과 Rust처럼 친절한 오류 메시지를 제공하려 함 클라이언트·서버·데이터베이스가 타입을 공유하는 종단 간 타입을 지원함 테이블 열 타입이 바뀌면 관련 Elm 코드에서 품질 높은 오류 메시지를 확인할 수 있음 공개 알파와 언어 통합 Acadia는 컴파일러 다운로드, 문서, 예제를 제공하는 공개 알파 단계임 테이블과 엔드포인트를 정의한 뒤 서버와 클라이언트 코드에서 사용할 수 있음 현재 Elm과 Haskell 통합을 지원하며 다른 언어도 추가할 계획임 언어 통합은 비교적 간단하며, 공개 알파에서 받은 피드백에 따라 지원 우선순위를 정할 예정임 전체 동작은 소개 영상에서 확인할 수 있음 타입이 있는 테이블 정의 테이블은 일반적인 함수형 타입과 레코드로 정의함 예제의 Fo...

Read Entire Article