分享超级表格的id号的生成规则
表记录的关键字段(一般取名为id)的值的生成方式,通常有下列几种:
1、数据库自增,即从0开始,每次加1。在记录插入到数据库表时生成;这是mysql数据库的用户最多人的选择。不足之处是在新记录插入数据库前,并不知道它的值;第二个不足是无法在多个表记录间保持id唯一(某些系统会要求这点,这个理解起来有一定困难。)2、GUID字符串:全局唯一标识符(GUID,Globally Unique Identifier)。GUID是一种由算法生成的二进制长度为128位的数字标识符。GUID主要用于在拥有多个节点、多台计算机的网络或系统中。在理想情况下,任何计算机和计算机集群都不会生成两个相同的GUID。GUID 的总数达到了2^128(3.4×10^38)个,所以随机生成两个相同GUID的可能性非常小,但并不为0。GUID一词有时也专指微软对UUID标准的实现。
不足是字段类型必须是字符串,排序和性能都不如数字类型。
3、时间戳:精确到毫秒,意味着当同一个毫秒有多条记录生成时,id就可能重复,导致新记录无法插入。
4、自定义函数
超级表格某些关键表的id的生成,有下列要求:
1、高性能,最好是数字类型,而不是字符串;
2、提前生成(而不是在插入数据库后才生成),即在用户输入页面时就生成;
3、不但要求本表唯一,而且不能与其它表记录的id重复。因为有些公共的表会把来自不同表的记录的id记录在一起。
4、足够低的重复概率,能满足超级表的数量的要求。
为满足这些要求,我们设计了一个简单而实用的timeid的生成方式。
首先用时间函数生成一个包括年、月、日、时、分、秒、毫秒的数字类型的字符串。例如2013年12月3日14时50分12秒345毫秒,对应的字符串是131203145012345。
我们只取年分的最后两位,这样可以节省两位数,而且能满足100年不重复(足够了)。
如果只是这个算法生成的id,万一在同一毫秒生成了多个id,那就重复了。为了继续减少重复概率,我们又加上了从10000到99999之间的一个随机数。
这意味着,在同一时间(精确到毫秒),有10万分之一的重复概率。足够低了,足以满足超级表格的数量级别要求。
timeid除了重复率足够低,因为完全是数字组成,可以存储为数字类型,性能高;而且是按时间先后顺序生成,id基本也是递增的(之所以说是“基本”,因为同一毫秒内的id可能不是递增)。
不足是数字位数达20位,显得稍多,需用double类型存储。
下面就是生成timeid的函数js代码:
//获得时间随机数,从年份的最后2位,到毫秒,最后加5 位随机数,共20位。例如13112918400745636211
function getTimeId()
{
var date1=new Date();
var r="";
r=date1.getFullYear().toString().substring(2);
var d=date1.getMonth()+1;
if (d<10)r+="0"+d;else r+=d;
d=date1.getDate();
if (d<10)r+="0"+d;else r+=d;
d=date1.getHours();
if (d<10)r+="0"+d;else r+=d;
d=date1.getMinutes();
if (d<10)r+="0"+d;else r+=""+d;
d=date1.getSeconds();
if (d<10)r+="0"+d;else r+=""+d;
var d=date1.getMilliseconds();
if (d<10)r+="0"+d;
else
if (d<100)r+="00"+d;
else r+=d;
var x="0123456789";
var tmp="";
for(var i=0;i<5;i++)
tmp+=x.charAt(Math.ceil(Math.random()*100000000)%x.length);
r+=tmp;
return r;
}
项目管理超级表格
>更多相关文章
- 06-16卡巴斯基郑启良:支持信创发展是卡巴斯基的重要使命
- 06-16访问管理是确保现代工作场所安全的的五个关键原因
- 06-16零信任安全的演变:彻底改变网络安全策略
- 06-16GitHub上值得关注的20个网络安全项目
- 06-16英国曼彻斯特大学遭遇网络攻击,机密数据或遭窃!
- 06-16调查表明广告软件推送恶意软件感染了六万多个安卓应用程序
- 06-16微软向美国政府提供GPT的大模型,安全性如何保证?
- 06-16如何保护OT环境免受安全威胁?
首页推荐
佛山市东联科技有限公司一直秉承“一切以用户价值为依归
- 01-11全球最受赞誉公司揭晓:苹果连续九年第一
- 12-09罗伯特·莫里斯:让黑客真正变黑
- 12-09谁闯入了中国网络?揭秘美国绝密黑客小组TA
- 12-09警示:iOS6 惊现“闪退”BUG
- 12-05亚马逊推出新一代基础模型 任意模态生成大模
- 12-05OpenAI拓展欧洲业务 将在苏黎世设立办公室
- 12-05微软质疑美国联邦贸易委员会泄露信息 督促其
- 12-05联交所取消宝宝树上市地位 宝宝树:不会对公
- 12-04企业微信致歉:文档打开异常已完成修复
相关文章
24小时热门资讯
24小时回复排行
热门推荐
最新资讯
操作系统
黑客防御