本文原创作品,如需转载请注明来源,作者:姜涛, towerjt@gmail.com
数据设计
Directory是一个数据源(Data Source),保存了很多的数据元素(Data elements),数据元素对应了数据的值。
虽然我们生活在信息时代,但是我们会经常碰到如下的问题:
1、信息过量(导致我们很难查找)
2、信息不足(我们需要的信息往往不正确)
3、信息质量低、格式不对(或者是同样的数据以不同的格式存储,如电话号码等)、或者干脆就是错误的信息(错误、冗余的信息)
4、过时的信息
1、决定哪些数据存储在directory service,哪些不存储的指导方针
2、访问数据的手册(权限)的指导方针
3、修改数据的手册(权限)的指导方针
4、法律考量
5、将数据存储在多个地方的指导方针
6、异常处理指导方针
建立一个列表,标明你需要哪些数据,这些数据的数据源在哪里。
所有的数据都具备如下特征:
格式
数据大小
独立数据的个数(the number of distinct data value)
数据的所有者和限制
数据的消费者
数据被修改的频率(判读数据是动态数据或者是静态数据)
应用范围
与其他数据元素的关系
下面是一个经过分析后的例子
Element (Example)
Format
Size/ Number of Values
Owner
Consumers
Related to
Full name (John Jones ) |
Text |
<128 chars. /1 or a few values |
Personnel dept. |
Users; BCES |
User's entry |
User ID (jjones ) |
Text |
<8 chars. /1 value |
IS dept. |
BCES |
User's entry |
E-mail address (jjones@bigu.edu ) |
Text (Internet mail address) |
Many chars. /1 or a few values |
IS dept. |
Users; BCES |
User's entry |
Delivery address (jjones@math.bigu.edu ) |
Text (Internet mail address) |
Many chars. /1 value |
User and system admins. |
BCES |
User's entry |
1、其他directory services
2、网络操作系统
3、数据库
4、用电子形式保存的的简单文件和表格
5、应用程序
6、管理员
7、最终用户
你可能需要从其他数据源获取数据,对于每一个你打算存储在directory service中的数据,你应该考虑如下的问题:
1、从哪些数据源获取初始值
2、从如果数据源的数据被更新后,你该怎么办
3、如果directory service中的数据被更新后,你该怎么办
你已经收集的数据元素的信息将会对上面的问题有所帮助,但是你不会一开始就得到所有的答案,但是很重要的一点是你应该提前思考这些问题。你不会希望你的directory service保存一些过时的信息,你也不会希望被人误解是要去取代其他重要的数据源,比方说是人力资源部门的数据库。
1、复制:如果你使用的directory service都是来自同一个厂商的产品,或者是用同一种协议(LDUP IETF标准)来复制的话,你可以使用内建的复制功能来保证多个service之间的数据一致性。一些第三方的软件根据通用的LDAP扩展也会提供LDAP到LDAP的复制,比方说是用changelog机制。
2、同步:比复制操作得更加频繁,但是对于数据一致性的保证却不如复制,同步可以在多个directory service之间操作,也可以在更多的数据源之间操作。同步的工具比较典型的是微软的Metadirectory Service,可以在微软的DS和其他不同的数据源之间的同步,包括Netscape DS,微软的Exchange Server,不同的关系型数据库,Lotus Notes和五格式文件。
同步是一个很复制的过程,如果你打算做同步的话,你必须考虑到以后的困难,大量的调整和内部开发将不可避免。当然,如果你能克服这些困难,同步还是一个相当不错的解决方案。
3、批量更新:是一种更松散的同步,并不是经常做,可能是一个月做一次,从一个根本不一样的数据源获取数据来合并数据。因为有很多异常情况需要处理,所以数据合并的程序一般都需要内部开发。批量更新成功的关键是确保开发的程序简化,提高效率,同时尽可能的使其自动化和万无一失。
4、政治考量(公司内部的政治)