【发布时间】:2014-03-07 06:27:44
【问题描述】:
首先我的问题是:是否有任何标准/通用方法来实现维护和更新 MySQL 数据库的软件包?
我是一名本科生研究助理,我的任务是创建一个 cron 作业来更新我们大学的一个内部生物信息学数据库。
我没有建立在完成工作各个方面的单一二进制文件上,而是将问题划分为子任务并编写了一些 python/c++ 模块来处理不同的任务,如下面的管道中所列:
-
查询远程数据库以获取更新文件列表并返回给定时间间隔的结果(每月更新文件/每周/每天);
- 在 python 中实现的模块。更新文件的 URL 输出到标准输出
-
读取更新文件的相对 URL 并下载到本地目录
- 在 python 中实现的模块
-
解压缩新文件的每个存档
- 作为 bash 脚本实现
-
将文件解析为 CSV 格式
- 用 C++ 实现的模块
-
运行 MySQL 查询以将 CSV 文件插入数据库
- 显然只是一个 bash 脚本
我不确定如何将这些模块组合到一个可以轻松移动到另一台机器的包中,比如如果我们当前的服务器空间不足并且需要将数据库复制到另一个文件系统(它是之前已经发生过一次)。
我的第一个想法是创建一个 bash 脚本,将所有这些模块通过管道连接在一起,因为它们都使用标准输入/标准输出进行操作,但这似乎是一种奇怪的做事方式。
或者,我可以将我的 C++ 代码编写为 python 扩展,将所有这些脚本打包在一起,然后只编写一个 python 文件来为我工作。
我应该使用包管理器以便我的代码可以轻松地安装在不同的机器上吗?包含 makefile 的整个更新程序的简单 zip 存档就足够了吗?
我对数据库管理非常陌生,并且在分发软件方面没有丰富的经验,但我想做好这个项目。提前感谢您的帮助。
【问题讨论】:
-
实际上,通过管道或套接字进行进程间通信是 UNIX 中用于将简单程序组合成更复杂应用程序的一种非常标准的范例。
标签: mysql database unix software-packaging