数据库中的Twitter名称长度

时间:2009-08-26 15:37:11

标签: sql-server twitter schema

我正在为成员表添加一个字段,用于站点成员的Twitter名称。从我可以解决的最大推特名称长度为20,所以我应该将字段大小设置为varchar(20)(SQL Server)。

这是个好主意吗?

如果Twitter开始在用户名中允许多字节字符怎么办?我应该将此字段设为nvarchar吗?

如果Twitter决定增加用户名的大小怎么办?我应该改为50,然后警告用户输入的名称是否超过20?

我正在尝试进行防御性编码,这样我就可以减少修改此输入字段周围代码的可能性以及可能需要的数据库架构更改。

9 个答案:

答案 0 :(得分:22)

在寻找相同的信息时,我在twitter帮助部分的某个奇怪的地方发现了以下内容(为什么不在API文档中?谁知道?):

“您的用户名最多可包含15个字符。为什么没有更多?因为我们会在外发短信更新和即时消息上附加您的140个字符的用户名。如果您的姓名长度超过15个字符,您的消息也会过多很长一段时间发送短信。“

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

所以也许人们甚至可以使用varchar(16)

答案 1 :(得分:9)

虽然新帐户的用户名 15个字符 20个字符,但对于旧帐户,这个限制似乎是不确定。文档here声明:

  

Earlybirds:Twitter的早期用户可能拥有用户名或真实姓名,而不是我们目前允许的用户名。在您需要保存对帐户设置的更改之前,这是可以的。除非您的用户/真实姓名是合适的长度,否则不会保存任何更改;这意味着您必须更改您的真实姓名/用户名,以符合我们最现代化的规定。

因此,当你遇到边境案件时,你可能更适合拥有一个长场并节省一些时间。

答案 2 :(得分:2)

如今,空间通常不是问题所在,所以我会使用一种通用的方法:使用nvarchar(200)。

在设计数据库模式时,您必须提前两步,甚至比编程时更多。或者给自己一个好的架构更新策略,然后你也可以使用varchar(20)。

答案 3 :(得分:2)

我个人不担心。使用像200这样的东西(或像256这样的漂亮的圆形数字),你就不会遇到这个问题。然后限制在他们的API上,所以你可能最好做一些验证,无论如何它都是真正的用户名。该验证隐含地包括长度检查。

答案 4 :(得分:2)

Twitter允许输入140个字符作为传输的消息有效负载,并在SMS消息的开头包含“[username]:”。消息的上限为140个字符,并且消息系统基于SMS,我认为他们必须减少允许的消息大小以增加用户名。我认为这是一个非常安全的赌注,20个字符将是最大用户名长度。我会使用nvarchar以防万一有人使用16位字符,也许可以填一点。 nvarchar(24)应该有用;我不会高于nvarchar(32)

如果你要为他们的服务开发应用程序,你应该在Twitter的API Announcements mailing list上观看这些消息。

答案 5 :(得分:1)

[仅供参考]

  • Twitter适用于短信,限制有256个字符,所以名称必须小,以避免碰到消息。
  • nvarchar对于所有Twitter文本都是个好主意
  • 如果Twitterer的真实身份证是手机,那么最长的电话号码就是你的最大值--20应该很容易覆盖它!
  • 防守编程总是很好:)!

[/只有意见]

答案 6 :(得分:1)

只有这么多,你可以防御性地编码,我建议查看twitter API文档并遵循那里指定的任何内容。也就是说,从一个粗略的外观到无处似乎指定了用户名的长度,令人讨厌:/

答案 7 :(得分:1)

要记住的一件事是使用nvarchar的字段需要两倍的空间,因为它需要2个字节来存储每个潜在的unicode字符。因此,使用nvarchar时,twitter状态需要280的大小,对于可能的转发,需要更多PLUS,因为这些不在140 char限制中。事实上我今天才发现这一点!

例如:

  RT @chatrbyte:这是一些很棒的推文   我正在转发。

RT @chatrbyte:未包含在140个字符的限制中。

因此,假设Twitter用户名限制为20个字符,并且想要捕获ReTweet,则保存完整推文的字段需要是大小为280 + 40(用户名)+ 8的nvarchar(对于转发前的初始RT @)+4(对于:转发用户名后的+空格)= 330。

我会说去nvarchar(350)给自己一点空间。这就是我现在正在尝试的。如果我错了,我会在这里更新。

答案 8 :(得分:0)

我猜你在应用程序的Twitter名称字段上管理数据条目,而不仅仅是在数据库中。如果将字段打开为200个字符,则只需在一个位置更改代码,或者如果允许用户输入超过20个字符的Twitters名称,则根本不必担心更改。