Какой лучший тип столбца для идентификатора пользователя Google+?
Google+ имеет очень длинные идентификаторы пользователей
+104560124403688998123
(21 символ), который невозможно ввести в поле BIGINT (не без знака)
Какой тип столбца вы бы использовали для таких идентификаторов?
Я не думаю, что варчар - хорошая идея
Ответ 1
если длина идентификатора google является предсказуемой, используйте статический char(length), добавьте на него индекс и создайте первичный ключ целого числа (внутренний). Внутри вашего приложения вы сопоставляете данные с целым первичным ключом. Поэтому, если кто-то ищет по id google, вы просматриваете целочисленный первичный ключ для этого идентификатора google и выполняете остальные ваши запросы с помощью цельного первичного ключа.
Итак, схема выглядит так:
Таблица сопоставлений:
id (integer) | google_id (char(length))
Итак, если вы создаете другую таблицу, например комментарии и т.д., используйте первичный ключ id, если вы хотите найти все комментарии для определенного googleid, сначала получите внутренний идентификатор, а затем присоединитесь к комментариям. Таким образом, у вас есть только один критерий запроса для статического, проиндексированного поля char с предсказуемой длиной, все остальные соединения и запросы будут использовать целочисленный ключ.
Ответ 2
Я бы использовал то же, что и с Facebook: varchar.
Ответ 3
Я не могу найти официальную рекомендацию от google, но я использую десятичный 21,0, который работает правильно.
Ответ 4
в python при appengine Я сохраняю данные с помощью ndb.StringProperty и проверяю с помощью regex\d {15}, что дает небольшой запас. было бы действительно здорово узнать, что это REAL регулярное выражение для проверки этого поля