GUID(Global unique identifier)全局唯一标识符,它是由网卡上的标识数字(每个网卡都有唯一的标识号)以及 CPU 时钟的唯一数字生成的的一个 16 字节的二进制值。
GUID 的格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx”,其中每个 x 是 0-9 或 a-f 范围内的一个十六进制的数字。例如:6F9619FF-8B86-D011-B42D-00C04FC964FF 即为有效的 GUID 值。
世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。在 Windows 平台上,GUID 应用非常广泛:注册表、类及接口标识、数据库、甚至自动生成的机器名、目录名等。
在这次开发 ASP.NET 应用时,我大量使用了类型为 GUID 的 ID 列作为各实体表的关键字(键)。由于其唯一、易产生的特性,给应用程序处理带来诸多好处。
1、在 SQL Server 中使用 GUID
如果在 SQL Server 的表定义中将列类型指定为 uniqueidentifier,则列的值就为 GUID 类型。
SQL Server 中的 NewID() 函数可以产生 GUID 唯一值,使用此函数的几种方式如下:
1) 作为列默认值
将 uniqueidentifier 的列的默认值设为 NewID(),这样当新行插入表中时,会自动生成此列 GUID 值。
2)使用 T-SQL
在 T-SQL 中使用 NewID()函数,如“Insert INTO Table(ID,... ) VALUES(NewID(),...)”来生成此列的 GUID 值。
3)提前获取 GUID 值
由于特殊功能需要,需要预先获知新行的 ID 值,也可以使用如下 C# 代码提前获得 GUID 的值,再存储到数据库中:
SqlCommand cmd = New SqlCommand();
cmd.CommandText = "Select NewID()";
string rowID = (string) cmd.ExecuteScalar();
cmd.CommandText = "Insert INTO Table(ID,...) VALUES(@ID,...)
cmd.Parameters.Add("@ID",SqlDbType.UniqueIdentifier).Value = new Guid(rowID);
cmd.ExecuteNoQuery();
uniqueidentifier 值不能进行算术运算,但可以进行(意义不大的)比较操作和 NULL 检查;它不能象 IDENTITY 列一样,可以获知每行的增加时间的先后顺序,只能通过增加其它时间或时间戳列来完成此功能。
2、GUID 的优缺点
1) 优点
同 IDENTITY 列相比,uniqueidentifier 列可以通过 NewID() 函数提前得知新增加的行 ID,为应用程序的后续处理提供了很大方便。
便于数据库移植,其它数据库中并不一定具有 IDENTITY 列,而 Guid 列可以作为字符型列转换到其它数据库中,同时将应用程序中产生的 GUID 值存入数据库,它不会对原有数据带来影响。
便于数据库初始化,如果应用程序要加载一些初始数据, IDENTITY 列的处理方式就比较麻烦,而 uniqueidentifier 列则无需任何处理,直接用 T-SQL 加载即可。
便于对某些对象或常量进行永久标识,如类的 ClassID,对象的实例标识,UDDI 中的联系人、服务接口、tModel标识定义等。
2) 缺点
GUID 值较长,不容易记忆和输入,而且这个值是随机、无顺序的,所以使用时要注意场合,最好不要尝试用它来作为你的电子邮件地址 J
GUID 的值有 16 个字节,与其它那些诸如 4 字节的整数相比要相对大一些。这意味着如果在数据库中使用 uniqueidentifier 键,可能会带来两方面的消极影响:存储空间增大;索引时间较慢。
综合来说, GUID 的优点带来的便利远超出其缺点带来的影响,随着诸如 WebService 等系统互联与整合技术的不断发展,其唯一标识的特性使得其应用越来越广,在您的应用程序中也应考虑使用它了。
唯一标识符DCID的设计和应用
一、DCID的产生背景
进入二十一世纪以来,我国电视媒体从制播一体,节目基本上自产自销,开始逐步实施制播分离,大量电视节目将在市场上交换流转。数字技术的发展应用,IPTV、3G等新兴技术又极大地拓展了原有的节目传输、复制路径,节目从制作、分发到消费,参与方越来越多,控制也越来越复杂,全范围的数字版权管理和保护已经成为广播电视行业乃至整个文化创意产业面临的亟待解决的课题。
为了推动我国数字版权管理的发展,保护数字媒体产品链中所有参与者的权利,建立一个良好的广播影视节目制作、发布和消费环境,由国家广播电影电视总局领导,信息产业部科技司大力支持,中央电视台和清华大学共同发起,多家单位积极参与成立了中国广播影视数字版权管理论坛(ChinaDRM)。ChinaDRM旨在研究探讨中国数字媒体版权管理的应用需求、解决方案、技术标准、发展方向、发展战略及其与国家数字媒体发展密切相关的问题,以制定中国广播影视数字版权管理的一系列国家标准。
数字版权管理的一个基本要求是能够随时随地识别数字媒体内容的实体及其权利,制定一个具备全局一致性,唯一性和可管理性的内容标识编码标准,使之能够满足准确地关联和传递相关的权利信息、交易信息和内容描述信息,就成为ChinaDRM的一项基础性任务。
ChinaDRM 的内容制作组(CP组)接受了论坛委托,调研了国际上现行的诸如ISAN、UMID、DOI、CRID、CID等多种内容标识方案,在适用范围、编码结构、扩展集、管理体系、互操作性等多个方面作了深入的讨论,最后发现这些规范不能满足我国数字内容的实际管理需求,需要我们编制一套符合自身特点的编码体系。
本着实用、简明、通用、版本可扩展的原则,CP组在参考众多国际标准基础上,经过深入研究和讨论,最终形成了中国广播影视数字版权管理数字内容标识(China DRM Digital Content Identifier,下文中简称DCID)标准草案。
DCID作为数字节目内容在制作、分发和消费整个过程的唯一标识,可以实现各环节的检测和识别,对于有效保护数字内容,加强数字内容管理具有重要意义,它为数字内容的权利信息传递和追踪创造了条件,有利于保护数字内容产品链中所有参与者的权利,建立一个良好的数字内容制作、发布和消费环境。
二、DCID的形成过程
考虑到种类繁多的数字内容都在迅猛发展,都有对版权保护的强烈需求,若想毕其功于一役,建立覆盖所有数字内容类型的整个标准化体系,势必要投入巨大的资源而且旷日持久,因此ChinaDRM DCID编制小组从一开始便明确了DICD的适用范围是以广播影视为主,覆盖其它形式的数字内容。
为了编制出一个既能够满足中国数字版权管理要求,又能够最大限度与国际相关标准互操作的高质量标准,编制小组在2006年8月至9月,广泛调研和讨论了大量国内外相关标准,包括UMID、DOI、CID、CRID、ISRC,ISBN,ISAN,ISSN等等,形成基本意见是:标准与目标的适用性和管理体系密切相关,并不能简单地参照现有标准;我国数字内容往往分属不同行业管理,条块分割要求DRM体系应该更适合国情,因此在参考众多国际标准基础上,形成自己的编码结构和管理体系更为可取。随后在2006年10月向ChinaDRM大会提交国际ID体系调研报告和DCID基本集建议。
11月和12月,通过每周一次的小组会,反复讨论和完善基本集的结构定义以及扩展集的去留,最初设计的编码结构由基本集和扩展集两部分组成,基本集用以标识内容主体,扩展集用以标识内容版权、交易信息和衍生内容。但扩展集造成编码结构冗长和解析复杂,和版权元数据存在大量交集,衍生内容有独立交易需求的可以申请独立的DCID。最终结论是去除扩展集,仅保留基本集。
在2007年1月,各参编单位取得共识,形成了建议草案文本,在2007年2月向ChinaDRM大会上向全体会员作了介绍,经过大会的广泛讨论,形成了标准建议稿,在2007年6月举行的ChinaDRM大会上宣读,并根据大会意见做了进一步修改。
三、DCID的结构和特点
最简单的对象标识编码是流水号或者不重复的随机数,但是这样的编码无助于内容识别和行业管理。如果对携带管理信息的要求过高,DCID的设计可能变得相当复杂,给数字内容流转过程中DCID的传递带来困难,因此DCID的编码结构需要在尽可能多地携带管理信息和结构简明两者间取得平衡,在结构定义、元素取舍、语义规则等方面都要考虑方便用户使用。
既然DCID需要携带管理信息,那就不得不考虑到目前数字内容的种类繁多,管理机构各异,而且《中华人民共和国国民经济和社会发展第十一个五年规划纲要》有“鼓励教育、文化、出版、广播影视等领域的数字内容产业发展,丰富中文数字内容资源,发展动漫产业”的政策导向,因此,我们设计的DCID不仅适用于影视音像内容,也可以用于公开发行的其它形式的数字内容,如动漫、游戏等,可以被各类数字内容的相关管理机构所采用。
目前的DCID编码结构分为6段,包括:版本号、提供者类别、注册代理机构、内容提供者、注册年份和内容编码。可以由十进制数字字符和二进制比特两种方式来表示,以满足不同的使用场景需求。
1) 版本号。由于数字内容产业正处于高速发展的过程中,因此数字内容标识的结构定义需要遵循可扩展性原则,在当前版本不再适合实际情况时发布新的版本。因此在编码结构中设置版本号字段,在当前版本不再适合实际情况时,可以定义新的编码结构,通过识别版本号字段实现与原有结构的互操作。实际上,在讨论DCID结构的过程中,标准起草小组最初设计的编码结构是由基本集和扩展集两部分组成的,基本集用以标识内容主体,扩展集用以标识内容版权、交易信息和衍生内容。但扩展集造成编码结构冗长和解析复杂,和版权元数据存在大量交集,衍生内容有独立交易需求的可以申请独立的DCID。标准起草小组目前的结论是去除扩展集,仅保留基本集,但是不排除在未来的使用中,会觉得基本集不敷使用,有了版本号,我们就可以推出新的纳入扩展内容的DCID版本,同时兼容已有的DCID数据库。
2) 提供者类别。考虑到随着数字技术和文化产业的发展,未来个人提供的内容将越来越多,其特点是个体数量多,但每个个体提供的内容数量很少,如果与机构提供者(个体数量少,内容数量多)同样处理,势必带来编码效率的低下,因此DCID专设一个字段来识别机构还是个人,用“0”表示法人,“1” 表示自然人,机构和个人使用不同的编码结构定义
3) 注册代理机构。为了避免集中式注册可能产生的管理瓶颈,也为了能够覆盖更多的数字内容类型,DCID设置了注册代理机构(RA)的识别字段。RA可以服务于地域覆盖,比如标识上海注册中心、西北注册中心等,RA也可以服务于不同数字内容类型的条块管理,比如标识音乐版权中心、动漫版权中心等,以充分的弹性适应国情。在最初的设计中,编码结构包含国家/地区标识地域,数字内容类型标识(比如M表示音乐,V表示视频,D表示广告等),但考虑到DCID主要是国内使用,国家/地区码使用概率偏少造成浪费,不如综合成注册代理机构码,条块管理都能够满足。
4) 内容提供者。用于标识内容提供者的一个流水号,通过它可以从提供者数据库中检索出提供者的详细信息,以明确法律责任。
5) 注册年份。用于识别数字内容的登记注册时间,十进制表示方式采用“ISO 8601”的日期格式表示,长度为4个十进制数字字符,其值是用自然注册年份数值减去2000,范围是0-255。显示和打印时,用实际存储的值加上2000所得的对应数值。如值为“1”时显示的是“2000”加“1”结果“2001”。注册年份的二进制表达方式长度为8个比特,其值是用注册年份数值减去2000,即取值范围0-255,用于表示2000年至2255年。
6) 内容编码。用于识别具体的数字内容实体。DCID有两种表示方式,分别是ASCII字符方式和二进制比特方式。ASCII字符方式用于显示和打印,便于人工释读。当DCID以字符方式显示或打印时,在其前面冠以大写字母DCID。版本号、提供者类别、注册代理机构、内容提供者以十进制数字显示,注册年份按“ISO 8601”的日期格式表示,内容编码以数字表示。各部分之间以连字符“ – ”分隔,比如,DCID 1-0-10-4503-2006-321上述DCID的64比特紧缩二进制方式形如:001 0 0000 0001 0000 0001 0001 1001 0111 0000 0110 0000 0000 0000 0001 0100 000二进制方式更方便于计算机处理以及嵌入数字内容的场合使用,比如用于数字水印。DCID编码结构各段的取值范围如下表所示:
编码段 | 十进制表示取值范围 | 二进制表示取值范围 | ||
内容提供者 法人 | 内容提供者 自然人 | 内容提供者 法人 | 内容提供者 自然人 | |
版本号 | 0-7 | 3比特 | ||
提供者类别 | 0 | 1 | 0 | 1 |
注册代理机构 | 0-255 | 8比特 | ||
内容提供者 | 0-1,048,575; | 0-4,294,967,295 | 20比特 | 32比特 |
注册年份 | 0-255 | 8比特 | ||
内容编码 | 0-16,777,215 | 0-4,095 | 24比特 | 12比特 |
表1 DCID编码结构
综上所述,我们可以把DCID编码系统的特点归纳如下:
1) DCID是用于标识China DRM保护范围内的数字对象的唯一标识符,是内容制作、分发和消费域识别保护对象的连接纽带。
2) DCID适用于标识影视、音像、动画,以及其它形式的数字内容。
3) DCID适用于在制作、分发和消费环节检测和识别数字内容。
4) DCID适用于对数字内容的权利传递信息进行追踪。
5) DCID拥有版本指示,便于伸缩定义和未来更新;
6) DCID充分考虑了中国目前数字内容的条块管理现状,可以通过授权机构层次化管理和追踪;
7) DCID充分考虑了个人在未来数字内容创作和权利要求;
8) DCID既可以采用便于直观识读的十进制数字字符表示,也可以采用便于计算机处理和数字水印嵌入的64比特紧缩二进制编码。
9) DCID具有唯一性。DCID不允许重复分配,一个DCID只能分配给一个保护对象,一个保护对象只能有一个DCID。
10) DCID具有不变性,是保护对象的终身标识符;DCID不能重复使用,一经分配,永久有效。这使得DCID的复制、分发、交易和追踪能够建立在可靠的基础上。
11) DCID编码空间充裕,便于长期稳定使用。
四、DCID的应用
1. DCID的标识对象
DCID的标识物是内容和权利主张的结合体。权利主张的独立性取决于当前的法律法规和权利人的主观认识。不同内容应该申请不同的DCID。相同内容不同的权利主张,应该申请不同的DCID。例如,高、标清版是因不同的技术手段产生了不同的权利主张,中、英文版是因语种的不同产生了不同的权利主张,都应该申请不同的DCID。相同内容同一权利主张,不需申请DCID。例如,码率、传输介质、压缩格式的变化不影响同一内容的权利主张,不需要申请不同的DCID。
2. 保护对象的内容改动
如果一个保护对象的内容发生了改动,应申请一个单独的DCID。如果保护对象的仅是名称、分类等注册信息的改变,而不涉及内容的变化,不需要申请新的DCID,但必须主动申请更新DCID的注册信息。
3. 保护对象的版本与格式
保护对象的不同版本,必须申请不同的DCID号。例如:相同的数字媒体内容以海外版、大陆版,导演加长版等不同的版本形式发布,应申请不同的DCID。保护对象的格式变化,如果有不同的权利主张,应申请不同的DCID,例如:相同的数字媒体内容以高清版、标清版的形式发布;否则,不需申请不同的DCID。
4. 保护对象的多分集
由超过一集组成的保护对象,如果仅以整套内容进行交易,必须为整套内容申请一个DCID;如果其中每一集可单独销售,每一集必须有申请单独的DCID。如果不能确定交易方式,建议为每一集申请单独的DCID。
5. 共享版权的保护对象
由两个或更多内容提供者共同制作或联合发布的保护对象,仅可使用一个DCID,此DCID通过协商的方式由其中一个内容提供者申请。其共享版权的事实在元数据中体现。
6. 购买转售的保护对象
如果保护对象在购买前已经申请过DCID标识,就沿用之。如果该保护对象尚未申请DCID,此时必须由购买转售的内容提供者申请DCID。
五、DCID的管理
在DCID设计的过程中,还有一项重要的考虑是DCID的管理模式。最初的设计中,DCID的各段可以独立使用和管理,包括留一部分用户自行管理,使ID适用于节目的全生命周期,但这样一来,在不同的节目提供者之间ID的定义就会不完全一致,从而造成解析的混乱。目前的DCID要求有统一的管理。
图1 DCID管理的组织结构图
DCID可采用两级管理模式:DCID的管理中心和注册代理机构(RA)。DCID的管理中心是DCID的最高管理机构,负责建立各地域或行业的RA。DCID通过RA来分配和管理DCID标识符。RA是由DCID的管理中心指定的二级管理机构。RA按DCID的管理中心制定的政策执行DCID标识符的发放和管理。CP是数字版权的内容提供者,提供并更新受保护对象的相关元数据,申明受保护对象的合法性,并承担相应的法律责任。