2014-06-09 4 views
1

저는 IndexedDB를 배우러 왔기 때문에 Google Cloud Datastore의 개념이 저를 혼란스럽게합니다.Google Cloud Datastore : 배열 및 객체 저장

정확하게 배열과 객체를 어떻게 저장합니까?

{ category: 'football', keywords: ['foo', 'bar'] } 
{ dinosaurs: { trex: { teeth: 'large' } } } 

가 정확히 어떻게 내가 데이터베이스를 구성해야합니다

이 같은 시나리오를 생각해보십시오?

IndexedDB에는 배열의 모든 키워드를 별도의 항목으로 저장할 수있는 multiEntry이 있습니다.

배열의 경우 : 키워드로 검색하려면 "종류"의 키워드로 새 엔터티를 만들고 각 키워드를 별도의 엔터티로 저장해야합니까? 관련 카테고리에 어떻게 연결합니까?

개체의 경우 : JSON 문자열로 저장 한 다음 스크립트에서 문자열/디코드해야합니까?

+1

를 저장하는 HTTP API의 – GAEfan

답변

2

문자열 목록을 단일 속성에 저장할 수 있습니다. 이 속성은 인덱싱되거나 인덱싱되지 않을 수 있습니다. 당신은 당신이 (추가 비용) 인덱싱 할 수있는 속성 표시하고 속성을 색인화되지 않은 할 수

Entity entity = new Entity("dinosaurs"); 
entity.setProperty("type", "trex"); 
entity.setUnindexedProperty("teeth", "large"); 

이 방법 : 개체에 대한

, 당신은 엔티티를 생성합니다.

위 예제는 Java Datastore API을 사용하고 있지만 Objectify과 같은 프레임 워크를 사용하여 개체와 엔터티를 관리 할 수도 있습니다.

Datastore에는 합리적으로 좋은 문서가 있으며 examples/tutorials 개가 있습니다.

{properties: {keywords: {list_value: [{string_value: 'foo'}, ...]}}} 

또는 엔티티 :

{ 
    properties: { 
    dinosaurs: { 
     entity_value: { 
     properties: { 
      'trex': {entity_value: {properties: {teeth: {string_value: 'large'}}} 
     } 
     } 
    } 
    } 
} 

(즉 ENTITY_VALUE 현재 인덱싱 할 수 없습니다 주)

+0

목록을 문자열로 저장하면 특정 키워드를 어떻게 쿼리합니까? 예를 들어, 키워드 "foo"를 포함하는 모든 항목을 원합니다. –

+1

문자열로 저장 한 후'JSON.loads'를 실행하면 각각을 반복 할 수 있습니다. 'some_var = json.loads (my_JSON_str.json)''this_val = some_var [ 'keywords']. get ('foo')''this_val ... '. 그러나 이것은 비싸고 비효율적입니다. 'foo'가 들어있는 항목에 대해 데이터 저장소를 쿼리하려면 해당 쿼리를 인덱싱하고 속성을 데이터 저장소의 속성으로 저장해야합니다. – GAEfan

+0

마지막 문장은'keywords : {foo : 'football'}'와 같은 의미입니까? –

1

은 값은 값의 목록을 포함 할 수 있습니다 JSON 문자열로 사용한 다음 스크립트에서 문자열/디코딩하는 것은 간단하고 저렴한 방법입니다.
관련 문제