Я бы сделал это, добавив ListProperty для ролей в модель, представляющую пользователей. Список содержит любые роли, к которым принадлежит данный пользователь. Таким образом, если вы хотите узнать, принадлежит ли данный пользователь к данной роли (я полагаю, самая распространенная операция), это быстрый тест членства.
Вы можете поместить имена ролей непосредственно в списки в виде строк или добавить слой косвенности к другому объекту, указав сведения о роли, чтобы впоследствии было легко изменить детали. Но это требует времени выполнения дополнительного RPC для получения сведений о роли.
Недостатком этого метода является то, что вы хотите удалить всех пользователей из данной роли или выполнить любой другой вид глобальной операции. Я полагаю, вы могли бы пометить роль как «удаленную», но тогда у вас все еще будут данные, загромождающие все ваши пользовательские модели, пока вы не очистите их вручную. Поэтому мне любопытно услышать, что другие предлагают.