013231
V2EX  ›  数据库

豆瓣似乎是用字符串類型儲存電影年份的, 為什麼要這麼做?

By 013231 at 2013 年 2 月 19 日 · 3541 次点击
豆瓣電影中, 絕大部分電影的年份是用數字表示的, 例如
http://movie.douban.com/subject/5308265/
電影名稱後的括號中寫著數字年份"2013". 但有極少數例外, 比如這個:
http://movie.douban.com/subject/20452327/
括號中寫著"2012年". 既然能出現"年"這個字, 想必年份數據是用某種字符串類型保存的囉? 為什麼要用字符串類型呢?
15 条回复  •  1970-01-01 08:00:00 +08:00
013231
   1
013231  
OP
   2013 年 2 月 19 日
@livid DB節點是否應放入"技術"分類下?
paloalto
   2
paloalto  
   2013 年 2 月 19 日
猜测:
1.历史遗留问题?
2.为了和第三方的数据兼容?如IMDb,因为我记得豆瓣很多电影数据是从IMDb导过来的。
Livid
   3
Livid  
MOD
PRO
   2013 年 2 月 19 日   ❤️ 1
我这里看到括号里只有 2012…
Livid
   4
Livid  
MOD
PRO
   2013 年 2 月 19 日
@013231 已归入。
paloalto
   5
paloalto  
   2013 年 2 月 19 日
@Livid 因为刚才我编辑了一下,把“年”去掉了。
myang
   6
myang  
   2013 年 2 月 19 日
我这里点开lz的两个链接都没有“年”字啊
paloalto
   7
paloalto  
   2013 年 2 月 19 日
Livid
   8
Livid  
MOD
PRO
   2013 年 2 月 19 日
这个 field 中如果变化不大的话,用 string 和用 int 的 index 效率差距不会太大。
manhere
   9
manhere  
   2013 年 2 月 19 日 via Android
年份为什么非得是数字?
run2
   10
run2  
   2013 年 2 月 19 日 via iPad
@manhere 数字好排序 好校验啊
xupeng
   11
xupeng  
   2013 年 2 月 19 日
因为条目的扩展属性不是存在强类型的关系数据库里的
chenz
   12
chenz  
   2013 年 2 月 20 日   ❤️ 1
@Livid

如果说到index(我不知道你所说的index是指单纯的建立索引,还是包括查询。我假设是两者),虽然应该具体到某个数据库软件我们才能谈论效率,但是一般情况下,两者效率当然会相差很大。

int是fixed-length,索引和查询的位移很快。年份这里目测是variable-length,索引和查询都会慢很多。即使假设"变化不大",也只是可以忽略索引速度而已,查询依然是有区别的。

如果你所说的index只是单纯指建立索引,而又假设"变化不大",那讨论这个没什么意义了。就好像在说一个网站如果请求量不大的话,ec2的micro和large差别不会太大

当然这里的年份应该是不作为一个index的
kenlen
   13
kenlen  
   2013 年 2 月 20 日
很少人会用年份来检索电影吧
rekey
   14
rekey  
   2013 年 2 月 21 日
是因为需要用户编辑吧...有可能来一个1980年左右的呢..
upupxjg
   15
upupxjg  
   2013 年 2 月 22 日
谁知到在后台有没有做什么转换,一个正则啥的就能转成想要的格式了
© 2026 V2EX · 53ms · 3.9.8.5