数据管理 - Pipeline Pilot 科学数据的管理利器MongoDB

时间:2014-04-09

 

      在Pipeline Pilot 9.0中新增了MongoDB数据库的相关功能模块。MongoDB是目前最流行的No-SQL数据库之一。所谓的No-SQL指的是非关系型数据库,与传统的关系型数据库如Oracle、Mysql等不同的是,MongoDB等数据库不再遵循传统关系型数据库的基本要求如遵循SQL标准、ACID属性、表结构等等。他们以key-value形式存储数据,这使得它们能够灵活地处理各种数据类型,同时具有良好的并发性、拓展性和快速的读写性能。目前很多大型的互联网公司已经开始采用各种NoSQL技术,如Google、Amazon、淘宝、优酷等。
 
      随着科学研究的深入,往往会产生非常多的科学数据,为了方便这些数据的管理和重复利用,最好的方法就是将这些数据保存到数据库中。然而科研数据的数据结构种类非常多且往往很复杂,除了有各种非结构化文档如分子结构、文本文档、图片等外,很多结构化文档由于数据很复杂,也很难用关系型数据库进行数据的存储。而传统的关系型数据库需要事先定制好严格的表结构和表关系,这使得它们在处理这些复杂的数据时将面临着诸多的困难和限制,对数据库的设计者有较高的要求。而MongoDB由于其模式自由的存储方式,且支持数据嵌套和支持对象的特点,使得它能够非常方便地保存各种科研数据,包括复杂数据结构和非结构化文档。
 
      在Pipeline Pilot中,数据流中的各种数据,用户可以几乎不用经过任何处理,就可以直接存储到MongoDB的数据库中,包括各种化学数据、Reporting报表数据、材料结构分子数据、文本分析数据、图像分析数据、谱图分析数据等等。存储的数据过后可以通过Pipeline Pilot可以直接读取,并可以直接使用而无需经过任何处理(如图1)。
 
      图1 左图:通过Pipeline Pilot先将Asinex化合物库存储到MongoDB中,接着使用传统方法筛选化合物库中分子量在600~650的化合物,用时约5s(读取+筛选),而用MongoDB筛选同样的化合物,时间仅需0.42s,效率提高了约10倍,在数据量大及复杂计算时,MongoDB的优势可能更加明显。右图:MongoDB筛选结果,其结果与传统筛选方法完全一致。
 
      MongoDB除了具有灵活的数据存储能力的外,更重要的是它具有高效的功能强大的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。不仅可以对常规的数据(数字、字符串、日期等)进行检索,还支持对数据中数组及各种嵌套数据(复杂的结构化数据,如来自xml的数据)进行查询。这使得用户可以高效地获取并筛选他们预先存储的数据。
 
      基于以上MongoDB的两个特性,用户可以轻松地将各种的大量的中间数据存储在数据库中,如经过预处理的化学分子、材料科学数据、谱图数据等,在需要计算时可以从数据库中快速地找到对应的数据,直接用于数据处理和计算,可以免去前期的数据处理工作,同时又保证了数据容易查找,可以追溯,处理方法标准化的特点。当然,也可以将各种计算结果保存在数据库中,方便后期数据的查询及数据的分享。