1

Я использую модель дизайна, которую я не уверен, абсолютно прав, поэтому я подумал, что, возможно, я должен задать вопрос, чтобы найти лучший подход к этому. я создал базовый объект с двумя полями, например:Объектно-ориентированный дизайн модели объекта

 public abstract class BaseEntity 
    @Index private Key<User> createdBy; 
    @Index private DateTime creationDate = new DateTime(); 

Теперь я также есть еще один суб класс с именем пользователя с его собственные индексы, например:

 @Entity 
    @Cache 
    public class user extends BaseEntity 
    @Index private String email ; 
    @Index private String dob 

Сейчас, когда я пишу свои хранилища данных-индексов. xml файл имеет право сделать это следующим образом:

<datastore-index kind="User" ancestor="false" source="manual"> 
    <property name="createdBy" direction="asc"/> 
    <property name="creationDate" direction="asc"/> 
    <property name="email" direction="asc"/> 
    <property name="dob" direction="asc"/> 
    </datastore-index> 

     or 

    <datastore-index kind="User" ancestor="false" source="manual"> 
    <property name="email" direction="asc"/> 
    <property name="dob" direction="asc"/> 
</datastore-index> 

Спасибо.

ответ

1

В облачном хранилище индексы, которые вам нужны, полностью зависят от запросов, которые вы хотите запустить, а не от модели данных. Раздел index definition в документации очень полезен. Например, если вы хотите, чтобы выполнить запрос:

Query<User> q = ofy().load().type(User.class) .filter("email", "[email protected]").order("createdDate");

вы нуждаетесь индекс:

<datastore-index kind="User" ancestor="false" source="manual"> <property name="email" direction="asc"/> <property name="createdDate" direction="asc"/> </datastore-index>

Ни один из индексов, которые вы перечислили бы удовлетворить запрос (даже несмотря на то, свойства, перечисленные во втором индексе, являются надмножеством тех, которые перечислены в необходимом индексе).

Вы должны запустить приложение с помощью App Engine development server и выполнить любые запросы, которые потребуются вашему приложению для запуска в вашем производственном сервисе. Это автоматически сгенерирует datastore-indexes-auto.xml, содержащий точно индексы, необходимые для обслуживания этих запросов.

+0

Большое спасибо. Исправлена ​​ошибка после того, как я разместил вопрос –

Смежные вопросы