

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 인덱스가 포함된 테이블 생성 및 문서 삽입
<a name="working.create"></a>

**중요**  
지원 종료 알림: 기존 고객은 07/31/2025에 지원이 종료될 때까지 Amazon QLDB를 사용할 수 있습니다. 자세한 내용은 [Amazon QLDB 원장을 Amazon Aurora PostgreSQL로 마이그레이션](https://aws.amazon.com/blogs/database/migrate-an-amazon-qldb-ledger-to-amazon-aurora-postgresql/)을 참조하세요.

Amazon QLDB 원장을 생성한 후 첫 번째 단계는 기본 [CREATE TABLE](ql-reference.create-table.md) 명령문이 포함된 테이블을 생성하는 것입니다. 테이블은 [Amazon Ion](ion.md) `struct`의 데이터 세트인 [QLDB 문서](ql-reference.docs.md)로 구성됩니다.

**Topics**
+ [테이블 및 인덱스 생성](#working.create.tables-indexes)
+ [문서 삽입하기](#working.create.insert)

## 테이블 및 인덱스 생성
<a name="working.create.tables-indexes"></a>

테이블은 네임스페이스 없이 대소문자를 구분하는 간단한 이름을 사용합니다. QLDB는 개방형 콘텐츠를 지원하며 스키마를 적용하지 않으므로 테이블을 만들 때 속성이나 데이터 유형을 정의하지 않습니다.

```
CREATE TABLE VehicleRegistration
```

```
CREATE TABLE Vehicle
```

`CREATE TABLE` 명령문은 새 테이블의 시스템 할당 ID를 반환합니다. QLDB의 모든 [시스템 할당 ID](working.unique-id.md)는 Base62로 인코딩된 문자열로 각각 표시되는 범용 고유 식별자(UUID)입니다.

**참고**  
테이블을 생성하는 동안 선택적으로 테이블 리소스의 태그를 정의할 수 있습니다. 자세한 방법은 [테이블 생성 시 태그 지정](working.manage-tables.md#working.manage-tables.tags) 섹션을 참조하세요.

테이블에 인덱스를 생성하여 쿼리 성능을 최적화할 수도 있습니다.

```
CREATE INDEX ON VehicleRegistration (VIN)
```

```
CREATE INDEX ON VehicleRegistration (LicensePlateNumber)
```

```
CREATE INDEX ON Vehicle (VIN)
```

**중요**  
QLDB는 문서를 효율적으로 조회하기 위한 인덱스가 필요합니다. 인덱스가 없으면 QLDB는 문서를 읽을 때 전체 테이블 스캔을 수행해야 합니다. 이로 인해 동시성 충돌 및 트랜잭션 시간 초과를 포함하여 대규모 테이블에서 성능 문제가 발생할 수 있습니다.  
인덱싱된 필드 또는 문서 ID(예: `=` 또는 `IN`)에서 동등 *연산자*를 사용하여 `WHERE` 조건자 절이 포함된 문을 실행하는 것이 좋습니다. 자세한 내용은 [쿼리 성능 최적화](working.optimize.md)을 참조하세요.

인덱스를 생성할 때는 다음 제약 조건에 유의하세요.
+ 인덱스는 단일 최상위 필드에만 생성할 수 있습니다. 복합, 중첩, 고유 및 함수 기반 인덱스는 지원되지 않습니다.
+ `list` 및 `struct`를 비롯한 모든 [Ion 데이터 유형](ql-reference.data-types.md)에 대해 인덱스를 생성할 수 있습니다. 그러나 Ion 유형에 관계없이 전체 Ion 값이 같아야만 인덱스 조회를 수행할 수 있습니다. 예를 들어 `list` 형식을 인덱스로 사용하는 경우 목록 내에서 한 항목씩 인덱스 검색을 수행할 수 없습니다.
+ 동등 조건자(예: `WHERE indexedField = 123` 또는 `WHERE indexedField IN (456, 789)`)를 사용할 때만 쿼리 성능이 향상됩니다.

  QLDB는 쿼리 조건자의 부등을 인정하지 않습니다. 따라서 범위 필터링된 스캔은 구현되지 않습니다.
+ 인덱싱된 필드 이름은 대소문자를 구분하며 최대 128자입니다.
+ QLDB에서의 인덱스 생성은 비동기적으로 이루어집니다. 비어 있지 않은 테이블에서 인덱스 빌드를 완료하는 데 걸리는 시간은 테이블 크기에 따라 다릅니다. 자세한 내용은 [인덱스 관리](working.manage-indexes.md)을 참조하세요.

## 문서 삽입하기
<a name="working.create.insert"></a>

그러면 테이블에 문서를 삽입할 수 있습니다. QLDB 문서는 Amazon Ion 형식으로 저장됩니다. 다음 PartiQL [INSERT](ql-reference.insert.md) 명령문에는 [Amazon QLDB 콘솔 시작하기](getting-started.md)에서 사용된 차량 등록 샘플 데이터의 하위 집합이 포함됩니다.

```
INSERT INTO VehicleRegistration
<< {
    'VIN' : '1N4AL11D75C109151',
    'LicensePlateNumber' : 'LEWISR261LL',
    'State' : 'WA',
    'City' : 'Seattle',
    'PendingPenaltyTicketAmount' : 90.25,
    'ValidFromDate' : `2017-08-21T`,
    'ValidToDate' : `2020-05-11T`,
    'Owners' : {
        'PrimaryOwner' : { 'PersonId' : '294jJ3YUoH1IEEm8GSabOs' },
        'SecondaryOwners' : [ { 'PersonId' : '5Ufgdlnj06gF5CWcOIu64s' } ]
    }
},
{
    'VIN' : 'KM8SRDHF6EU074761',
    'LicensePlateNumber' : 'CA762X',
    'State' : 'WA',
    'City' : 'Kent',
    'PendingPenaltyTicketAmount' : 130.75,
    'ValidFromDate' : `2017-09-14T`,
    'ValidToDate' : `2020-06-25T`,
    'Owners' : {
        'PrimaryOwner' : { 'PersonId': 'IN7MvYtUjkp1GMZu0F6CG9' },
        'SecondaryOwners' : []
    }
} >>
```

```
INSERT INTO Vehicle
<< {
    'VIN' : '1N4AL11D75C109151',
    'Type' : 'Sedan',
    'Year' : 2011,
    'Make' : 'Audi',
    'Model' : 'A5',
    'Color' : 'Silver'
} ,
{
    'VIN' : 'KM8SRDHF6EU074761',
    'Type' : 'Sedan',
    'Year' : 2015,
    'Make' : 'Tesla',
    'Model' : 'Model S',
    'Color' : 'Blue'
} >>
```

**PartiQL 구문 및 시맨틱**
+ 필드 이름은 작은 따옴표로 묶습니다(`'...'`).
+ 문자열 값도 작은 따옴표로 묶습니다(`'...'`).
+ 타임스탬프는 백틱으로 묶습니다(``...``). 백틱은 모든 Ion 리터럴을 나타내는 데 사용할 수 있습니다.
+ 정수와 소수는 표시할 필요가 없는 리터럴 값입니다.

PartiQL의 구문 및 시맨틱에 대한 자세한 내용은 [Amazon QLDB에서 PartiQL을 사용한 Ion 쿼리](ql-reference.query.md) 섹션을 참조하세요.

`INSERT` 명령문은 버전 번호가 0인 문서의 초기 개정을 생성합니다. 각 문서를 고유하게 식별하기 위해 QLDB는 *문서 ID*를 메타데이터의 일부로 할당합니다. Insert 문은 삽입된 각 문서의 ID를 반환합니다.

**중요**  
QLDB는 스키마를 적용하지 않으므로 동일한 문서를 테이블에 여러 번 삽입할 수 있습니다. 각 Insert 명령문은 저널에 별도의 문서 항목을 커밋하고 QLDB는 각 문서에 고유한 ID를 할당합니다.

테이블에 삽입한 문서를 쿼리하는 방법을 알아보려면 [데이터 쿼리](working.userdata.md)로 이동합니다.