Datastore의 데이터 객체를 항목이라고 하며, 각 항목은 쿼리를 위해 특정한 종류로 분류됩니다. 예를 들어 인사 관리 애플리케이션을 작성하는 경우 각 직원을 Employee
종류의 항목으로 나타낼 수 있습니다. 항목 데이터 값 형태는 속성이라는 점에 유의하세요.
항목에 대한 자세한 내용은 상위 경로와 트랜잭션 문서를 참조하세요.
항목 만들기 및 속성 설정
모델 클래스에 대한 생성자 메소드를 호출하여 항목을 만들고 설정합니다. 항목 모델 클래스 만들기에 대한 자세한 내용은 항목 모델 클래스 만들기 및 사용을 참조하세요.
다음 예에서는 키워드 인수를 사용하여 모델 클래스 생성자를 호출하는 방법을 보여줍니다.
이 코드는 프로그램의 주 메모리에 객체를 만듭니다. 그러나 항목은 프로세스가 종료될 때 사라지므로 다음과 같이 put()
을 호출하여 항목을 Datastore에도 유지해야 합니다.
그러면 나중에 Datastore에서 항목 검색에 사용할 수 있는 키가 반환됩니다.
다음 옵션 중 하나를 사용하여 속성을 설정하세요.
- 키워드 인수를 사용하여 생성자에 대한 항목 속성을 지정합니다.
- 항목을 생성한 후에 속성을 수동으로 설정합니다.
populate()
편의 메서드를 사용하여 작업 한 번으로 여러 속성을 설정합니다.
하지만 항목 속성을 설정하면 속성 유형(이 경우 StringProperty
및 IntegerProperty
)이 유형 확인을 적용합니다.
예를 들면 다음과 같습니다.
...
키에서 항목 검색
항목 키가 있는 경우 Datastore에서 항목을 가져올 수 있습니다.
키 메서드 kind()
및 id()
는 키에서 항목의 종류와 식별자를 복구합니다.
또한 항목 키를 사용하여 URL에 삽입하기에 적합한 인코딩된 문자열을 가져올 수도 있습니다.
agVoZWxsb3IPCxIHQWNjb3VudBiZiwIM
과 같은 결과가 생성되고 나중에 키를 재구성하고 원본 항목을 검색하는 데 사용될 수 있습니다.
URL 안전 문자열은 비밀스러워 보이지만 암호화되어 있지는 않습니다. 간편하게 디코딩하여 원래 항목의 종류 및 식별자를 복구할 수 있습니다.
key = Key(urlsafe=url_string) kind_string = key.kind() ident = key.id()
이러한 URL 안전 키를 사용하는 경우, 이메일 주소와 같은 민감한 정보를 항목 식별자로 사용하지 마세요. 한 가지 해결책은 민감한 정보의 해시를 식별자로 사용하는 것입니다. 이렇게 하면 암호화된 키를 볼 수 있는 제3자가 알려진 이메일 주소의 해시를 독립적으로 생성 및 사용하여 이 주소가 Datastore에 있는지 확인하는 것을 중지할 수는 없지만 암호화된 키를 사용하여 이메일 주소를 수집하지 못하게 합니다.
항목 업데이트
기존 항목을 업데이트하려면 Datastore에서 항목을 검색하고 속성을 수정한 후 다시 저장합니다.
항목 키는 업데이트할 때 변경되지 않으므로 이 경우 put()
에서 반환하는 값을 무시할 수 있습니다.
항목 삭제
키의 delete()
메서드를 사용하여 더 이상 필요 없는 항목을 Datastore에서 삭제할 수 있습니다.
이 작업은 항목 자체에 대한 작업이 아니라 키에 대한 작업입니다. 항상 None
을 반환합니다.
대량 항목 삭제
다수의 항목을 삭제해야 하는 경우 Dataflow를 사용하여 항목을 일괄 삭제하는 것이 좋습니다.
일괄 작업 사용
항목 또는 키 컬렉션을 별도의 호출에서 개별적으로 처리(예: 루프 내부)하지 않고 단일 호출에서 처리할 수 있습니다. 이렇게 하면 항목마다 별도의 리모트 프로시져 콜(RPC)이 아니라 배치에 대한 단일 RPC가 이루어집니다.
다음 코드는 이 작업을 수행하는 방법을 보여줍니다.
위 코드에서는 키 객체 목록을 ndb.get_multi
에 전달하여 한 번에 항목 여러 개를 가져옵니다. Cloud Datastore에 해당 항목이 없는 키의 경우 ndb.get_multi
는 None
값을 포함하여 항목 객체의 목록을 반환합니다. 이러한 방식으로 항목을 가져오면 전체 배치에서 Datastore에 대한 호출 횟수가 줄어듭니다. (배치당 호출 횟수는 배치 크기 설정에 따라 다릅니다.)