夏志君+张荣福+郑传生
摘 要:根据市场调查和行业分析,高通量菌落挑选仪在优质菌落的筛选过程中应用越来越广泛。通过对高通量菌落挑选仪的分析研究,设计了一个基于C/S架构的菌落信息管理系统,解决高通量菌落挑选仪在工作过程中的数据管理问题。该系统使用C#语言,以SQL Sever 2008作为底层数据库,建立数据库关系模型,通过高通量菌落挑选仪上位机实现与其数据交互。同时从数据库表结构、索引及SQL语句等方面对数据库进行了优化,提高系统存储和查找效率,节省了系统资源开销。
关键词:菌落挑选仪;数据访问;SQL Server数据库;数据库优化;信息管理
DOIDOI:10.11907/rjdk.171956
中图分类号:TP319
文献标识码:A 文章编号文章编号:1672-7800(2017)008-0076-03
0 引言
随着微生物、医药卫生等行业的迅猛发展,基于菌落形态学特征的筛选技术对获得合格菌落的重要性越来越大。高通量菌落挑选仪正是基于这一技术的自动化菌落挑选设备,能从众多培养出来的菌落中筛选出符合条件的微生物,供后续培养繁殖,提高优质菌株的培养效率。而菌落信息管理系统的设计目的是将其作为高效的数据处理系统辅助高通量菌落挑选仪完善其功能,实现对仪器收集数据的整理、存储及分析,它是高通量菌落挑选仪不可或缺的重要组成部分。但随着存储数据的不断增多,系统通过全表扫描来查找相关信息将会耗费较长时间。因此,对数据库进行优化是提升菌落信息管理系统性能的重要内容。
1 系统设计
1.1 软件结构设计
本系统软件模块采用分层结构设计,分为界面显示层、逻辑关系层和数据访问层三层结构,它们既彼此独立又相互联系,构成了系统软件结构的骨架。此结构将系统的各个部分按照其调用的依赖关系分成不同的层级,且各个层级之间只能实现单项调用,不能越级调用,这样的设计在保证系统运行流畅的同时也提高了系统的运行效率[1]。其中,逻辑关系层主要处理系统中的数据逻辑关系,如接种信息与菌落信息的匹配关系等。系统层级关系如图1所示。
1.2 数据库基本表设计
高通量菌落挑选仪是集挑选与接种于一体的自动化菌落优选装置,可以对平皿菌落进行智能识别和自动优选。菌落信息管理系统作为高效的数据处理系统支撑挑选仪完成其功能,是整个菌落操作过程中的重要组成。高通量菌落挑选仪的数据流图如图2所示。
设计合理的系统相关表有利于后期对数据库进行优化。因此,在本系统的数据库基本表设计中,遵循的范式是第三范式,设计出来的数据管理系统冗余较小,减少了CRUD操作异常。通过对菌落信息管理系统的相关数据进行分析,结合用户需求,本系统设计了6张表,各表之间通过外键或中间表相连,它们分别是操作员信息表、实验信息表、挑选配置信息表、清洗消毒信息表、菌落信息表和接种信息表,如表1所示。
1.3 数据库模型
数据模型的发展过程先后经历了层次模型、网状模型和关系模型3个阶段[2],其中关系模型应用最为广泛。关系模型用满足相关条件的二维表结构对不同的实体进行描述,并依据各实体自身情况来建立彼此联系,再对数据进行相关代数和逻辑关系运算。本系统关系数据库正是基于该模型建立而成。通过一组具有正式描述性的表格对数据库中的数据进行相关描述,并以集合代数的方法对其进行相应的处理,而这些建立在被不同表格所描述的数据之间关系的集合就构成了一个关系数据库[3]。本系统数据信息实体关系如图3所示。
1.4 ADO.NET数据访问技术
菌落信息管理系统通过ADO.NET数据访问组件实现仪器上位机对关系数据库中数据的访问。ADO是一组优化的数据库访问专用对象集,为ASP提供了完整的站点数据库解决方案,它作用在服务器端,提供含有数据库信息的内容,通过执行SQL命令,让用户在系统主界面中存储、更新和删除相关数据库信息[4]。
(1)Connection:连接数据对象。Connection对象用于系统连接本地数据库。基于本地SQL Server 2008的高通量菌落挑选仪数据库创建和打开连接的核心代码如下:
string connectionStr=@” Integrated Security=SSPI; Data Source=localhost; Initial Catalig=SCP”;
SqlConnection conn=new SqlConnection (connectionStr);
conn.Open ();
(2)Command:操作数据对象;DataReader:读取数据对象。Command对象以一个SQL语句的字符串为命令操作数据库,而DataReader对象可以接收命令执行结果。以查询高通量菌落挑选仪在2017年1月1日所有的接种信息为例,代码如下:
string cmdStr=”Select * From tb_PickingInformation Where Datatime=2017-01-01”;
SqlCommand dbCmd=new SqlCommand (cmdStr,conn);
SqlDataReader dbReader=new dbCmd.ExcuteReader ();
2 功能模塊
本系统通过C#进行可视化Winform窗体界面设计,根据高通量菌落挑选仪的功能需求,主要分为3个功能模块,分别为信息存储模块、信息管理模块和备份恢复模块,并通过相关控件实现对应功能。
2.1 信息存储模块
信息存储模块是菌落信息管理系统的重要组成部分。作为对高通量菌落优选仪进行数据处理的信息管理系统,本模块会在仪器工作过程中采集相应数据,通过与数据库进行交互完成信息整理和存储。系统信息采集流程如图4所示,其中操作员信息、过程设置信息和清洗消毒信息在仪器挑选前完成存储,菌落信息在仪器探针回到原点后进行采集存储。此外,系统会根据操作员设置决定是否将基本参数信息和挑选接种信息保存至数据库。以系统存储菌落信息为例,相关代码如下:endprint
string sqlstr = "insert into tb_ColonyInformation(孔板号,接种孔位置,质心坐标X,质心坐标Y,面积,周长,长径,短径,长短径比,R,G,B,保存日期,保存时间) values('" + RecordList[i - 1].NoInDic.ToString() + "','" + RecordList[i - 1].IndexOfProbe.ToString() + "','" + Chara [i].Centroid.X.ToString() + "','" + Chara [i].Centroid.Y.ToString() + "','" + Chara [i].Area.ToString() + "','" + Chara [i].Perimeter.ToString() + "','" + Chara [i].MajorAxis.ToString() + "','" + Chara [i].MinorAxis.ToString() + "','" + Chara [i].MajToMinAxisRatio.ToString() + "','" + Chara [i].CentreAcerageColor.R.ToString() + "','" + Chara [i].CentreAcerageColor.G.ToString() + "','" + Chara [i].CentreAcerageColor.B.ToString() + "','" + DateTime.Now.ToString("yyyy-MM-dd") + "','" + DateTime.Now.ToLongTimeString().ToString() + "')";
dataOperate.DataCom(sqlstr);
2.2 信息管理模块
信息管理模块的主要功能是对菌落来源信息进行跟踪、回溯,即在后期菌落繁殖中,通过本模块可以对繁殖快、抗污染的优质菌株追根溯源,提高优质菌株的培养效率。本模块管理与仪器有关的操作员信息、配置信息、过程设置信息、清洗消毒信息、接种信息和菌落特征信息,能够对信息进行检索查询、删除清空、数据输出等操作,其中数据输出是将上位机选中的数据库表格导出成Excel。以查询挑选配置表为例,相关代码如下:
sqlstr = "select*from tb_PickingInformation";
tb = " tb_PickingInformation";
SqlDataAdapter sqldataadapter = new SqlDataAdapter(sqlstr,sqlconn);
DataSet mydataset = new DataSet();
sqldataadapter.Fill(mydataset,tb);
this.dataGridView1.DataSource = mydataset.Tables[tb]
2.3 备份恢复模块
备份恢复模块分为数据备份和数据恢复两部分,主要用于预防突发情况造成系统重要信息的破坏。本模块默认数据备份路径为D:\\ Conoly,可手动备份或自动备份。自动备份SQL语句:"backup database MyDatabase to disk='D:\\ Conoly\\MyDatabase.bak'?"。而数据还原会扫描备份路径下的全部子文件。自动还原SQL语句:"restore database MyDatabase from?disk=' D:\\ Conoly\\MyDatabase.bak' "。
3 数据库性能优化
3.1 优化需求
对数据的处理和查询速度已成为衡量系统性能的重要指标。随着高通量菌落挑选仪的不断工作,数据库各表中的记录会持续增加,系统响应速度也会越来越慢,因此有必要对数据库进行性能优化,提高系统工作效率。基于SQL Server数据库的性能优化方法有很多种,例如选择性能优越的服务器、合理使用事务和批处理以及在应用程序开发时使用合适的工具等。本系统除了规范基本表结构外还通过索引优化和SQL语句优化两种方法提升系统性能。
3.2 性能优化方法
3.2.1 索引优化
使用索引能大大加快数据库查询速度[5]。查询执行的大部分开销是I/O ,索引优化能提升系统性能的主要原因是避免了全表扫描。全表扫描会从磁盘读取表的所有数据页,若建立索引指向数据值,查询只需读较少次的磁盘。但索引不能建立过多,会占用磁盘空间和增加数据库维护开销。本系统对接种信息表中pickNum建立索引,以执行SQL语句"SELECT * FROM tb_PickingInformation WHERE pickNum= 250000;"为例查询一条记录,结果如表2所示,对比发现,建立索引后系统查询时间明显缩短。
3.2.2 语句优化
对于菌落信息管理系统而言,SQL语句独立于应用程序设计,比优化系统源代码的风险小、成本低。此外,SQL语句是对数据库中数据进行操作的唯一方式,因此优化SQL语句对提升系统性能起到重要作用。本系统从WHERE子句、避免使用游标和分页查询三方面对SQL语句进行优化:
(1)WHERE子句。在数据查询时,通过WHERE子句限定查询条件能够避免查询大量无用数据,在WHERE涉及的列上建立索引,可以提高查询效率。同时,避免在WHERE子句中对字段进行null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。此外,尽量减少在WHERE子句中对字段进行表达式操作或函数操作,这也会导致引擎放弃使用索引而进行全表扫描。
(2)避免使用游标。游标的使用能让系统对查询返回结果集的每行进行处理,能基于游标位置对表中数据删除或更新。但随着菌落挑选仪的不断工作,数据库中存储的信息会越来越庞大,如果建立游标,在处理数据时相关信息会被锁定,直至数据遍历完成。鉴于使用游标处理大量数据时, 效率低下、占用内存大,因此避免使用游标。
(3)分页查询。数据库中各表的记录数很大,满足查询条件的记录可能会很多,若将查询结果一次性显示出来会降低查询效率。通过row_number()解析函数完成分页查询能解决此类问题,即根据查询条件返回前n条记录,需要时再返回n+1条以后的记录。
4 结语
本文介绍了菌落信息管理系统的软件结构、功能模块和数据访问技术等内容,并通过数据库优化提升系統性能。通过实际测试,整个系统运行稳定,功能达到设计要求。系统较数据库优化前能快速、准确地存储和查询相关信息,能通过上位机控件操作数据库中各表数据,具备良好的平台无关性及拓展性。当菌落后期繁殖培养出优质菌株时,系统能准确回溯实验相关信息,加快优质菌株的培养速度,很好地促进了高通量菌落挑选仪功能的完善。
参考文献:
[1] 梁红硕.存储过程在C#数据库编程中的应用[J].科技风,2014(1):83-83.
[2] 陈国红.数据库技术及其发展趋势[J].纺织高校基础科学学报,2001,14(3):244-248.
[3] 王晓鹤.数据融合中的数据库技术[D].西安:西北工业大学,2004.
[4] 莫停飞,白振兴,邓善.C#环境下利用ADO与SQL Server 2000数据库的链接[J].现代电子技术,2004,27(9):39-41.
[5] 傅向华,冯博琴,王小民,等.一种基于数据访问流的数据库索引优化方法[J].计算机工程,2007,33(12):99-101.endprint