--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
个人认为这是一个非常naive的问题,但无奈,说服不了partner, 特此请教一下各位,给点意见。
我想记录用户成功做完某个操作的时间,理论上每天一条只有一条记录, 然后有一个任务就是每天需要统计一下每个用户当月,当年的登录情况(当月登录多少天,当年登录多少天,总共登录多少天等)
---------------------
我想的设计是建立一个日志表 log(user,date), 用户每成功一次,插入一条记录(用户每天只有一次成功机会,如果有两次就是系统错误,要report出来的)。 做统计的时候,无非就是根据user来做一个select 查询。
---------------------
partner的设计是,在user_profile这样一个表里,增加一个text 字段,如log_info. 这个log_info 是date拼接起来的,如date1,date2,date3. 做法是没天先根据user,读取出log_info, log_info =log_info & date.
理论上来说,每天一条记录,log_info的长度是有限的,不会无限制膨胀。
他这么做的理由有二:
1. 这样记录数会比我的少很多,比如我可能需要10000条记录,而他的设计中只有100条记录。 根据查询的速度取决于记录数,理论上他的查询速度会高于我的, 特别是记录数大的情况下;
2. 从极限的角度来看,我的表可能会崩掉,因为记录数太多
--------------------------
我坚持我的理由:
1. 可扩展性要好,如果我想加点啥,我可以加点;
2. 我写入的速度会远远快于它;当数据库繁忙的时候,我觉得这会成为一个瓶颈。
3, 我做统计的速度会方便很多
4, 我觉得有个text类型文本在数据库里,非常碍眼。 我总是不放心这类型的东西。
最后,请求高手的方案,并希望给出一点点原因。
--
吴焱红( Samuel )
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
同意你的方案。
他的理由:
记录少很多我看未必,而且并不是主要问题,还有数据空间的问题。这个要具体分析
同一个表的话,如果放在一个字段中,那么你要考虑最大的存储空间,比如log_info&date1&date2,允许几次date这是可以商量的,如果更多次登录如何处理,存不下了怎么办,而使用一条条的记录方式无此问题。再从你的说明,应该一天就一次,基本上是与用户的数量相关的,和他的数量差不多。从存储上,使用记录有可能要节省,这个要看log_info是什么字段类型,是不是可变长度。如果是定长,那有可能有浪费。处理上基本上登录就要修改,如果是第二天,那么昨天的数据怎么处理?覆盖还是添加?所以处理复杂性上增加。而使用记录时,如果不想处理昨天处理,可以做一个历史数据的加工工作,通过定时方式来执行,不影响正常的业务处理。
一个date字段再加一个用户id占不了多少空间。
--
I like python!
UliPad <<The Python Editor>>: http://code.google.com/p/ulipad/
UliWeb <<simple web framework>>: http://uliwebproject.appspot.com
My Blog: http://hi.baidu.com/limodou
log文件的话要考虑是否存在集群的情况,如果存在,还是建议使用数据库。并且后续加工方便,不会慢多少。
log文件的话要考虑是否存在集群的情况,如果存在,还是建议使用数据库。并且后续加工方便,不会慢多少。
键盘坏了,几个键不好使,老打不出字,我更正一下从1来看,在海量小字段数据下确实是有这个问题,但发生这种问题的场景不怎么可能会出现在你们的应用当中。你partner的做法适应用于这样一个应用场景:
同时采用是什么意思啊。
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:pyth...@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp