每个 Cloud Datastore 查询都使用一个或多个索引来计算其结果,这些索引包含按索引属性和(可选)实体祖先指定的序列中的实体键。索引会以增量方式更新以反映应用程序对其实体所做的任何更改,以便所有查询的正确结果都可用,而无需进一步计算。
一般来说,我想知道是否
datastore.get(List<Key> listOfKeys);
比准备好索引文件的查询更快或更慢(结果相同)。
Query q = new Query("Kind")(.setFilter(someFilter));
我目前的问题:
我的数据由图层和点组成。点仅属于一个唯一的层,并且在层内具有唯一的 id。我可以通过多种方式加载这些点:
1)具有“图层名称”属性的点并使用过滤器进行查询。- 在这里我不确定数据存储是否会准备好结果,因为图层名称会动态变化。
2) 只使用键。该层必须存储点 ID。
KeyFactory.createKey("Layer", "layer name");
KeyFactory.createKey("Point", "layer name"+"x"+"point id");
3) 使用不带过滤器的查询:我实际上不需要通用种类“点”,可以更具体:种类将是 (“层名称”+“点 id”) - 创建更多种类的成本是多少?这可能是最快的方法吗?
你真的能详细了解数据存储是如何工作的吗?