Схема тегов для AppEngine - PullRequest
       24

Схема тегов для AppEngine

1 голос
/ 31 декабря 2010

Эй, Я использую AppEngine для приложения, которое я пишу. Поэтому мне нужно назначить теги каждому объекту. Я хотел знать, каков наилучший способ сделать это. Должен ли я создать разделенную пробелами строку тегов и затем запросить что-то вроде% search_tag% (я не уверен, что вы можете сделать это в JDOQL)?

Какие еще есть варианты? Должен ли я создать еще один класс, который будет сопоставлять каждый объект с тегом?

Что было бы лучшим с точки зрения масштабируемости, производительности и простоты использования?

Спасибо

1 Ответ

2 голосов
/ 31 декабря 2010

Во-первых, запросы типа «% search_tag%» «LIKE» не работают в хранилище данных App Engine. Лучшее, что вы можете сделать, - это поиск по префиксу.

Трудно ответить на такие общие вопросы, как этот. Наилучшее решение будет зависеть от нескольких факторов, сколько тегов вы ожидаете на одну сущность? Есть ли ограничение на количество тегов? Как вы будете использовать теги? Для поиска? Только для отображения? Ответы на все эти вопросы влияют на то, как вы должны разрабатывать свои модели.

Одним из общих решений для тегирования является использование многозначного свойства, такого как список тегов. http://code.google.com/appengine/docs/java/datastore/dataclasses.html#Collections

Имейте в виду, что если у вас будет много тегов на ваших сущностях, это добавит накладные расходы во время записи, поскольку записи индексов также требуют времени. Также вам следует избегать многократного использования многозначных свойств (или множественных многозначных свойств) в запросах с неравенствами или порядками. Это может привести к «взрыву индексов», поскольку одна строка индекса записывается для каждой комбинации индексированных полей.

...