DataGrip 2021.1의 새로운 기능

올해 첫 번째 주요 릴리스이자 DataGrip 역사상 가장 주목할 만한 릴리스인 DataGrip 2021.1을 소개합니다. 2021.1 버전에서 그동안 안고 있던 문제를 하나 이상 해결하거나 좋아할 만한 새로운 기능을 발견하거나 둘 다 이루셨으면 좋겠습니다. 지금부터 자세히 살펴보겠습니다.

권한 부여용 UI

이 기능은 PostgreSQL, Redshift, Greenplum, MySQL, MariaDB, DB2, SQL Server, Sybase에서 사용할 수 있습니다.

객체를 수정할 때 권한 부여를 편집하기 위한 UI가 추가되었습니다.

데이터베이스 탐색기에서 Cmd/Ctrl+F6을 누르면 사용자를 호출할 수 있는 Modify user(사용자 수정) 창에 이제 객체에 권한을 추가할 수 있는 UI가 있습니다.

컨텍스트 라이브 템플릿

선택 항목 접기

이 템플릿은 데이터베이스 탐색기에서 바로 간단한 구문을 생성하려는 사용자를 위한 솔루션입니다. 일반 라이브 템플릿은 간단한 쿼리를 빠르게 작성해야 하는 대부분의 경우에 사용할 수 있습니다. 그러나 사용자가 데이터베이스 탐색기의 컨텍스트에 있고 이미 필요한 객체에 집중하고 있는 경우, 해당 객체로 간단한 쿼리를 얻는 더 좋은 방법이 있다는 사실을 저희도 알고 있습니다.

또한 다른 많은 도구에서도 반복 작업을 줄이기 위해 이 메커니즘을 활용하므로 많은 사용자가 이미 익숙해져 있습니다.

다음은 메커니즘의 작동 원리를 보여주는 짧은 동영상입니다.

이 목록의 코드 스니펫 하나하나는 실제로 라이브 템플릿이지만 선택한 객체의 컨텍스트에서 생성할 수 있는 특수한 템플릿이기도 합니다. 예를 들어 Select first N rows from a table(테이블에서 처음 N개의 행 선택) 템플릿을 살펴보겠습니다.

라이브 템플릿 설정 페이지를 열고 필요한 템플릿을 찾습니다.

Select first N rows from a table(테이블에서 처음 N개의 행 선택)은 일반 템플릿처럼 보입니다(동일한 용도로 사용 가능). 이 특정 구문은 모든 데이터베이스에서는 사용할 수 없으므로 그에 해당하는 파생 언어가 이 템플릿에 설정됩니다. 이 템플릿을 데이터베이스 탐색기에서 적용할 수 있게 만드는 주요 차이점은 $table$ 변수에 사용되는 특수한 표현식 dbObjectName에 있습니다.

또한 고유한 템플릿을 추가하거나 기존 템플릿을 편집할 수도 있습니다.

Settings(설정)/Preferences(환경 설정) | Database(데이터베이스) | General(일반)에서 사용 중인 스크립트를 현재 콘솔로 생성할 것인지 새 콘솔로 생성할 것인지 선택하세요.

데이터 에디터

MongoDB의 데이터 편집

MongoDB 작업에 도움이 되는 중요한 기능을 추가했습니다. 이 버전부터 MongoDB 컬렉션의 데이터를 편집할 수 있습니다. 구문 미리보기도 이용할 수 있습니다.

 

또한 더 유연하게 편집할 수 있도록 UI에서 필드 유형을 변경하는 기능을 도입했습니다. 이 작업은 필드의 컨텍스트 메뉴 또는 값 에디터에서 수행할 수 있습니다.

향상된 정렬 기능

데이터 정렬 기능을 다음과 같이 개선했습니다.

  • 새로운 ORDER BY 필드는 WHERE 필드(예전 이름은 Filter)와 유사하게 작동합니다. 작업 중인 절을 입력하여 그리드의 쿼리에 적용하세요.
  • 정렬은 기본적으로 '누적'되지 않습니다. 데이터를 정렬할 열 이름을 클릭하면 다른 열을 기준으로 한 정렬이 지워집니다. 누적된 정렬을 사용하려면 Alt 키를 누른 상태에서 열 이름을 클릭하세요.

클라이언트 측에서 정렬을 사용하려는 경우(DataGrip은 쿼리를 다시 실행하지 않고, 대신 현재 페이지 내에서 데이터를 정렬), Sort via ORDER BY(ORDER BY를 통해 정렬)를 선택 해제합니다.

숫자 기본 키를 기반으로 사전 정의된 정렬로 테이블을 열 수도 있습니다. 이 설정은 Settings(설정)/Preferences(환경 설정) | Database(데이터베이스) | Data Views(데이터 뷰)에 있습니다.

새로운 툴바

데이터 에디터의 툴바를 새롭게 작업했습니다. Roll-back(롤백)Commit(커밋) 버튼은 더 이상 자동 트랜잭션 모드에서 표시되지 않으며 Revert changes(변경 내용 되돌리기)Find(찾기)라는 2개의 버튼이 새로 추가되었습니다.

단일 행 결과 전치

이제 Settings(설정)/Preferences(환경 설정) | Database(데이터베이스) | Data Views(데이터 뷰)에 결과에 단 하나의 행만 있는 경우 해당 결과를 항상 전치할 수 있는 옵션이 있습니다.

탐색

간단해진 액션

탐색 작업을 단순화하고 다음 설정을 제거했습니다.

선택 항목 접기

이러한 설정을 변경한 적이 없고 체크박스를 기본적으로 선택해 놓은 사용자에게 해당되는 2021.1의 주요 변경 내용은 다음과 같습니다. 이제 SQL의 객체에서 Go to declaration(선언으로 이동)(Ctrl/Cmd+B)을 호출하면 데이터베이스 트리가 아닌 DDL로 이동합니다.

또한 Select in database tree(데이터베이스 트리에서 선택) 액션에 단축키를 도입했습니다. Windows/Linux의 경우는 Alt+Shift+B이며 macOS의 경우는 Opt+Shift+B입니다.

이렇게 변경한 주된 이유는 각 액션을 사용하면 예상한 위치로 이동할 수 있도록 로직을 더 단순화하기 위해서입니다.

이제 커서를 객체 위에 놓으면 다음과 같이 탐색할 수 있습니다.

  • Ctrl/Cmd+B를 누르면 DDL이 표시됩니다.
  • F4를 누르면 데이터가 표시됩니다.
  • Alt/Opt+Shift+B를 누르면 데이터베이스 트리에서 해당 객체가 강조 표시됩니다.

하지만 변화로 인해 일부 습관이 깨질 우려도 알고 있기에 이전 환경을 유지할 수 있는 방법도 제공합니다. 몇가지 팁은 다음과 같습니다.

  • 키맵을 활용하세요. Ctrl/Cmd+B를 사용하여 데이터베이스 탐색기를 열고 싶은 경우, 간단히 Select in database tree의 단축키를 다시 매핑하면 됩니다.
  • SQL에서 사용되는 객체가 아직 생성되지 않았을 때 Ctrl/Cmd+B를 누르거나 Ctrl/Cmd+클릭하여 CREATE definition(정의 생성)을 여는 방식이 마음에 드는 경우, 이전 팁의 다시 매핑하는 방법을 사용한 후 Go to declaration에서 이러한 단축키를 제거하지 않으면 됩니다.
  • Prefer data editor over DDL editor(DDL 에디터보다 데이터 에디터 선호) 설정을 선택하지 않고 두 번 클릭으로 DDL을 여는 방법을 선호하는 경우, 레지스트리 키의 값을 database.legacy.navigate.to.code.from.tree로 변경하여 이 동작을 되돌릴 수 있습니다. 저희가 확인한 데이터에 따르면 이러한 흐름을 사용하는 사용자는 매우 드물었습니다. 또한 객체와 관련하여 DDL을 열 때는 단축키를 사용하는 것을 추천드립니다.

이 새로운 흐름에서 더 이상 작동하지 않는 사용 사례가 있는 경우 알려주시기 바랍니다.

연결성

Azure MFA 지원

Azure Active Directory 대화형 인증이 지원됩니다. 이 기능을 활성화하면 브라우저가 자동으로 열리고 거기에서 로그인할 수 있습니다.

Redshift 드라이버 2.x

Redshift 2.x JDBC 드라이버가 이 버전부터 DataGrip 사용자에게 제공됩니다. 주요 개선 사항은 쿼리를 취소하는 기능입니다.

Google BigQuery 완벽하게 지원

Google BigQuery 파생 언어에 대한 지원은 이전 릴리스에서 추가되었습니다. 이번 릴리스에서는 데이터베이스 내부 검사 및 코드 생성이 제대로 작동하고 더 이상 JDBC 드라이버의 기능에 좌우되지 않도록 지원을 확장했습니다.

CockroachDB 파생 언어 지원

이제 CockroachDB 스크립트로 작업하거나 해당 데이터베이스를 쿼리하는 SQL을 작성할 때 코드가 올바르게 강조 표시되고 쿼리를 실행하기 전에 모든 오류가 표시됩니다. 이는 향후 릴리스 중 하나에서 제공될 완벽한 CockroachDB 지원의 첫 단계입니다.

연결 창 개선 사항

연결 창을 사용하기 편하게 다시 작업했습니다.

  • 이제 드라이버와 데이터 소스가 2개의 다른 탭에 나누어 표시됩니다. 드라이버 목록은 숙련된 사용자에게는 번거로운 작업을 덜어주는 동시에 초보자가 데이터 소스와 드라이버 목록을 혼동하지 않도록 도와줍니다.
  • 모든 드라이버 페이지에 Create data source(데이터 소스 생성) 버튼이 포함됩니다.
  • Test Connection(연결 테스트) 버튼이 하단으로 이동되어 이전과 같이 General(일반) 및 SSH/SSL 탭뿐만 아니라 데이터 소스 프로퍼티의 모든 탭에서 버튼을 사용할 수 있습니다.
  • DDL 데이터 소스 프로퍼티 페이지에 파생 언어를 선택할 수 있는 드롭다운 목록이 있습니다.

이제 URL 필드가 확장되므로 긴 URL을 더 간편하게 처리할 수 있습니다.

데이터베이스 탐색기

선택 항목 접기

데이터 소스를 간편하게 복사 및 붙여넣기

데이터 소스를 복사하고 붙여넣는 기능은 오래 전에 도입되었습니다. 2021.1부터는 세계에서 가장 유명한 단축키인 Ctrl/Cmd+C/X/V를 사용해 데이터 소스를 복사하고 잘라내고 붙여넣을 수 있습니다.

  • 데이터 소스를 복사하면 XML이 클립보드에 복사되어 메신저를 통해 공유할 수 있습니다. 또한 Paste(붙여넣기) 액션을 사용하여 다른 곳에서 가져온 XML을 붙여넣을 수도 있습니다.
  • 한 프로젝트 내에서 데이터 소스를 잘라내어 붙여넣으면 비밀번호를 입력할 필요 없이 간단히 이동됩니다. 단, 다른 모든 경우에는 비밀번호가 필요합니다.
  • Cut(잘라내기)Ctrl/Cmd+Z로 실행 취소할 수 있습니다.

새로운 레이아웃

데이터베이스 탐색기의 디폴트 레이아웃이 변경되어, 전용 노드에서 비 주요 객체를 사용할 수 있습니다. 대부분의 경우 사람들은 테이블, 뷰, 루틴으로 작업하는 반면 사용자, 역할, 테이블스페이스, 외부 데이터 래퍼 및 기타 여러 유형의 객체를 확인하는 작업은 우선순위가 낮습니다. 따라서 이러한 부차적 객체는 이제 Server Objects(서버 객체)Database Objects(데이터베이스 객체)라는 두 노드 아래에 숨겨집니다.

 

이전 레이아웃으로 되돌리려면 톱니바퀴 아이콘 아래에 있는 설정에서 Group Database and Schemas(데이터베이스 및 스키마 그룹화)를 선택하면 됩니다.

자동 생성된 객체 숨기기 Oracle

Oracle을 사용하는 경우 다음을 포함하여 자동 생성된 객체를 트리에 표시하거나 숨길 수 있는 옵션이 추가되었습니다.

  • 구체화된 뷰 로그
  • 구체화된 뷰의 기본 테이블
  • 보조 테이블

새로운 객체 유형 SQLite

SQLite에서 함수, 모듈, 가상 열에 대한 내부 검사를 할 수 있습니다.

지원되지 않는 데이터베이스를 위한 개선 사항

데이터 소스 템플릿

2021.1부터는 지원되지 않는 데이터베이스에 데이터 소스를 더 쉽게 추가할 수 있습니다. 이제 AWS Athena, Informix, Presto, SAP HANA, Google Cloud Spanner 등에 JDBC 드라이버가 제공됩니다. 데이터베이스 목록의 Other(기타) 섹션에서 이러한 데이터베이스를 찾아보세요.

그 외 몇가지 추가 개선 사항이 있습니다.

  • 더 이상 드라이버를 직접 다운로드하여 이를 기반으로 데이터 소스를 수동으로 생성할 필요가 없습니다.
  • 새 드라이버 버전은 DataGrip에서 제공됩니다.
  • 일부 새 데이터베이스는 고유한 전용 아이콘을 가집니다.

이러한 데이터베이스에 대한 지원은 제한적입니다. 지원 가능 여부는 주로 JDBC 드라이버의 기능과 DataGrip의 SQL 에디터의 SQL:2016 파생 언어 지원에 따라 다릅니다.

쿼리 분석

지원되지 않는 데이터베이스를 사용하기 위한 새로운 설정이 도입되었습니다. DataGrip에서 이러한 데이터베이스로 작업할 때는 SQL:2016 또는 Generic 파생 언어를 사용해야 합니다. Generic은 발견된 모든 오류가 강조 표시되지 않는다는 단 하나의 차이점을 제외하고 SQL:2016과 거의 같습니다.

설정에 액세스하려면 Settings(설정)/Preferences(환경 설정) | Database(데이터베이스) | General(일반) | Split a script for execution in Generic and ANSI SQL dialects(Generic 및 ANSI SQL 파생 언어로 실행하기 위해 스크립트 분할)로 이동합니다. 다음 값을 선택할 수 있습니다.

  • On valid ANSI SQL statements or by separator(유효한 ANSI SQL 문에서 또는 구분 기호로) – 대부분의 경우에 적합한 디폴트 설정입니다. 즉, 사용자가 실행하려는 항목을 파악하기 위해 JetBrains에서 최선을 다합니다.
  • On ANSI SQL Statements(ANSI SQL 문에서) – 구문을 예전과 마찬가지로 분할합니다. 이 로직은 SQL:2016 문법에 따라 DataGrip이 유효하다고 판단한 항목만 기반으로 합니다.
  • By statement separator(구문의 구분 기호로) – 구분 기호로 구문을 추출하고 실행합니다. 첫 번째 옵션이 작업을 수행하지 않으면 이 옵션을 사용하세요. GenericSQL의 구분 기호는 세미콜론입니다. 사용자 지정 구분 기호는 이제 설정할 수 없으니 유념해 주세요.

다음은 해결된 몇가지 문제입니다.

  • 많은 사용자가 CTE 실행 시 발생하는 문제를 보고해주셨습니다. 이는 Generic 문법이 SQL:92에서 SQL:2016으로 업그레이드되면서 부분적으로 완화되었지만, On valid ANSI SQL statements or by separator 옵션은 여전히 ​​복잡한 CTE에 도움이 됩니다. 이 옵션과 함께 작동하는 구문의 또 다른 예시는 비표준 MERGE 문입니다.
  • 또한 On valid ANSI SQL statements or by separator 옵션은 show databases(데이터베이스 표시)와 같이 SQL:2016 문법에서 구문이 아닌 항목을 실행하는 데에도 도움이 됩니다.

코딩 지원

CTE 사용 시 모호한 열 이름

모호한 열 이름을 보고하는 검사가 더 스마트해져 이제 공통 테이블 표현식 내의 모든 열을 고려합니다.

시스템 함수를 정규화하지 않은 상태로 사용 가능 SQL Server

이제 시스템 함수 및 프로시저가 정규화되지 않은 상태로 사용되어도 오류로 강조 표시되지 않습니다. 이러한 항목에서 탐색 및 코드 완성 기능도 작동합니다.

JSON Lines 지원

Thanks to the IntelliJ Platform, DataGrip now has support for the newline-delimited JSON Lines format used for working with structured data and logs. IDE는 .jsonl, .jslines, .ldjson.ndjson 파일 형식을 인식합니다.

조정 가능한 글꼴 두께

새로운 타이포그래피 설정을 통해 글꼴 스타일을 세세하게 조정할 수 있습니다. 2021.1 버전에서는 Settings(설정)/Preferences(환경 설정) | Editor(에디터) | Fonts(글꼴)에서 기본 글꼴 및 굵은 글꼴 스타일의 두께를 선택할 수 있습니다.

가져오기/내보내기

로드되지 않은 데이터 경고

완전히 로드되지 않은 바이너리 데이터를 복사하면 다음과 같은 알림이 표시됩니다.

데이터가 잘리지 않도록 하려면 Settings(설정)/Preferences(환경 설정) | Database(데이터베이스) | Data Views(데이터 뷰) | Maximum number of bytes loaded per value(값당 로드되는 최대 바이트 수)에서 값을 높이세요.

Excel 파일 내 쿼리

Excel로 내보낼 때 결과 파일에는 별도의 시트에 쿼리가 포함됩니다.

컨텍스트 메뉴의 First row is header(첫 번째 줄은 헤더) 옵션.

CSV 파일을 가져올 때 아래와 같이 컨텍스트 메뉴에서 첫 번째 행이 헤더임을 명시하는 옵션을 사용할 수 있습니다.

사용자 인터페이스

선택 항목 접기

드래그 앤 드롭으로 폴더 첨부

이제 폴더를 드래그 앤 드롭하여 프로젝트에 첨부할 수 있습니다.

선택 항목 접기

분할 뷰의 탭 최대화

에디터를 수직으로 분할하는 탭이 여러 개 열릴 때마다 각 탭의 에디터 창을 두 번 클릭하여 최대화할 수 있습니다. 창을 원래 크기로 되돌리려면 다시 두 번 클릭하면 됩니다.

탭 제목의 긴 이름

예전에 단축된 탭 이름이 도입되었지만 모두가 좋아하지는 않았으므로 더 다양한 옵션이 있는 설정을 마련했습니다.