Я использую Google App Engine и, следовательно, Big Table.
У меня есть person
сущность, которая выглядит следующим образом:
{
// This property would be encoded into JSON and saved un-indexed as db.Text()
phone_numbers:
{
'hHklams8akjJkaJSL': // <-- Should I key this object?
{
number:'555-555-5555',
type:'mobile',
},
etc...
},
// This property is an array of strings.
// It is searchable so that a query could be run to find all
// people with a particular phone number:
// "SELECT * FROM person WHERE phone_number_search_property =
// '5555555555'"
phone_number_search_property:['5555555555','other phone numbers...'],
first_name:'...',
etc...
}
Свойство phone_number
сохраняется как капля неиндексированного текста в формате JSON (db.Text). Если в этой ситуации я хочу указать конкретный номер телефона, я декодирую json, а затем получаю номер телефона с нужным ключом.
phone_number_search_property
используется для поиска. Включает поиск по номеру телефона: "SELECT * FROM person WHERE phone_number_search_property = '5555555555'"
Каков хороший способ ссылки на номер телефона внутри организации в этой ситуации? Здесь у меня есть каждое значение, введенное с помощью UUID. Это «нормальный» и принятый способ ведения дел? Если нет, то что?
Спасибо!