0 引言
物联网时代的发展日新月异,作为主要载体的电子产品在其中扮演了不可或缺的角色,而设计师在设计、组装和测试整机产品之前往往要先选择合适的电子元器件,在性价比可控范围内,综合考虑元器件的各项性能参数,以最优的组合发挥硬件最高的效能[2]。然而,当今的电子元器件行业内没有形成统一的标准体系,不同种类的元器件之间既有相同也有相异的性能参数,对于软件研发人员来说,设计良好的底层数据库表,为上层查询提供高效准确的检索是相当棘手的。
传统的关系型数据库为了减少甚至消除数据冗余,引入了数据库设计的三范式[3],虽然有效地减少了数据存储量,保持了数据的一致性,但随之也产生了非常多的子表,导致每次查询需要关联多张表,当数据量剧增时,数据库软件的计算量也在呈几何形势增长,计算时间同比暴涨。这就表现在,设计师在面对浩瀚如海的元器件数据时,无法实时检索定位到自己想要的信息,用户体验差。同时,因为关系型数据库存储的是全量数据,而且采用正排索引技术,所以在海量数据面前就显得无能为力。
为了提升查询速度,需要优化当前的数据库结构,将元器件主表与多张关联子表合并转换为一维表,并以Elasticsearch作为存储、检索工具,充分地利用其倒排索引[4]、列式存储[5]等特性,大大地提高元器件的检索速度,为设计师的选型工作提供高效便捷的服务体验。
1 业务流程
元器件选型工作的业务流程如图1所示。
图1 业务框架
元器件选型工作的具体步骤如下所述:
1)管理员录入电子元器件数据;
2)应用平台接收数据,并插入到关系型数据库中;
3)在将数据插入数据库的同时,将每条数据进行处理,抽取筛选必需的栏目和主键存储到Elasticsearch中;
4)用户向平台提交筛选条件,请求查询相关器件信息;
5)应用平台调用Elasticsearch的接口,快速地搜索出符合筛选条件的结果集;
6)Elasticsearch将符合筛选条件的结果集返回给应用平台;
7)应用平台将搜索结果渲染到前端;
8)用户浏览搜索列表,选择想要查询的产品详情;
9)平台携带元器件数据主键,向数据库发起精确查找;
10)数据库将查找结果返回给应用平台;
11)应用平台将详细的信息返回前台供用户查看。
其中,Elasticsearch不仅是一个全文检索引擎,也是一个列式存储数据库,其设计初衷并非存储全量数据,而是只存储与筛选查询相关的信息栏目和指向原始数据地址的引用信息,如关系型数据库表的主键、url、邮箱地址或是其他uri(唯一资源定位标志)[6]。搜索时,输入相关筛选条件,即可快速地定位到所需条目,通过搜索结果中的uri做进一步地查询得到精确结果。Elasticsearch与关系型数据库的名词对应关系如表1所示。
表1 Elasticsearch与关系型数据库名词对应关系Elasticsearch 关系型数据库Index(索引库) Database(数据库)Type(类型) Table(表)Document(文档) Row (行)field(域) Column(列)
2 优化过程
2.1 表结构转换
原来的表关系E-R图如图2所示。
图2 优化前的表关系
其中,元器件产品表为核心主表,与静电敏感等级、供应商和产品分类为多对一关系,与其他子表为一对多或多对多关系,产品执行标准与产品性能参数为多对多关系的关联表,其他则为基础表。如果按照标准sql[7]语句对这十几张表作关联查询,则势必严重影响到查询速度,况且,关系型数据库在面对海量数据时本就显得力不从心。幸运的是,我们在查询的时候并不需要关联所有的子表,通过对筛选条件的梳理得出,参与筛选的条件有:关键字、产品分类、供应商、外形尺寸、封装形式、质量等级和性能参数 (视具体分类而定)。除了关键字,其他子表与产品主表的关系E-R图如图3所示。
图3 剔除无关子表后的表关系
在排除了无关子表的干扰之后,下一步考虑消除关联表,并将子表揉进主表中,转换成一维表。参照原有关系修改Elasticsearch中的数据结构。
a)供应商、产品分类与产品是一对多关系
将供应商、产品分类的id和名称分别作为产品的域。
文章来源:《电子元器件与信息技术》 网址: http://www.dzyqjyxxjs.cn/qikandaodu/2021/0506/1170.html
上一篇:元器件全寿命周期数据智能应用
下一篇:基于设计需求的企业元器件数据资源平台建设
电子元器件与信息技术投稿 | 电子元器件与信息技术编辑部| 电子元器件与信息技术版面费 | 电子元器件与信息技术论文发表 | 电子元器件与信息技术最新目录
Copyright © 2018 《电子元器件与信息技术》杂志社 版权所有
投稿电话: 投稿邮箱: