Hasura 2.0.0-alpha.8 발표

Hasura 2.0.0-alpha.8 발표

Hasura 2.0.0-alpha.8의 출시를 발표하게 되어 기쁩니다!

이것은 완전히 기능이 안정적인 2.0을 향한 우리의 여정을 계속합니다. 그리고 이름은 '알파'이지만 품질은 알파가 아닙니다. 그러나 우리는 이 기표를 사용하여 진행 중인 작업임을 표시하고 발생할 수 있는 문제에 대한 피드백을 요청합니다.
  • Hasura 2.0.0-alpha.8 docker quickstart
  • Hasura 2.0.0-alpha.8 changelog
  • Getting Started with Hasura Cloud

  • 릴리스 요약



    가까운 장래에 Hasura 릴리스 프로세스에 대해 전체적으로 더 많은 정보가 제공될 것입니다. 우리는 역사적으로 Discord를 통해 릴리스를 발표하고 GitHub 릴리스 페이지에 대한 업데이트를 발표했습니다. 채택이 계속 증가함에 따라 이것이 미래에 충분하지 않다고 생각합니다.

    이를 위해 블로그, 트위터(@HasuraHQ), Discord 및 Github 릴리스 페이지를 통해 릴리스를 추적할 수 있도록 각 릴리스(작더라도)에 대한 블로그를 시작할 것입니다. 이 게시물에서는 각 릴리스의 몇 가지 특정 요소를 강조하지만 기능 및 개선 사항에 대한 전체 목록은 항상 변경 로그에 있습니다. 이 변경 사항을 고려하여 이 블로그에서는 alpha.7의 기능뿐만 아니라 일부 기능도 다룰 것입니다.

    개요



    3D PostGIS 연산자 지원



    이제 부울 식에서 함수 ST_3DDWithinST_3DIntersects의 사용을 지원합니다.ST_3DIntersects은 PostGIS가 built with SFCGAL support이어야 하며 사용된 PostGIS 배포판에 따라 다를 수 있습니다.

    부울 식에서 null 값 지원



    v2에서는 long-standing issue을 수정하는 것을 목표로 하는 주요 변경 사항을 도입했습니다. 부울 식의 null 값은 모든 행에 대해 항상 True으로 평가됩니다. 예를 들어 다음 쿼리는 모두 동일했습니다.

    delete_users(where: {_id: {_eq: null}}) # field is null, which is as if it were omitted
    delete_users(where: {_id: {}}) # object is empty, evaluates to True for all rows
    delete_users(where: {}) # object is empty, evaluates to True for all rows
    delete_users() # delete all users
    
    


    이 동작은 직관적이지 않았으며 첫 번째 쿼리가 "id 열이 null인 모든 사용자 삭제"를 의미할 것으로 예상한 사용자에게는 불쾌한 놀라움이 될 수 있습니다. 따라서 v2에서는 null 값을 거부하도록 부울 연산자의 구현을 변경했습니다. 더 안전하다고 생각했기 때문입니다.

    delete_users(where: {_id: {_eq: null}}) # error: argument of _eq cannot be null
    
    


    그러나 이 변경으로 인해 부울 연산자의 이 속성에 의존하고 있던 some of our users의 작업 흐름이 중단되었습니다. 예를 들어 테스트를 조건부로 활성화하는 데 사용되었습니다.

    query($isVerified: Boolean) {
      users(where: {_isVerified: {_eq: $isVerified}}) {
        name
      }
    }
    
    


    이 릴리스에서는 엔진을 이전 동작으로 되돌리는 방법을 제공합니다. HASURA_GRAPHQL_V1_BOOLEAN_NULL_COLLAPSE 환경 변수가 "true"로 설정되면 부울 표현식의 null 값은 다음 연산자에 대해 v1에서와 같이 동작합니다. , _is_null , _eq , _neq , _in , _nin .

    Postgres 변이에 대한 트랜잭션 - alpha.7



    v2에서는 이기종 실행이 도입되었습니다. 하나의 쿼리 또는 변형에서 다른 소스를 대상으로 할 수 있습니다. MSSQL의 테이블:

    mutation {
      // goes to Postgres
      insert_author_one(object: {name: "Simon Peyton Jones"}) {
        name
      }
    
      // goes to MSSQL
      insert_publication_one(object: {name: "Template meta-programming for Haskell"}) {
        name
      }
    }
    
    


    그러나 이기종 실행에는 비용이 있습니다. 각 부분이 다른 데이터베이스를 대상으로 할 수 있으므로 더 이상 변형을 트랜잭션으로 실행할 수 없습니다. 이것은 v1에 비해 회귀입니다.

    우리는 미래에 사용자가 일련의 변이가 트랜잭션으로 실행되는 시기를 선택할 수 있는 명시적 API를 제공하여 이 문제를 해결하고 싶지만 지금은 다음과 같은 최적화를 도입합니다. 동일한 Postgres 소스를 사용하는 경우 v1에서와 같이 트랜잭션으로 실행하여 Hasura v1 사용자가 v2로 업그레이드할 때 중단되는 변경이나 회귀를 방지합니다.

    결론



    도커 대상 "hasura/graphql-engine:v2.0.0-alpha.8"을 사용하고 사용해 보고 무엇이 효과가 있고 개선이 필요한지 알려주십시오. Twitter( 및 Github )에서 우리를 찾을 수 있습니다. 즉석 대화를 원하시면 Hasura Community Discord 에서 자유롭게 참여하세요.

    그리고 최신 안정 릴리스로 지금 시작하려면 Hasura Cloud 의 배포 단순성을 확인하십시오.

    좋은 웹페이지 즐겨찾기