2017-01-04 53 views
4

我目前正在構建一個Google Cloud Dataflow作業,它解析XML文件並使用Google Datastore保存條目,不同的Java庫似乎很混亂。com.google.datastore.v1和com.google.cloud.datastore/Missing選項之間的差異以禁用索引

首先我發現com.google.datastore.v1,它可以很好地處理Dataflow,但後來我意識到排除索引字段的選項丟失了。 (我的大部分字段不需要索引,也不會在查詢中使用。)

然後我找到com.google.cloud.datastore,它有一個名爲「setExcludeFromIndexes」的方法來實現我正在查找的內容for,但Dataflow無法保存使用此庫生成的實體。

其中一個圖書館是新的或者有什麼不同? 有沒有辦法使用v1庫禁用單個字段的索引?

回答

4

v1-library是一個薄層,它提供產生的原始來源和一些輔助功能。
google-cloud-datastore是一個使用v1庫的包裝,旨在更加便於用戶使用。
要允許不同的數據存儲客戶端庫與Dataflow進行接口,我們使用v1庫,因爲它是最不常見的分母。

理想情況下,您可以使用google-cloud-datastore庫,但取決於版本,v1-library和google-cloud-datastore可能具有衝突的依賴關係(特別是protobuf 3.0.0 v 3.0.0-beta-1 )在這種情況下,您必須選擇兼容版本或直接使用v1庫。

v1庫輔助函數可能不足以從索引中排除字段,但您始終可以通過直接處理proto消息來創建自己的助手。在這種特殊情況下,您將創建自己的價值並明確設置exclude_from_indexes

3

這兩個庫目前不彼此(你不能在兩個數據表示之間進行轉換)兼容,但是可以在com.google.datastore.v1排除索引值:

Value value = Value.newBuilder() 
    .setStringValue("foo") 
    .setExcludeFromIndexes(true) 
    .build(); 
相關問題