2015-04-15 30 views
0

我在GAE的應用程序有一個查詢,看起來像這樣:創建一個有限的數據存儲指數

datastore.NewQuery("item").Ancestor(fk).Order("-PubDate").Limit(10).Run(c) 

爲了這個工作,我需要通過pubdate的訂購項目的索引;自動生成一個樣子:

- kind: item 
    ancestor: yes 
    properties: 
    - name: PubDate 
    direction: desc 

該指數是相當大的(大約4 GB),但大部分永遠不會因爲限制()調用的感動。是否有可能讓索引只記住每個祖先的10個結果?

+0

此索引是否影響您應用的性能?你爲什麼想縮小尺寸? –

+0

@ tj-recess數據存儲是我的應用程序的主要支出,並且此索引是我數據存儲的20-40%。所以擺脫它會爲我節省大量的金錢。 –

回答

1

可能有兩個相同類型的實體具有相同的屬性,但一個實體具有此屬性的索引而另一個未索引。

Java運行時中的低級數據存儲API允許應用程序決定是否爲每個單獨的實體索引或不索引每個屬性。我不知道其他運行時是否存在相同的結果。如果不是,您可以使用兩個不同的屬性名稱來指示索引日期和未索引日期。

從技術上講,是的,你只能在索引中保留少量的實體。但是,請注意,您必須重新保存包含未索引屬性的實體,以便將其從該索引中移除。重新保存所有實體將會產生額外費用,因此,如果您出於任何其他原因重新保存實體,則此解決方案可能有意義。

+0

因此,在這個模型中,應用程序本身會手動標記它想要在索引中的哪些實體? –

+0

是的,你可以做到這一點。 –