实时内存数据库的设计与实现_索引原则

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

把实时数据值保存到历史数据库的过程所采用的方式与实时内存数据库实时化过程所采用的方式是一个相反的过程。

考虑到不同的点可以设置不同的存储周期,若单个点定义存盘,则在历史数据库中该点对应一个表,当点数较多时,数据库中的表就会很多,这样很不合理。

如果所有的点对应一个表进行存储,那么将造成表的臃肿,同时由于存储数据的存储周期不同会使很多字段为空值。

因此,应首先按照不同的存储周期把点进行分组,然后每一组对应一个表来对数据进行存储。

由于需要对点进行分组,所以历史数据库中数据点的表结构是不固定的,需要组态生成。

随着同一存储周期的点的增加或减少,表的字段也可以动态地增加或减少。

系统中同一存储周期的同一类型点存储表建立的具体实现过程为[7]:
1.访问系统中的ODBC;
2.设定连接的数据库;
3.设定访问该数据库的数据源名称;
4.设定要生成的存储表的名称;
5.设定该表的存储周期;
6.访问实时内存数据库定义的该类型表;
7.选择该类型表中与第(5)步中设定的存储周期相同的点作为第(4)步中要生成的表的字段;
8.生成存储表;
9.生成存储表成功后,向存储管理表中添加相应的记录。

3.4 实时内存数据库数据的索引
数据库中的索引与书籍中的索引类似。

在一本书中,利用索引可以快速查找所需信息,而无需阅读整本书。

在数据库中,索引使数据库程序无需对整个表进行扫描便可以在其中找到所需的数据。

书中的索引是一个词语列表,其中注明了包含各个词的页码。

而数据库中的索引是一张表,其中注明了表中包含各个值的“行”所在的存储位置。

创建索引可以大大提高应用的系统性能、可以加快数据检索速度、可以加速表与表之间的连接、可以减少分组和排序的时间[8]。

3.4.1数据库的索引原则
索引有助于提高检索的性能,但索引的增加也有其不利的一面,过多的索引会导致系统效率的降低,这是因为创建和维护索引需要耗费时间,同时需要占用一定的物理空间;数据进行正常维护(添加、删除和修改)时,索引也要动态维护,因此会降低数据的维护速度。

在数据库开发过程中,若对具体的应用考虑不够周全,在设计索引时存在缺陷或索引类型选择不当,反而会影响系统的应用效率。

因此,在数据库的应用过程中,从设计阶段到应用实施阶段,都要考虑索引优化问题,通过合理的设计、选择和调整索引来优化数据库性能。

首先,在设计初期,应考虑在相应列上创建索引的必要性[28],一般应遵循以下原则:
1.在很少使用的列上不要创建索引;
2.在具有极少数量的不同值的列上不要创建索引;
3.在类型为text、image和bit等类型的列上不要创建索引;
4.在UPDATE的性能远大于SELECT性能的列上不要创建索引。

其次,在设计阶段还要考虑如何选择合理的索引技术。

尽管索引都能提高检索和更新数据的速度,但不同的索引对于特定的任务可能有更高的效率。

必须要根据数据和相关检索任务的特点来选择是采用聚集索引还是非聚集索引。

在设计阶段,应根据数据库中关系表结构(数据特征)和相关应用行为(动作特征)来设计索引。

但由于在数据库工程应用中,数据之间的联系往往非常复杂,实际应用也是复杂多变的,这将导致在设计阶段所设计的索引并不一定是最符合实际数据操作所需的。

因此,在应用过程中,必须通过追踪、分析索引的相关信息,适当调整索引来优化索引性能,从而提高数据库应用性能。

3.4.2 实时内存数据库数据的索引
普通的数据结构,其查找方法都是建立在“比较”的基础上[29],一般都是通过比较关键字是否匹配来确定是否找到相应的记录,理想的情况是不经过任何比较,一次存取便能得到所查记录,那就必须在记录的存储位置和其关键字之间建立一个确定的对应关系 f,使每个关键字和结构中的一个唯一的存储位置相对应。

因而,查找时就可以根据这个对应关系 f 找到给定值 K 的 f(K)。

为了查找和检索方便,采用二级索引结构的方式。

第一级索引为功能块索引数据结构。

按模拟量、数字量还是字符量这3种数据结构分类,功能块索引数据结构中有功能块数据结构的索引标识,有指向功能块数据结构的指针,而且存储空间固定。

第二级索引以存储在实时数据库中的对象本身来建立索引,以提高定位查找速度。

为了方便多元化查找,可以节点号或节点名作为关键字来建立索引,因为节点号和节点名都是唯一的。

3.5 本章小结
本章是论文的核心,实时内存数据库的设计包括以下四部分:实时数据模型的设计、内存结构的设计、数据存储的设计和实时内存数据库数据索引的设计。

相关文档
最新文档