Длина имени Твиттера в БД - PullRequest
       17

Длина имени Твиттера в БД

10 голосов
/ 26 августа 2009

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

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

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

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

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

Ответы [ 9 ]

22 голосов
/ 24 июня 2010

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

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

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

так что, возможно, даже с помощью varchar (16)

9 голосов
/ 07 апреля 2011

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

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

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

2 голосов
/ 26 августа 2009

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

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

2 голосов
/ 26 августа 2009

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

2 голосов
/ 26 августа 2009

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

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

1 голос
/ 11 февраля 2010

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

Например:

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

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

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

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

1 голос
/ 26 августа 2009

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

1 голос
/ 26 августа 2009

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

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

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

0 голосов
/ 26 августа 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...