Drizzle ORM 버전 0.29.0은 최소 Drizzle Kit 버전 0.20.0을 필요로 하며, 그 반대도 마찬가지입니다. 따라서 Drizzle ORM을 새 버전으로 업그레이드할 때 Drizzle Kit도 함께 업그레이드해야 합니다. 이로 인해 버전 간에 일부 호환성이 깨지는 변경 사항이 발생할 수 있으며, 특히 Drizzle Kit을 업그레이드해야 하고 Drizzle ORM 버전이 <0.28.0보다 낮은 경우 더욱 그렇습니다.
0.29.0 버전부터, Drizzle의 모든 쿼리 빌더는 SQL에 최대한 부합하도록 설계되었습니다. 따라서 대부분의 메서드는 한 번만 호출할 수 있습니다. 예를 들어, SELECT 문에서는 WHERE 절이 하나만 존재할 수 있으므로 .where() 메서드는 한 번만 호출할 수 있습니다:
이러한 동작은 전체 쿼리를 한 번에 생성하는 전통적인 쿼리 빌딩에 유용합니다. 하지만 쿼리를 동적으로 생성하려는 경우, 예를 들어 쿼리 빌더를 받아서 추가 기능을 제공하는 공유 함수를 사용할 때 문제가 됩니다. 이 문제를 해결하기 위해 Drizzle은 쿼리 빌더에 ‘동적’ 모드를 제공하며, 이 모드에서는 메서드를 여러 번 호출할 수 있습니다. 이 모드를 활성화하려면 쿼리 빌더에서 .$dynamic()을 호출해야 합니다.
페이지 번호와 선택적인 페이지 크기를 기반으로 LIMIT 및 OFFSET 절을 추가하는 간단한 withPagination 함수를 구현해 보겠습니다:
withPagination 함수는 제네릭 함수로, 쿼리 빌더의 결과 타입을 수정할 수 있습니다. 예를 들어, 조인을 추가할 수 있습니다:
데이터베이스의 제약 조건 이름이 64자 제한을 초과할 경우 문제가 발생할 수 있습니다. 이 경우 데이터베이스 엔진이 이름을 잘라내어 문제를 일으킬 가능성이 있습니다. 0.29.0 버전부터는 primaryKey()와 foreignKey()에 커스텀 이름을 지정할 수 있습니다. 또한 기존의 primaryKey() 구문은 더 이상 사용하지 않을 예정이며, 향후 릴리스에서 제거될 예정입니다.
이제 Drizzle의 withReplica 함수를 사용해 읽기 전용 복제본과 쓰기 작업을 위한 메인 데이터베이스 연결을 각각 지정할 수 있습니다. 기본적으로 withReplicas는 읽기 작업 시 랜덤으로 읽기 전용 복제본을 사용하고, 데이터 수정 작업에는 메인 인스턴스를 사용합니다. 또한, 어떤 읽기 전용 복제본 연결을 사용할지 선택하는 커스텀 로직을 지정할 수도 있습니다. 여러분은 가중치를 적용하거나 원하는 방식으로 선택 로직을 구현할 수 있습니다. 아래는 사용 예제입니다:
아래는 읽기 전용 복제본 선택을 위한 커스텀 로직 구현 예제입니다. 첫 번째 복제본이 70% 확률로 선택되고, 두 번째 복제본은 30% 확률로 선택됩니다. 여러분은 원하는 방식으로 랜덤 선택 로직을 구현할 수 있습니다.
withReplicas 함수는 Drizzle ORM의 모든 다이얼렉트에서 사용 가능합니다.
MySQL 데이터베이스를 사용하여 HTTP 드라이버를 직접 구현할 수 있는 새로운 드라이버가 출시되었습니다. 사용 예제는 ./examples/mysql-proxy 폴더에서 확인할 수 있습니다.
서버에 쿼리와 마이그레이션(마이그레이션 엔드포인트는 선택 사항이며, Drizzle 마이그레이션을 사용하려는 경우에만 필요)을 처리할 두 개의 엔드포인트를 구현해야 합니다. 서버와 드라이버 구현은 여러분의 자유에 맡겨져 있으므로, 커스텀 매핑, 로깅 등 다양한 기능을 추가할 수 있습니다.
서버와 드라이버 구현 예제는 ./examples/mysql-proxy 폴더에서 확인할 수 있습니다.
MySQL과 마찬가지로, 이제 PostgreSQL 데이터베이스를 위한 HTTP 드라이버를 직접 구현할 수 있습니다. 사용 예제는 ./examples/pg-proxy 폴더에서 확인할 수 있습니다.
서버에서 쿼리와 마이그레이션을 처리할 두 개의 엔드포인트를 구현해야 합니다. (마이그레이션 엔드포인트는 선택 사항이며, Drizzle 마이그레이션을 사용하려는 경우에만 필요합니다.) 서버와 드라이버 구현은 여러분의 자유에 맡겨져 있으므로, 커스텀 매핑, 로깅 등 다양한 기능을 추가할 수 있습니다.
서버와 드라이버 구현 예제는 ./examples/pg-proxy 폴더에서 확인할 수 있습니다.