Длина имени Twitter в БД

Я добавляю поле в таблицу участников для имен твиттеров для членов на сайте. Из того, что я могу решить, максимальная длина имени твиттера равна 20, поэтому кажется очевидным, что я должен установить размер поля в varchar (20) (SQL Server).

Это хорошая идея?

Что делать, если Twitter начинает использовать многобайтовые символы в именах пользователей? Должен ли я сделать это поле nvarchar?

Что делать, если Twitter решает увеличить размер имени пользователя? Должен ли я сделать это 50 вместо этого, а затем предупредить пользователя, если они вводят имя длиннее 20?

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

Ответ 1

при поиске той же информации я нашел следующее в каком-то странном месте в разделе справки twitter (почему бы и нет в документах API? кто знает?):

"Ваше имя пользователя может содержать до 15 символов. Почему больше нет? Поскольку мы добавляем ваше имя пользователя к вашим 140 символам в исходящих SMS-сообщениях и сообщениях чата. Если ваше имя длиннее 15 символов, ваше сообщение будет слишком чтобы отправить одно текстовое сообщение.

http://help.twitter.com/entries/14609-how-to-change-your-username

поэтому, возможно, можно даже уйти с varchar (16)

Ответ 2

В то время как новые учетные записи имеют ограничение 15 символов в имени пользователя и 20 символов в имени, для старых учетных записей это ограничение, по-видимому, undefined. В документации здесь указано:

Ранние дети: Ранние пользователи Twitter могут иметь имя пользователя или настоящее имя дольше, чем имена пользователей, которые мы в настоящее время разрешаем. Это нормально, пока вам не нужно сохранять изменения в настройках своей учетной записи. Никакие изменения не будут сохранены, если ваше имя пользователя/настоящего не будет подходящей длиной; это означает, что вы должны изменить свое настоящее имя/имя пользователя, чтобы соответствовать нашим самым современным требованиям.

Итак, вам, вероятно, лучше иметь длинное поле и сэкономить время, когда вы попадаете в рамки.

Ответ 3

В настоящее время пространство обычно не вызывает беспокойства, поэтому я бы использовал общий подход: используйте nvarchar (200).

При разработке схем БД вы должны подумать о 2 шагах вперед, даже больше, чем при программировании. Или получите себе хорошую стратегию обновления схемы, тогда вам будет хорошо и с varchar (20).

Ответ 4

Лично я бы не волновался. Используйте что-то вроде 200 (или хороший круглый номер, например 256), и у вас не будет этой проблемы. Предел тогда находится в их API, поэтому вам может быть лучше сделать некоторую проверку, что это настоящее имя пользователя в любом случае. Эта проверка неявно включает проверку длины.

Ответ 5

Twitter позволяет ввести 140 символов в качестве полезной нагрузки сообщения для передачи и включает в себя "[имя пользователя]:" в начале SMS-сообщения. С верхним пределом в 140 символов для сообщения в сочетании с системой обмена сообщениями, основанной на SMS, я думаю, что они должны будут уменьшить допустимый размер сообщения, чтобы увеличить имя пользователя. Я думаю, что это довольно безопасная ставка, что 20 символов будут максимальной длиной имени пользователя. Я бы использовал nvarchar на случай, если кто-то использует 16-битные символы, и, возможно, немного помассируйте его. nvarchar(24) должен работать; Я бы не пошел выше nvarchar(32).

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

Ответ 6

[только мнение]

  • Twitter работает на SMS, а предел составляет 256 символов, поэтому имя должно быть маленьким, чтобы не попасть в сообщение.
  • nvarchar будет хорошей идеей для всего твиттера
  • Если реальный идентификатор Twitterer является сотовым телефоном, самым длинным номером телефона является ваш максимум 20, который должен легко покрыть его.
  • Оборонительное программирование всегда хорошее:)!

[/только мнение]

Ответ 7

Только так много вы можете защитить код, я бы предложил посмотреть документацию twitter API и следить за всем, что там указано. Тем не менее, из беглого взгляда нигде, похоже, не указывается длина имени пользователя, досадно:/

Ответ 8

Следует иметь в виду, что поле, использующее nvarchar, требует в два раза больше места, так как для сохранения каждого потенциального символа юникода требуется 2 байта. Таким образом, для статуса twitter потребуется 280, используя nvarchar, PLUS - еще больше для возможных ретвитов, поскольку они не включены в предел 140 char. Я обнаружил это только сегодня!

Например:

RT @chatrbyte: вот отличный твит что я исправляю.

RT @chatrbyte: не включен в ограничение 140 символов.

Итак, предполагая, что имя пользователя Twitter имеет ограничение на 20 символов и хочет также захватить ReTweet, поле для полного твита должно быть nvarchar размером 280 + 40 (для имени пользователя) + 8 ( для исходного RT @перед ретвитом) +4 (для: + пробела после имени пользователя Retweet) = 330.

Я бы сказал, иди за nvarchar (350), чтобы дать себе небольшую комнату. Это то, что я пытаюсь сейчас. Если я ошибаюсь, я обновлю здесь.

Ответ 9

Я предполагаю, что вы управляете записью данных в поле имени Twitter в своем приложении где-то, кроме только в базе данных. Если вы откроете поле до 200 символов, вам нужно будет только изменить код в одном месте или разрешить пользователям вводить имена Twitters с более чем 20 символами, вам не нужно беспокоиться об изменении вообще.