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

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

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

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

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

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

9 ответов


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

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

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

Так, возможно, можно было бы даже уйти с varchar (16)


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

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

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


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

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


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


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

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


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

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

[/взгляд только]


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


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

например:

RT @chatrbyte: вот отличный твит что я ретвитинг.

на RT @chatrbyte: не входит в 140 символов.

Так, если предположить, что Твиттер-логин имеет 20 символов, и желая также захватить Ретвит, поля для проведения полной твит должен быть тип nvarchar размер 280 + 40 (для пользователя) + 8 (для начального РТ @ перед ретвит) +4 (За :+после ретвита логин) = 330.

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


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