| 항목 | 테이블 · 데이터베이스 이름 | 컬럼 이름 |
|---|---|---|
| 최소 길이 | 1자 | 1자 |
| 최대 길이 | 128자 | 767자 |
| 첫 글자 | 영숫자 또는 _ |
유니코드 문자 가능 |
| 사용 문자 | ASCII 만 | 유니코드 가능 |
| 대소문자 | 구분하지 않음 | 구분하지 않음 |
컬럼 이름이 테이블 이름보다 규칙이 느슨하다. 767자와 유니코드 허용은 메타스토어 RDBMS 의 컬럼 길이에서 온 값이다.
Impala 는 식별자를 모두 소문자로 바꿔 처리한다. T1 과 t1 은 같은 테이블이고, 백틱으로 감싸도 마찬가지다. 대소문자를 구분해 저장할 방법은 없다.
CREATE TABLE MyTable (Col1 INT);
SHOW TABLES; -- mytable 로 보인다
대소문자만 다른 두 테이블을 만들려는 설계는 성립하지 않는다.
예약어나 규칙에 어긋나는 이름은 백틱으로 감싼다.
SELECT `data`, `select` FROM `order`;
CREATE TABLE db.`123tbl` (id INT);
백틱은 예약어와 숫자로 시작하는 이름을 쓰기 위한 것이지, 허용되지 않는 문자를 허용하게 만들지는 않는다. 테이블 이름에 # · % · 공백 같은 문자를 백틱으로 감싸 넣으려는 시도는 통하지 않거나, 만들어지더라도 하위 시스템에서 문제를 일으킨다.
실질적인 제약은 Impala 만의 것이 아니다. 테이블 데이터가 HDFS 디렉터리로 내려가고 Hive 메타스토어에 이름이 저장되므로, 파일시스템과 메타스토어가 견디는 범위가 실제 한계가 된다. 영소문자 · 숫자 · 밑줄만 쓰고, 숫자로 시작하지 않는다는 관례를 따르는 것이 안전하다.
Kudu 테이블은 별도의 제약이 더 있다. Kudu 쪽 이름 규칙과 Impala 의 매핑 방식이 버전에 따라 달라 특수문자가 들어간 이름에서 문제가 잦다.