面向工作流编程的Python数据管理技术比较分析

2022-05-30 06:51杨雪琪肖宇
电脑知识与技术 2022年30期
关键词:工作流数据管理编程

杨雪琪 肖宇

摘要:在工作流编程中,个人经常面临数据管理方法的选择。文章重点阐述了基于文件和基于数据库的数据管理方法,并分析了三种数据管理技术的各自优缺点。从数据量大小、数据安全性、数据更新频率、数据共享范围等四个维度构建了数据管理技术的选择方法。最后给出了数据管理技术选择建议:对于小数量、低安全性、不更新数据、不共享数据的工作流数据,建议采用人工管理的方式;对于中等数据量或有一定安全性共享性要求或需与他小范围共享数据的工作流,建议使用基于文件的数据管理方法;否则,建议选择基于数据库的数据管理方法。

关键词:数据管理;数据库;Python;编程;工作流

中图分类号:TP311.13-4; G642.0      文献标识码:A

文章编号:1009-3044(2022)30-0068-03

开放科学(资源服务)标识码(OSID):

1 引言

随着计算机编程语言和软件技术的发展,越来越多的高校学生、从业者与科研人员等非专业计算机编程人员借助高级编程语言(例如:Python、R和Julia等)完成工作流,从而可自由地测试与实现他们的想法[1]。值得注意的是,在编程过程中,大部分非专业编程人员往往缺乏数据管理意识,因此可能造成计算资源的浪费和数据安全问题。特别是在大数据时代,日常数据挂历工作面临着诸多挑战[2-3]。本文分析了不同应用场景下的数据管理方法选择,以帮助非专业编程人员更好地完成他们的工作流。

通常情况下,程序接收外界输入,经过一系列处理过程之后,输出数据至外界。该过程涉及数据管方法的选择。在计算机技术不同发展阶段,产生了人工管理、文件管理和数据库管理等三种不同的数据管理方法[3]。在人工管理阶段,程序与数据之间具有强耦合性,数据通过硬编码嵌于程序中。这种管理方法适用于具有特殊用途且不需经常变更数据的程序;在文件管理阶段,程序与数据解绑,输入与输出数据以文件的形式保存于外界;在数据库管理阶段,程序与数据具有松耦合,程序包含与数据库交互的语句,可根据状态实现与数据库的动态交互。

人工管理方法仅适用于小数据量、缺乏外部存储设备支持的应用,数据的增、删、改等操作均需在源程序中完成,因此灵活性和合作潜力差,并不推荐在工作流编程实践中使用。因此,以下将重点介绍分析基于文件和数据库的数据管理技术在Python工作流编程中的适用场景。

2 基于文件的数据管理技术

通过文件与外界交互数据是当今编程实践中最常用的方法之一。在日常工作流中,通常将文件(例如:txt、csv、json等格式)输入到程序中,最后再以文件形式输出数据。

基于文件的数据管理方法具有学习成本低、兼容性强、易与他人分享等优点。首先,该管理方法依赖于操作系统或者需与对应文件格式的软件共同使用。常见日常办公软件(例如:Excel和浏览器等)存在于大部分个人电脑中,因此可以用户之间可以方便地进行数据文件的共享与合作。此外,这些外部软件的使用方法被大部分用户掌握,因此不需要额外的学习成本,与用户现有使用习惯兼容性强。最后,文件的形式丰富,可以灵活地存储各种类型的非结构化数据。

基于文件的数据管理方法具有运行性能低下、安全性低、数据一致性差等缺点。然而,外部文件需一次性读入计算机内存中,因此在一定程度上会影响到程序的运行性能。随着数据量的增大,这种影响将逐步增加。此外,在将数据写出文件时,文件数据的组织形式因文件创建者而异,从而需要额外的数据说明文件的组织形式。再者,文件难以被多个应用在同一时间共同使用,数据操作需在程序内部完成,文件数据也容易在传递过程中被篡改。最后,文件易于复制,因此可能带来数据不一致、数据冗余和数据安全性等问题。

结合以上所述优缺点,基于文件的数据管理技术适用于数据安全性要求低、数据更新频率低的小型个人项目。例如,小计算量的科学研究输出数据的存储应用和个人财物管理应用等。

在Python编程环境下,可以利用内置函数open()读取或生成文件对象实例,利用read()、readlines()等方法逐字符或逐行读取数据,利用write()或writelines()等方法将数据写入到文件。此外,第三方科学计算库numpy和pandas提供有读取或写入各种文件格式的方法。

3 基于数据库的数据管理技术

数据库是计算机科学的重要分支之一,是数据管理技术发展的高级阶段。按数据逻辑组织形式,数据库可以分为层次数据库、网状数据库、关系型数据库、文档型数据库和键值对型数据库等[4-5]。此外,近年来也出现了针对特定领域的数据库,例如图形图像数据库和图数据库等。无论是哪一种数据库,均提供有数据增、删、改、查等工具。大部分数据库支持多个数据应用的并发访问和远程访问,且为主流编程语言提供了数据操作接口。因此,基于数据库的数据管理技术可以依赖于数据库管理系统提供的强大数据管理功能开展更安全、更具扩展性的数据管理活动。

開源关系型数据库MySQL和文档型数据库MongoDB在业界的应用尤为广泛,支持文档也非常丰富。MySQL数据库提供了社区开源版本,可以在个人电脑上自由下载和安装配置。该数据库提供了一系列的安全控制技术,例如用户管理、权限控制、事务管理和数据库备份等。MySQL的数据操作主要依赖于SQL语言,因此具有一定的技术门槛。MongoDB数据库采用BSON形式存储数据,具有专门的数据操纵语言,且提供了用户管理、权限控制、事务管理和数据库备份等基本功能。相比较而言,MySQL适用于结构化数据的存储,进行数据库操作之前,需要设定数据模式;MongoDB适用于非结构化数据的存储,可灵活地存储数据。

在工作流编程应用中,利用数据库可很好地帮助完成数据管理工作。例如,对于计算密集型的大规模仿真模拟工作,可以预先将需探索的模型参数存入至MongoDB数据库中,将参数对应的任务状态分别设为未评估、正在评估和已完成评估等,然后由多台计算机远程访问该数据库,读取未评估状态的参数组合,在粗粒度上实现多台不限平台计算机组合的并行计算,从而加速完成模拟任务。在程序运行过程中,也可监控和查看任务的完成度和状态。

根据以上优缺点,基于数据库的数据管理技术适用于具有一定数据库基础或者学习意愿强的用户。虽然具有一定的门槛,使用数据库可以使用户不用考虑文件管理方法中可能存在的各种问题。此外,该数据管理技术适用于需要多台电脑读取、更新频率高、存在多用户合作生成数据的应用场景。例如,大型仿真实验运行过程中的数据管理。

在Python编程环境下,存在与各主流数据库连接的第三方模块,例如 PyMySQL和PyMong等。这些模块都遵循Python提供的统一接口标准,因此学习成本较低,操作简便。具体而言,对于数据模式较为单一、可不考虑数据组织形式的工作流,可采用无须预先设定数据模式的非关系型数据库作为数据管理工具;对于数据模式较为复杂的工作流,建议先设计数据模式,然后通过非关系型或关系型数据库作为数据管理工具。

4 三种数据管理技术的选择

在日常工作流中,需要根据任务的相关性选择相应的数据管理技术。数据管理技术选择的影响要素主要包括数据量大小、数据安全性、数据更新频率、数据共享范围等四个维度,具体选择建议见表1。注意,有些选项存在着重叠,用户可以根据当前的环境酌情考虑数据管理技术。

对于小数量、低安全性、不更新数据、不共享数据的工作流数据,建议采用人工管理的方式,将数据融入程序中。这样操作的理由在于,后两个数据管理技术需要依赖于外部的应用或者程序,一旦外界环境遭遇了不测情况,则数据将遭受损失,从而影响到工作流的正常运行。

对于中数据量或中安全性或低频更新数据或需小范围共享的工作量数据,在数据库不可获取的情况下,建议采用基于文件的管理技术。与人工管理方法相比,该方法将程序与数据分离,可以实现数据的外部操作,从而在一定程度上增加了数据的自由度和安全性。数据文件可独立地在同事之间共享,增加了便利性。

对于中大数据量或中高安全性或高频更新或大范围共享的工作流数据,建议采用基于数据库的管理技术。相对其他两种技术,该技术可以利用数据库管理系统提供的数据操作、数据安全性和事务管理等先进的数据管理方法,从而可实现以数据为中心的建模与管理,甚至可以帮助规范工作流程。

5 结语

本文简要分析了工作流中的人工管理、文件管理和数据库管理等三种主流数据管理技术的优缺点,并针对工作流编程的特点提出了以下选择建议:1)对于安全性和共享性要求不高、较少需要与他人合作、需与人共享结果的工作流,建议使用文件管理方法;2)对于安全性和共享性要求高、需多台电脑写作文完成的工作流,建议使用数据库管理方法。最后,建议个人用户提升数据安全意识,投入时间学习一定的数据库管理技术,合理使用数据库管理工作流数据,避免工作中不必要的数据损失。

参考文献:

[1] 肖宇.Python在数据库教学中的应用[J].电脑知识与技術,2020,16(6):152-153.

[2] 荆晓鹏.大数据时代高校学生管理工作的挑战及应对措施试析[J].轻工科技,2021,37(11):105-106.

[3] 李文琼.大数据时代背景下高校档案信息化建设探究[J].兰台内外,2021(28):1-3.

[4] 王珊,萨师煊.数据库系统概论[M].5版.北京:高等教育出版社,2014.

[5] 闵昭浩,杨卓凡.NoSQL数据库与关系型数据库对比[J].电子技术与软件工程,2021(14):199-201.

【通联编辑:李雅琪】

猜你喜欢
工作流数据管理编程
企业级BOM数据管理概要
定制化汽车制造的数据管理分析
海洋环境数据管理优化与实践
编程,是一种态度
CTCS-2级报文数据管理需求分析和实现
编程小能手
纺织机上诞生的编程
工作流在电力生产管理信息系统中的设计和应用