跳到主要内容
访问密钥 NCBI主页 MyNCBI主页 主要内容 主导航
数据库(牛津)。2011; 2011年:bar003。
2011年3月3日在线发布。 doi(操作界面):10.1093/数据库/bar003
预防性维修识别码:PMC3056270型
PMID:21382834

RCSB蛋白质数据库查询和分发系统的质量保证

摘要

RCSB蛋白质数据库(RCSB PDB,网址:www.pdb.org)是结构生物学和相关科学学科的关键在线资源。该网站平均每月有165000名独立访问者使用,还有2000多个其他网站链接到该网站。PDB数据的数量和复杂性以及对其使用的期望都在快速增长。因此,确保RCSB PDB查询和分发系统的可靠性和健壮性至关重要,并且越来越具有挑战性。本文描述了RCSB PDB网站在几个不同级别上的质量保证,包括:(i)硬件冗余和故障转移,(ii)每周数据库更新的测试协议,(iii)主要软件更新的测试和发布程序,以及(iv)各种监测和故障排除工具和实践。因此,它为如何操作其他网站提供了建议。

数据库URL: 网址:www.pdb.org

介绍

RCSB蛋白质数据库(RCSB PDB)(1)是全球PDB(wwPDB)的成员(2)和它的一个数据分发站点。2009年,该网站(网址:www.pdb.org)平均每月有16.5万名独立访问者使用,他们浏览了1270万个网页,并通过HTTP下载了近1TB的数据。此外,通过FTP和rsync从RCSB PDB下载数据的速度在一年中平均每秒超过7个文件,在最繁忙的一天中平均每秒近87个文件。最近的一项分析表明,2000多个其他网站提供了到RCSB PDB网站的链接。鉴于RCSB PDB服务对结构生物学界和相关科学学科的重要性,我们需要确保服务质量。这篇文章是关于提供这样的服务质量。

与此同时,PDB的规模和复杂性不断增加。PDB中的结构数量在过去5年中大约翻了一番,RCSB PDB网站带宽(传输的数据量)在过去3年中几乎翻了一倍。内容的增长随着时间的推移而加速:2000年,每周大约有50个新结构发布,现在这个速度几乎翻了三倍,每周有近150个新结构。此外,数据增长不仅是定量的,而且数据也变得更加复杂。例如,核糖体等非常大的结构物现在正在更常规的基础上释放;有更多的确定结构的方法,甚至在单一结构确定期间使用混合方法的情况下。

用户期望值也在上升。网络速度的提高和浏览器技术的改进提高了“可接受”网站性能的标准。数据也可以通过越来越多的协议和服务访问:10年前,FTP和HTTP是唯一提供的在线服务(我们也有CD-ROM发行版);现在,除此之外,还提供了rsync、使用SOAP或RESTful协议的web服务和RSS提要。用户越来越期待Web 2.0类型的功能,这意味着社交书签、视频和其他服务。同样,智能手机和其他移动设备构成了越来越多的客户。

为了满足日益增长的科学期望,将继续添加显著的功能增强()例如成对和全面对抗所有结构线形(4)以及开放存取文献的整合(5). 例如,在观察超大结构或蛋白质-配体相互作用方面,结构可视化变得越来越复杂。人们对与其他web资源的集成以及工作流解决方案的启用,而不是简单的数据下载,抱有更高的期望。总之,增长、复杂性和用户期望说明了保持质量保证的挑战。

尽管有这些具体的挑战,信息技术的质量保证通常是一个难题。为什么会这样?正如我们将要看到的,在维护网站时,质量保证有很多组成部分,但最容易发现的问题可能是软件测试。惠特克探讨了为什么软件测试很难的问题(6). 他提出的原因包括软件复杂性、使用场景的几乎无限变化、许多不同的用户界面和操作环境以及缺乏时间和资源来测试所有内容。当然,质量保证远不止是测试(7). 虽然测试可能被视为检测问题的质量控制措施,以便随后进行纠正,但质量保证也首先关注预防问题。此外,运行生物数据库和网站显然涉及硬件和软件,这两个方面将在本文中讨论。

PubMed搜索显示,有关生物数据库和相关网站质量保证的文献相对较少。许多出版物审查了生物数据的质量(8–12). 然而,很少有出版物描述允许访问和探索数据的服务质量。生物医学开源项目质量保证实践调查(13)主要关注软件测试和同行评审。当然,在计算机科学领域有大量关于软件质量保证的文献,其中包括专门针对该主题的整个期刊软件质量期刊(网址:www.springerlink.com/content/0963-9314). 然而,PubMed中并没有对这些文献进行索引,因此生物信息学社区也不太容易获得这些文献。

本文不是关于PDB数据的质量保证,因为其他地方已经对此进行了广泛的描述(14–16). 相反,我们在这里描述了用于确保与分发和查询这些数据相关的服务质量的实践。在本文后面的主要部分中,我们讨论了RCSB PDB的几个质量保证领域:(i)硬件冗余和故障转移;(ii)每周更新数据库;(iii)软件版本;(iv)监测和故障排除工具和实践。随着生物网络资源的数量持续快速增长,一些项目在相关性和突出性方面日趋成熟,我们希望RCSB PDB网站的质量保证案例研究将有助于其他生物数据库和网站开发或扩展自己的“最佳实践”集。

冗余和故障切换

在此,我们将重点放在托管和提供关键RCSB PDB服务的硬件和软件上,如数据库、网站和FTP站点。对于任何一个基础设施来说,问题不是它是否会失败,而是什么时候会失败,这只是常识。此类故障可能是物理设备故障(例如硬盘或主板)或硬件上运行的服务中断(例如服务于网站的挂起的Apache Tomcat进程)。如果此类故障导致关键生产服务中断,我们需要提供冗余解决方案,以及管理从故障硬件或软件到工作硬件或软件的故障切换的后勤。无论维护需要、计划内或计划外停电、数据库或软件更新、自然灾害等情况如何,我们都力争实现100%的正常运行时间,并且实际实现了99.9%以上的正常运行率。我们利用多层物理和后勤冗余来实现这一目标。

多级硬件冗余

现场网站(网址:www.pdb.org)和FTP站点(ftp.wwpdb.org网站)由多个负载平衡服务器同时提供服务。原因不仅包括上述冗余需求,还包括单个服务器可能无法承受峰值流量负载的事实。该网站通常由五台Dell PowerEdge 2950服务器提供服务,每台服务器具有两个四核2.66 GHz Intel Xeon处理器和32 GB RAM。FTP站点由三台Dell Power Edge 1950服务器提供服务。每台服务器都具有两个四核2.5 GHz Intel Xeon处理器,以及8 GB RAM。

上述八台服务器构成了实时生产集群,该集群位于圣地亚哥加州大学圣地亚哥分校(UCSD)圣地亚哥超级计算机中心(SDSC)的机房中。两个较小的集群维护在两个独立的物理位置(分别由两个web服务器和一个FTP服务器组成)。其中一个集群位于加州大学圣迭戈分校的斯卡格斯药学与药物科学学院(SSPPS),另一个集群位于新泽西州罗格斯大学校园。这些集群可以在SDSC的维护或停电期间,或者在可能影响一个或两个UCSD位置的灾难性灾难发生时提供故障转移服务(图1). 第二个SDSC集群在配置上与实时生产集群相同,主要用于每周更新的高级分段,并且仅在最合理的情况下用于故障转移。

保存图片、插图等的外部文件。对象名称为bar003f1.jpg

硬件冗余和DNS故障转移的示意图。在三个不同的地理位置有四个集群:圣地亚哥超级计算机中心(SDSC)和圣地亚哥加州大学(UCSD)的斯卡格斯药学和药物科学学院(SSPPS),以及新泽西州立大学的罗格斯。每个集群包含多个负载平衡的Web和FTP服务器。第三方DNS提供商用于管理网站的DNS条目(网址:www.pdb.org)和FTP站点(ftp.wwpdb.org网站)包括在主集群发生故障时进行故障转移。

此外,还有一个最基本形式的PDB数据服务冗余级别:根据wwPDB的章程协议,通过FTP分发PDB档案在欧洲PDB(PDBe)和日本PDB(PDBj)是重复的(2).

负载平衡器

两个SDSC生产集群中的每个集群都由一个Cisco CSS 11506负载均衡器管理。这两个负载平衡器配置为在其中一个发生故障时自动相互接管。传入的流量在集群中的服务器之间进行往返分布。粘滞会话管理可确保在一定时间内从同一IP地址接收的所有流量都定向到同一服务器,这有助于某些网站的使用,如查询优化和结果分页。每隔30秒,负载平衡器就会通过“keep-alive”测试探测池中机器的服务。对于HTTP服务,这涉及请求一个执行数据库查询的特殊网页,以便成功返回该网页以确认Tomcat web服务器和MySQL数据库可以运行。对于FTP服务,负载平衡器尝试匿名FTP登录,对于rsync,它会ping端口。

当特定服务的keep-alive测试连续三次失败时,负载平衡器将有问题的服务器从活动池中删除,并向几个RCSB PDB工作人员的电子邮件地址和寻呼机(手机)发送通知。故障服务器的流量被重新分配给池中的其他服务器。出于最实际的目的,除了检测持续故障和从池中删除受影响的服务器所需的延迟(最长2分钟)外,此故障切换对用户是透明的。例如,用户最近在web服务器上查询的唯一标识符和描述通过memcached在内存中共享(网址:www.memcached.org)在池中的所有服务器之间。这允许诸如查询细化或移动到查询结果的下一页之类的操作,即使用户的流量已经从一个服务器故障转移到另一个服务器。一旦工作人员调查了故障并将服务恢复到正常状态(或服务自行恢复),负载平衡器将在第一次成功的keep-alive测试后自动将服务器添加回活动池。

DNS管理和故障切换

关键生产服务(HTTP、FTP、rsync)的DNS管理和故障转移外包给第三方DNS提供商。活动故障转移记录由每个服务的IP地址的优先列表组成,这些IP地址按以下顺序指向四个集群的负载平衡器:主SDSC生产集群、SSPPS的备份集群、罗格斯大学的备份集群,最后是备份SDSC生产群集(图1). 每周数据更新将于周三00:00 UTC以wwPDB合作伙伴之间的协调方式向公众发布。RCSB PDB在上周五开始每周内部更新,以便有足够的时间运行更新的所有组件(例如,包括大约100万个结构线形)、适当的测试(如下一主要章节所述)和任何意外事件的解决。为了向公众实时更新,对DNS故障转移记录进行了编辑,以切换主SDSC群集和备份SDSC群集。这有助于即时生成经过良好测试(如下所述)的实时更新,而不会公开暴露未经完整性测试的未完全更新的资源或数据。

每隔2分钟,DNS提供商还会从美国的多个位置检查是否从每个集群成功返回测试页面。如果不是,则该群集的状态将更改为“故障”。任何正在运行每周更新的web服务器都会自动从公共服务中删除,并且其流量会重定向到指定的对等方。因此,预计会出现正在更新的集群的这种“故障”。这种情况仅适用于故障转移堆栈中的备份群集,DNS提供程序仅发送事件通知。但是,当检测到活动集群的故障时,DNS记录将切换到故障转移堆栈中的下一个可用集群。例如,这可能是因为网络问题影响到主集群的流量,或者因为主集群的负载平衡器检测到其集群中所有服务器的问题,从而将所有服务器从池中删除。通知通过电子邮件和手机短信发送给关键员工,以提醒他们DNS故障转移。一旦主群集再次处于活动状态,DNS就会自动切换回主群集。

如前一节所述,单个服务器的故障相对常见,可能每周都会发生。然而,严格地说,在许多情况下,这种“失败”只代表服务器性能低于可接受的水平,此时它会被从集群中取出,直到问题得到解决。另一方面,在过去几年中,由于整个集群故障而导致的DNS故障转移没有发生。

每周数据库更新

每周三00:00 UTC,每周都会在web和FTP站点上向公众发布新条目和修改条目的数据更新。及时准确地分发这些数据更新是我们最关键的任务之一。在过去10年中,RCSB团队在网站更新的截止日期之前保持了近乎完美的记录。唯一的例外是更新在内部完成的一周内,但在截止日期之后的几个小时内,更改公共DNS条目的错误未被检测到,导致公众无法及时看到更新。制定了额外的测试程序,以防止再次发生。在接下来的部分中,我们将描述为一致地确保这些每周数据库更新的及时执行和交付而遵循的过程。

数据档案的同步和测试

罗格斯大学(Rutgers University)的RCSB PDB工作人员每周更新新条目和修改条目。作为此过程的一部分,公共FTP存档和所谓的“沙盒”的内部主副本将被更新。沙盒是存档的另一个视图,仅用于内部更新,内容与公共FTP站点几乎相同,但组织方式不同。

更新FTP和沙盒主副本后,将其传播到公共站点的工作由UCSD的RCSB PDB员工负责。在一周内,共在四个集群中的26台服务器上执行任务,包括同步FTP和沙盒存档的各种副本,以及在数据库/web服务器上运行每周更新。为了减少单调和人为错误的可能性,所有这些进程都是从一个中央服务器启动的,然后中央服务器通过ssh连接将必要的命令发送到适当的服务器集。四个集群的FTP和数据库更新在一周内交错进行,以平衡高级升级的需要和匹配活动集群内容的故障转移集群的可用性(图2).

保存图片、插图等的外部文件。对象名为bar003f2.jpg

Web和FTP服务器的交错每周更新计划。总体目标是在任何给定时间平衡对更新高级阶段(红色和橙色)的需求与对当前数据(绿色)的尽可能多的故障切换。更新周期从星期五开始,第二个SDSC集群(SDSC 2)。周一和周二更新了另外两个集群。星期三UTC 00:00,通过在两个SDSC集群(粗轮廓)之间切换DNS条目,更新被公开。DNS更改需要几个小时才能传播,直到最后一个现已过期的群集(蓝色)上的更新开始。带有粗轮廓的绿色显示了向公众提供数据的“实时”集群。其他绿色的簇具有相同的当前内容。正在更新红色的群集。橙色表示包含尚未公开发布的“暂存”数据的已完成更新的集群。蓝色表示与实时公共站点相比其数据已过时的集群。

首先,所有沙箱服务器(因为它们只在内部使用)和备份SDSC集群的FTP服务器都通过rsync同步到它们各自的主副本。Rsync首先以静默模式运行,将所有可能发生的更改记录到日志中,而不实际进行任何更改。然后,Python脚本会分析这个静默的rsync日志,以确保每周更新的完整性。通过引用新文件和修改文件的单独列表,这些完整性检查可以回答这样的问题:“rsync是否已传输新的和修改的PDB ID的所有预期文件?”和“不会修改任何意外文件吗?”如果所有测试都通过,则会在实时模式下重复rsync。然后,另一个验证脚本检查总持有量:“之前的条目计数减去过时条目,再加上新条目,是否与新计数相加?”内部沙盒和公共FTP站点的各种目录路径之间的此计数是否一致

硒测试套件

每周更新过程的下一步是在备份SDSC集群的每个web服务器上运行数据库更新(在接下来的几天内,在其他三个集群上重复此操作)。此数据库更新的详细信息超出了本文的范围。简单地说,mmCIF格式的结构文件(17)在所有新的和修改的条目中,解析并加载到数据库中,计算派生数据,并导入几十个外部数据库中的相关内容。50多个加载器类中的任何一个的问题都会记录在数据库中,并通过电子邮件发送给员工。

新的软件构建是从软件的稳定生产分支创建的,并部署到更新的web服务器上。虽然此更新有时可能包含关键的错误修复,但生产站点上站点功能的更改通常保留给精心编制的软件版本,如下一节所述。新闻项目和其他所谓的静态web内容现在保存在内部开发的独立内容管理系统(CMS)中。这进一步减少了已部署构建中的更改,从而有助于生产站点软件的稳定性。

每周数据更新的一个关键质量保证是一个广泛的Selenium测试套件。Selenium是一套用于测试web应用程序的工具(seleniumhq.org)。SeleniumIDE是Selenium项目之一,是一个在Firefox web浏览器中运行的插件。它记录并回放Firefox中任何网站的测试。我们为RCSB PDB网站开发了一套广泛的测试,包含1300多个步骤(“转到此URL”、“单击此链接”、“输入此搜索词”、“等待页面返回”等)。其中,350多个命令是断言或验证,例如“页面是否包含某些文本?”页面上的数字与测试期间存储的数字匹配吗?',等(图3). 站点功能的测试覆盖率主要根据AWStats日志分析和Google Analytics流量分析显示的站点使用情况确定。

保存图片、插图等的外部文件。对象名称为bar003f3.jpg

Firefox浏览器中完全执行的SeleniumIDE测试套件的屏幕截图。我们开发了一套广泛的测试脚本,有几个目标,例如检查用户界面的关键元素,验证每周更新的完整性,以及比较多个服务器之间的结果。左上方的面板显示了测试脚本列表。顶部中间的面板显示了验证关键字搜索是否为最新的脚本示例。它从每周发布中选择第一个条目ID,从其标题中提取关键字,然后搜索该关键字,并断言搜索结果包括给定的条目ID。右上方的面板包含用于执行测试的控件并显示测试结果。底部面板是一个常规浏览器窗口,显示脚本加载的网页。

此测试套件在更新后在每个集群的每个web服务器上运行。该套件有几个总体目标。它测试用户界面的关键元素,例如关键字搜索和单个条目的结构摘要页面。它检查每周更新的完整性,例如,通过断言网站上返回的结构总数与FTP存档中的内容相匹配。此外,它通过将被测试服务器的结果与专用主服务器的结果进行比较,确保负载平衡集群中的每个服务器为许多查询返回相同的结果。一旦切换了公共DNS条目以激活更新,就会针对公共URL(而不是单个服务器)运行另一个更短的Selenium测试套件,以确保公共站点已成功更新。

软件版本

质量保证的另一个主要目标是为RCSB PDB网站提供动力的软件。它是用Java编写的,由2000多个类组成,大约有20万行源代码。UCSD维护现场的RCSB PDB员工目前由八名全职员工组成,其中一半是全职开发人员,另一半将时间分配给开发、项目管理和系统管理。带有主要新功能的新软件版本大约每年在生产现场发布四次。这是一个中等规模的软件项目,其复杂性足以使良好的软件实践成为一项相当重要的任务。本节简要介绍了用于监控代码质量和站点性能以及确保新软件版本稳定性的工具和实践。

代码维护

所有代码都保存在Subversion(Subversion.tigris.org)版本控制存储库中。每个程序员至少有一个运行最新主干版本代码的开发克隆。代码开发是在Eclipse(Eclipse.org)集成开发环境中执行的。新的功能请求、错误报告和其他任务都记录在一个专用的JIRA错误跟踪器中(www.atlassian.com/software/jira/)仅供RCSB PDB员工使用。在问题结束之前,由一名程序员对JIRA问题的解决方案由另一名开发人员进行验证。如果错误报告或功能请求来自外部用户,则会向用户发送一封电子邮件,描述所采取的操作。Subversion签入链接到JIRA票号,这有助于评估和跟踪代码更改。

发送到电子帮助台的问题也会自动记录,并在适当的情况下手动链接到错误报告。我们更愿意通过Contact Us web表单接收此反馈(www.pdb.org/pdb/home/contactUs.do). 它有助于减少垃圾邮件,但更重要的是,它会自动向我们提供浏览器兼容性检查的结果,该结果会说明浏览器版本并确认正确的JavaScript、cookie和弹出设置。主页上还有一个指向此浏览器兼容性检查的直接链接。

强烈建议程序员使用许多可用的工具来确保代码干净。RCSB PDB网站开发人员最常用的工具如下表1.

表1。

RCSB PDB网站开发人员最常用的代码维护和故障排除工具

软件工具统一资源定位地址描述
代码维护工具
    JUnit公司junit.org网站Java单元测试框架
    测试NGtestng.org(测试网)“下一代”Java测试框架
    静态分析工具查找Bugs.sourceforge.net用于查找Java代码中错误的程序
    FireBug(火虫)getfirebug.com网站用于web开发的Firefox扩展
    UC探测器ucdetector.org网站Eclipse插件,用于查找不必要的Java代码
故障排除工具
    监控下载.oracle.com/javase/6/docs/technotes/tools/share/jconsole.htmlJava监控和管理控制台
    Lambda探头lambdaprobe.org公司Tomcat监控和管理工具
    jstack(jstack)下载.oracle.com/javase/6/docs/technotes/tools/share/jstack.html用于监视堆栈跟踪的Java实用程序
    内存图下载.oracle.com/javase/6/docs/technotes/tools/share/jmap.html用于监视内存利用率的Java实用程序
    hprof公司java.sun.com/developer/technicalArticles/Programming/HPROF.html用于堆和CPU监控的Java实用程序

每天晚上,一台专用的构建机器会自动检查整个项目从头开始从源存储库中,构建它并将其部署到web服务器上。这有助于检测未正确编译、构建或部署的代码(例如,因为某些依赖项未正确签入代码存储库)。有关此夜间构建成功或失败的通知将通过电子邮件发送给所有开发人员。在夜间构建之后,将执行用Selenium RC编写的回归测试套件,其结果也将通过电子邮件发送。SeleniumRC围绕Selenium测试语言提供了流行的语言包装器(在我们的例子中是Java),这比Selenium-IDE增加了很多灵活性,并大大扩展了它可以实现的范围。

现场性能

除了避免或修复错误外,我们还投入了大量精力优化网站的性能。性能增强可以在多个不同的级别实现,例如缓存后端数据访问、压缩通过网络交付的内容以及通过优化CSS和JavaScript减少web浏览器渲染时间。yahoo.com(开发者.yahoo.com/YSlow)的Firefox插件YSlow在网站性能调整方面尤其有用。我们还使用网站监控服务(如host-tracker.com)检查世界各地多个客户端的性能。

除了CMS中维护的一些内容外,网站上的数据只会随着每周更新而更改。因此,许多数据对象甚至整个页面都可以存储在memcached中(网址:www.memcached.org),一个分布式缓存系统。在SDSC生产集群上,memcached被分配给8台服务器之间共享的32 GB内存。在星期五每周数据更新之后,在星期三00:00 UTC公开发布新数据之前,每个PDB条目的缓存数据对象和页面都通过种子脚本加载到memcached中。因此,公共用户访问的大多数数据已经驻留在内存中,这减少了数据库访问,并导致更快地向用户交付数据。

为了比较软件版本之间的站点性能,运行负载测试脚本以请求2000个PDB条目的网页。该脚本首先在不使用memcached的情况下运行,然后再次运行缓存中已经播种的数据。将性能与以前的版本进行比较,并调查任何明显的降级。有时还会运行其他压力测试,例如模拟许多并发用户执行类似查询。最近,这被用来评估一个新的查询缓存层。

软件更改的阶段

运行制作网站的软件的稳定性显然至关重要。在这里,我们描述了用于控制和测试新软件发布的过程,大约每季度发布一次。

除了偶尔的关键错误修复之外,代码更改还通过多个阶段以谨慎控制的方式从开发传播到生产。程序员开发新功能并修复Subversion主干代码中的非关键错误。自动的夜间构建提供了编译和部署最新代码的第一个检查。当主要的新功能被认为足够稳定,可以进行公共测试时,它们将在公共测试服务器(betastaging.rcsb.org)上提供,并声明此站点的行为可能与生产站点不同。

UCSD的RCSB PDB团队定期举行测试会议,以审查新开发的功能并验证错误修复。在发布新软件之前的几周,罗格斯大学的工作人员对整个网站进行了功能测试,重点是新功能。在解决了后一个测试会话中报告的所有严重问题后,在Subversion中创建了一个新分支,它将成为生产站点的下一个候选版本。使用从新生产分支构建的代码,在beta服务器上至少每周执行一次数据更新。每周的Selenium测试套件会根据需要进行更新,以反映站点设计和功能的任何变化。

最后,在生产现场新软件发布的第一周,只有两个SDSC集群被转换为新版本。SSPPS和罗格斯大学的备份集群仍然运行以前的版本。在不太可能的情况下,只有通过公开使用站点才能发现高度关键的错误或性能问题,我们可以通过将DNS切换到其中一个故障转移群集来快速故障恢复到以前的版本。接下来的一周,假设没有出现严重问题,其余集群也将转换为新版本。

监控和故障排除工具

即使是尽最大努力确保高性能网站具有最少的错误,也不能消除对硬件和软件的监控需求。已经描述了一些监控和通知实践,如负载平衡器和DNS故障转移警报。这里我们概述了用于监视和故障排除的其他工具。

监测工具

ServerStalker是一种内部开发的工具,用于监视所有生产服务器及其提供的服务的当前硬件状态。除了对所有服务器进行简单的ICMP ping测试外,对web服务器进行监控的项目还包括使用的CPU和硬盘空间的百分比、Java进程使用的RAM数量、PDB条目的数量以及MySQL数据库的状态。此外,还为每个服务器和集群提供了更新状态的摘要,以指示它们是否包含当前数据、当前是否正在更新或是否已完成升级以备将来公开发布。对于FTP服务器,将快速确认FTP和rsync服务的可用性。ServerStalker的总体目标是快速查看每个生产服务器的当前运行状况。我们打算在未来开源ServerStalker。

此外,我们使用仙人掌(网址:www.cacti.net)以图形方式显示随时间收集的状态信息(图4). 每隔几分钟收集一次内部和外部流量、CPU和内存使用量、线程计数和Tomcat会话计数等参数,并以图形形式显示每个服务器或集群。这对于追溯调查服务器崩溃或性能瓶颈特别有用。例如,如果用户报告一个复杂的查询返回速度太慢,Cacti可能有助于识别MySQL或Tomcat当时的瓶颈所在。

保存图片、插图等的外部文件。对象名称为bar003f4.jpg

Cacti监控工具截图(网址:www.cacti.net). 每隔几分钟收集一次内部和外部流量、CPU和内存使用量、线程计数和Tomcat会话计数等参数,并以图形形式显示每个服务器或集群。时间窗口在集群刚刚用新的季度软件版本重新安装后开始,并显示在每个服务器上连续的Selenium测试期间的服务器负载。出于安全原因,服务器名称被编辑。

当然,服务器日志需要仔细收集和归档。Web、FTP和rsync日志由AWStats(AWStats.sourceforge.net)分析,网站流量由Google Analytics进一步分析(www.google.com/analytics网站). 除了提供基本的使用统计数据外,这些分析还可以帮助识别使用模式,包括采用新功能。然而,对此类分析的全面讨论超出了本文的范围。

故障排除工具

RCSB PDB web应用程序非常复杂,因此需要排除错误和性能问题。根据问题的性质,我们可以使用大量工具来帮助完成该过程。

对于错误报告,第一步是尝试重现问题。为了找出非平凡错误的根本原因,开发人员可能会在Eclipse调试模式下,在自己的开发克隆中重现用例。还可以在web应用程序中轻松配置各种级别的日益冗长的日志记录。

服务器崩溃和性能问题(“站点看起来很慢”)可能是最难调查的问题之一,因为重现问题或查明根本原因通常远不是小事一桩。通常需要进行繁琐的侦探工作,但也有一些工具可以提供帮助(表1). 例如,最近,jmap帮助我们确定了与以Excel电子表格格式导出数据的第三方包有关的罕见服务器崩溃的原因。对于过大的表格报告,创建了太多的对象,垃圾收集无法继续,服务器CPU被最大化,使受影响的服务器无法访问。

总之,根据问题的确切性质,故障排除需要适合工作的工具。最困难的部分通常是重现问题,尤其是当问题可能与服务器负载过重有关时。最后,无论听起来多么微不足道,都应该记住客户支持的一条黄金法则:不能轻易重现用户报告的问题并不意味着该问题不真实。

讨论和总结

RCSB PDB致力于提供优质资源和高度可靠的服务。这意味着无论维护需求、停电等情况如何,都可以在365年7月24日不间断访问。

在管理PDB十多年的时间里,RCSB PDB在网站的可靠性和性能方面普遍受到用户的好评。然而,我们得到的一个教训是,用户不一定告诉我们他们遇到的问题,但可能只是离开网站。在最近的一年里,该网站从大约100万个独特的IP地址访问,但只有大约1600名不同的用户写信给电子服务台,提出评论、问题或担忧。虽然这些数字为各种解释留下了空间,但与用户的个人互动,例如在会议上,有时也反映出不愿意说出感知到的问题。一些用户表示,他们只是认为自己做错了什么,没有考虑到网站上可能存在漏洞。当然,人们总是希望在外部用户体验问题之前发现内部问题,但刚刚描述的趋势增加了这样做的负担。

要测试多少以及如何测试的问题并不是一个简单的答案。时间和资源根本不允许我们测试一切,因此必须确定优先顺序。自动化测试与手动测试的问题也是一个有趣的问题。虽然完整的测试自动化可能天真地看起来像是一个明显的目标,但我们发现它不能完全取代手动测试,并且需要适当的平衡。另一个有趣的心理方面是过度测试的固有危险。测试脚本中包含的断言越多,其中一个断言失败的可能性越高。这不总是件好事吗?是的,只要失败确实反映了一个真正的问题。然而,增加测试也会增加错误报告的可能性,根据我们的经验,这会带来测试人员自满的危险(“我以前见过这种失败,我不会担心这种情况”)。所有测试的构思和实施都应确保失败确实反映了一个需要进一步调查的真实问题。

Selenium IDE作为测试环境有很多优点。开始使用GUI测试编辑器编写测试很容易,同时,HTML格式的测试源代码也很容易手动编辑。有多种方法可以寻址页面上的HTML元素,包括通过强大的XPath查询语言在文档对象模型(DOM)中的相对和绝对位置。可以在Selenium命令中嵌入任意JavaScript,从而允许计算数学构造,并添加在断言中包含逻辑的有限方法。然而,Selenium IDE的一个缺点(至少在没有使用第三方插件的情况下)是缺乏真正的流控制或循环,使得一些重复测试有点尴尬(例如“对于每个结构基因组中心,测试返回的结构数量”)。

我们认为,使用Selenium IDE的最大优点是,在真实浏览器中执行测试构成了一个测试环境,与最终用户与网站交互的真实体验最为相似。单元测试和回归测试是全面质量保证策略的重要组成部分。然而,最终的目标并不是让每个类都通过单元测试,而是让所有网站功能按设计和预期运行。web浏览器是大多数用户最常用的RCSB PDB接口,这使得Selenium IDE成为用户体验到的应用程序集成测试的合适选择。

几年来,我们制定了质量保证实践。虽然其中许多可以被视为相当标准的行业实践,但我们会根据需要不断修订和完善它们。特别是硬件冗余带来了必要的权衡,如数据同步开销、硬件利用率低、财务约束、可扩展性限制等。例如,相互独立更新的数据库的多个副本可能会由于某种原因而随着时间的推移在内容上出现分歧。我们打算通过未来的硬件重新设计对此进行改进。

我们可以改进的另一个领域是回归测试的使用。虽然回归测试套件涵盖了相当多的站点功能,但它并不全面。此外,一个理想的目标可能是,对于发现并修复的每个错误,都会在回归套件中添加一个测试,以避免将来出现任何未检测到的相同问题。显然,这必须与完整测试套件的运行时间相平衡。

在本文中,我们概述了用于软件维护的工具和实践。软件和数据库的原始设计在别处描述(18). PDB网站提供了足够的功能,因此在单个web应用程序中维护所有代码变得越来越困难。为了解决站点某一方面的代码更改对其他功能产生负面影响的风险,我们正在不断地对代码进行模块化。通过BioJava已经可以获得代码库的一些组件(19)项目。

总之,我们已经描述了RCSB PDB查询和分发系统的质量保证工作,特别是RCSB PDB网站的质量保证工作。通过多层冗余,我们努力争取100%的正常运行时间,并几乎实现了这一目标。每周的数据库更新和大约每季度的软件发布在公开之前都经过了仔细的阶段性测试。最后,我们概述了一些用于调查确实发生的问题的工具和实践,尽管我们首先尽力避免这些问题。

致谢

RCSB PDB是一项团队工作,非常感谢全体员工,特别是注释团队对质量保证的贡献。RCSB PDB当前工作人员的完整列表可在www.pdb.org/pdb/static.do?p=通用信息/about_pdb/contact/pdb_members.html.

基金

国家科学基金(NSF DBI 0829586);国家普通医学科学研究所;能源部科学办公室(DOE);国家医学图书馆;国家癌症研究所(NCI);国家神经疾病和中风研究所(NINDS);以及国家糖尿病、消化系统和肾脏疾病研究所。RCSB PDB由RCSB的两名成员管理:罗格斯大学和UCSD。开放获取费用的资助:国家科学基金会(NSF DBI 0829586)。

利益冲突。未声明。

工具书类

1Berman HM、Westbrook J、Feng Z等,《蛋白质数据库》。核酸研究。2000;28:235–242. [PMC免费文章][公共医学][谷歌学者]
2Berman H、Henrick K、Nakamura H宣布建立全球蛋白质数据库。自然结构。生物。2003;10:980.[公共医学][谷歌学者]
三。Rose PW、Beran B、Bi C等。RCSB蛋白质数据库:重新设计的网站和web服务。核酸研究。2011;39:D392–D401。 [PMC免费文章][公共医学][谷歌学者]
4PrlićA、Bliven S、Rose PW等。RCSB PDB网站上的预计算蛋白质结构比对。生物信息学。2010;26:2983–2985. [PMC免费文章][公共医学][谷歌学者]
5PrlićA、Martinez MA、Dimitropoulos D等。使用BioLit将开放存取文献整合到RCSB蛋白质数据库中。BMC生物信息学。2010;11:220. [PMC免费文章][公共医学][谷歌学者]
6日本惠塔克。什么是软件测试?为什么这么难?软件,IEEE。2000;17:70–79. [谷歌学者]
7Feldman S.质量保证:远不止测试。排队。2004;:26–29. [谷歌学者]
8Brenner SE。基因组注释错误。趋势Genet。1999;15:132–133.[公共医学][谷歌学者]
9Devos D,Valencia A.基因组注释中的固有错误。趋势Genet。2001;17:429–431.[公共医学][谷歌学者]
10Gilks WR、Audit B、De Angelis D等。蛋白质序列数据库中注释错误的渗透建模。生物信息学。2002;18:1641–1649.[公共医学][谷歌学者]
11Nilsson RH、Ryberg M、Kristianson E等。公共序列数据库中DNA序列的分类可靠性:真菌视角。《公共科学图书馆·综合》。2006;1:e59。 [PMC免费文章][公共医学][谷歌学者]
12Bidartondo MI。在GenBank中保持准确性。科学。2008;319:1616.[公共医学][谷歌学者]
13.Koru G、El Emam K、Neisa A等。生物医学开源软件项目质量保证实践调查。医学互联网研究杂志。2007;9:e8。 [PMC免费文章][公共医学][谷歌学者]
14Bhat TN、Bourne P、Feng Z等。PDB数据一致性项目。核酸研究。2001;29:214–218. [PMC免费文章][公共医学][谷歌学者]
15.Westbrook J、Feng Z、Jain S等。蛋白质数据库:统一档案。核酸研究。2002;30:245–248. [PMC免费文章][公共医学][谷歌学者]
16Henrick K、Feng Z、Bluhm WF等。蛋白质数据库档案的修复。核酸研究。2008;36:D426–D433。 [PMC免费文章][公共医学][谷歌学者]
17Westbrook JD,Bourne PE。STAR/mmCIF:大分子结构本体。生物信息学。2000;16:159–168.[公共医学][谷歌学者]
18Desphande N,Addess KJ,Bluhm WF,等。RCSB蛋白质数据库:基于mmCIF模式的重新设计的查询系统和关系数据库。核酸研究。2005;33:D233–D237。 [PMC免费文章][公共医学][谷歌学者]
19Holland RCG、Down T、Pocock M等。生物Java:生物信息学的开源框架。生物信息学。2008;24:2096–2097. [PMC免费文章][公共医学][谷歌学者]

文章来自数据库:《生物数据库与治疗杂志》由提供牛津大学出版社