小编spi*_*der的帖子

存储URL的最佳主键

这是存储网站地址和网页网址的最佳主键?

为了避免使用自动增量id(它与数据没有真正联系),我设计了使用URL的SHA1签名作为主键的模式.

这种方法在很多方面都很有用:例如,我不需要从数据库中读取last_id,因此我可以准备计算密钥的所有表更新,并在单个事务中进行真正的更新.没有约束违规.

无论如何,我读了两本书,告诉我我错了.在"高性能MySQL"中,据说随机密钥对DB优化器不利.此外,在Joe Celko的每本书中,他都说主键应该是数据的一部分.

问题是:URL的自然键是...... URL本身.事实是,如果一个站点很短(www.something.com),那么am URL没有强制限制(参见http://www.boutell.com/newfaq/misc/urllength.html).

考虑一下我必须存储(并使用)数百万个.

那么哪个是最好的钥匙?自动增量ID,网址,网址哈希?

mysql database-design primary-key

12
推荐指数
1
解决办法
5117
查看次数

为什么要有re.match()?

我知道这个话题已经讨论过多次 在这里StackOverflow上,但我在寻找一个更好的答案.

虽然我很欣赏的差异,我是不是真的能找到一个明确的解释,为什么re在Python模块同时提供match()search().search()如果我^在单线模式下,/A在多线模式下,我不能得到相同的行为吗?我错过了什么吗?

我试图理解查看_sre.c代码的实现,我理解search(sre_search())实际上是实现了在要搜索的字符串中移动指针,并sre_match()在其上应用,直到找到匹配.

所以我想使用re.match()可能会比使用相应的正则表达式(使用^ 或者/A)略快一些re.search().这是什么原因?

我也研究了python-dev ML档案,但无济于事.

>>> string="""first line
... second line"""
>>> print re.match('first', string, re.MULTILINE)
<_sre.SRE_Match object at 0x1072ae7e8>
>>> print re.match('second', string, re.MULTILINE)
None
>>> print re.search('\Afirst', string, re.MULTILINE)
<_sre.SRE_Match object at 0x1072ae7e8>
>>> print re.search('\Asecond', string, re.MULTILINE)
None
Run Code Online (Sandbox Code Playgroud)

python regex

6
推荐指数
1
解决办法
254
查看次数

标签 统计

database-design ×1

mysql ×1

primary-key ×1

python ×1

regex ×1