| MySQL
和 PostgreSQL 是非常流行的开源数据库,IBM Bluemix 平台提供了相关服务,开发人员可以非常简单方便地在代码中进行访问。然而,Bluemix
缺乏简单易用的图形化管理工具,数据库管理较为复杂。经过一些调查,我们找到了三款 PHP 版本的轻量级数据库的
Web 管理工具:Adminer、phpMiniAdmin 和 dbkiss。测试表明,利用这些 Web
管理工具可以非常方便地管理 Bluemix 上的 MySQL 和 PostgreSQL 数据库服务,使用非常简单,响应速度快,而且只需要占用非常少的计算资源。
开发时您需要
1.一个 Bluemix 帐号
2.熟悉 Cloud Foundry 命令行工具
3.了解 PHP 语言(可选)
MySQL 和 PostgreSQL 是非常流行的开源数据库,被广泛应用到 Web 应用和移动应用开发的各个领域。Bluemix
对此提供了相应的服务,包括 ClearDB MySQL Database、mysql 和 postgresql
服务,开发人员不需要搭建任何的数据库,就可以非常方便地在应用中访问到 Bluemix 上的相应数据库服务。然而,Bluemix
提供的相关数据库管理工具比较复杂,使用起来不方便。
我们不想重新发明轮子来解决这个问题,事实上,已有很多开源的 MySQL 和 PostgreSQL 数据库
Web 管理工具,尤其是在 PHP 世界。您可能听说过 PHPMyAdmin,这是一款非常流行的 MySQL
的数据库管理工具,可以让管理人员通过 Web 方式管理 MySQL 数据库,然而,我们觉得 PHPMyAdmin
比较重量级,安装压缩包大小超过 8MB。我们希望找到一些轻量级的数据库 Web 管理工具,仅需要极少的计算资源(例如
128M 内存),就能够快速完成主要的数据库管理操作功能,比如表结构的创建更改和删除、数据的导入导出、SQL
语句执行等。
经过一些调查,我们找到了三款 PHP 版本的轻量级 MySQL 和 PostgreSQL 数据库的 Web
管理工具,Adminer,phpMiniAdmin 和dbkiss。经过一些小的改动,我们将这三款数据库管理工具成功部署到
Bluemix 上。测试表明,一个 128MB 内存的单实例运行时就可以支撑这些 Web 管理工具,管理数据库非常方便,响应速度很快,达到了期望的轻量级目标。
步骤 1:查看源代码和 PHP Buildpack 配置信息
可以在源代码处找到 Web 管理工具的所有代码和相关的 PHP Buildpack 配置文件。
Web 管理工具源代码
Adminer,phpMiniAdmin 和dbkiss这三款工具的源代码都只有一个文件,分别为 adminer-4.1.0.php、phpminiadmin.php
和 dbkiss.php,可以从源代码处找到,也可以从相应的网站下载。关于如何通过 PHP 语言实现 MySQL
和 PostgreSQL 数据库管理功能,请大家查看源代码。本文主要侧重于介绍如何部署和使用这些工具来管理数据库。
为了改善对 Bluemix 数据库服务的支持,对 dbkiss(dbkiss.php)做了如下改动,使其能够支持包含端口号的
PostgreSQL 数据库 URL 地址,Adminer 和 phpMiniAdmin 源代码未做改动。
// Support PostgreSQL server URL with port included $flag=strpos($db_server, ":"); if($flag== FALSE) { $conn = sprintf("host='%s' dbname='%s' user='%s' password='%s'", $db_server, $db_name, $db_user, $db_pass); } else { $db_host=substr($db_server, 0, $flag); $db_port=substr($db_server, $flag+1); $conn = sprintf("host='%s' port='%s' dbname='%s' user='%s' password='%s'", $db_host, $db_port, $db_name, $db_user, $db_pass); } |
PHP Buildpack 配置文件
PHP Buildpack 的配置文件是.bp-config/options.json,在本例中我们启用了
MySQL 和 PostgreSQL 的数据库驱动模块,即如下的("pgsql",
"mysql")。想要了解更多 PHP Buildpack 配置信息,请参考 https://github.com/dmikusa-pivotal/cf-php-build-pack/blob/master/docs/config.md。
{ "PHP_EXTENSIONS": ["mongo", "pgsql", "mysql", "zlib", "bz2", "curl", "mcrypt"] } |
步骤 2:部署 Web 管理工具
Bluemix 默认提供 Java Liberty、Node.js 和 Ruby 运行时,可以通过 Bring
Your Buildpack 方式支持其他多种运行时,PHP 就是其中非常热门的一种。社区也提供了相应的
Buildpack,例如本例中采用的就是 https://github.com/dmikusa-pivotal/cf-php-build-pack。
1.下载 Web 管理工具的源代码。
2.进入 dbadmin 目录,修改 manifest.yml 文件,将<your_app_name>改成您的应用的名字,在本例中为
dbadmin001。其中 memory 设置为 128M,可以按照需要修改。
--- applications: - name: <your_app_name> memory: 128M instances: 1 host: <your_app_name> buildpack: https://github.com/dmikusa-pivotal/cf-php-build-pack |
3.使用 cf 工具登录 Bluemix。
cf login -a https://api.ng.bluemix.net |
4.使用 cf 工具将应用部署到 Bluemix。
想了解更多 cf 工具使用信息,请参考https://www.ng.bluemix.net/docs/#cli/index.html。
5.通过 http://<your_app_name>.mybluemix.net
访问已部署的 Web 管理工具,在本例中是 http://dbadmin001.mybluemix.net。
注:完成一个 Web 管理工具的部署,可以同时管理多个应用中的 MySQL 和 PostgreSQL 数据库服务。如果您不想部署自己的数据库
Web 管理工具,您完全可以通过上文提到的已部署好的工具(http://dbadmin001.mybluemix.net)来管理您应用中所使用的数据库。
步骤 3:通过 VCAP_SERVICES 获取数据库访问信息
Web 管理工具部署完成之后,就可以开始测试连接相关的数据库。Web 管理工具可以非常方便地管理 Bluemix
上其他应用使用的 MySQL 和 PostgreSQL 数据库服务,只需要提供相应的 URL、数据库名、用户名和密码等信息。
在本例中,我们在 PHP Buildpack 上添加了 MySQL 和 PostgreSQL 数据库服务作为测试数据库。如果您已经在其他应用中添加了
MySQL 和 PostgreSQL 数据库服务,请跳过增加 MySQL 服务和 PostgreSQL
服务部分内容。
增加 MySQL 服务
1.使用 Bluemix 帐号登录Bluemix网站。
2.点击 Dashboard 页面上创建的应用。
3.点击 Add A Service。
4.在 Data Management 选项下选择 ClearDB MySQL
Database 或者 mysql 服务。
5.点击 Create。如果出现提示要重新启动应用,点击 OK。
增加 PostgreSQL 服务
1.使用 Bluemix 帐号登录Bluemix网站。
2.点击 Dashboard 页面上创建的应用。
3.点击 Add A Service。
4.在 Data Management 选项下选择 postgresql
服务。
5.点击 Create。如果出现提示要重新启动应用,点击 OK。
通过 VCAP_SERVICES 获取信息
1.使用 Bluemix 帐号登录Bluemix网站。
2.点击 Dashboard 页面上包含 MySQL 或 PostgreSQL
服务的应用。
3.点击所使用的 Buildpack 的名字,在本例中是 cf-php-build-pack。
4.在 Environment Variables 选项卡下可以找到
MySQL 或 PostgreSQL 服务的 VCAP_SERVICES 信息。
MySQL 数据库服务的数据格式如下:
"jdbcUrl": "jdbc:mysql://<user>:<password>@<db_url_with_port>/<db_name>" |
PostgreSQL 数据库服务的数据格式如下:
"uri": "postgres://<user>:<password>@<db_url_with_port>/<db_name>" |
其中<user>是用户名,<password>是密码,<db_url_with_port>是数据库的
URL 地址,包含端口号,<db_name>是数据库名。请记录这些信息,使用 Web 管理工具时需要用来作为登录信息提供。
步骤 4:通过 Web 管理工具访问数据库
访问 Web 管理工具地址,在本例中是 http://dbadmin001.mybluemix.net。
Adminer 工具
Adminer 工具支持 MySQL 和 PostgreSQL 数据库服务,并且支持多语言(包括中文),文件大小不到
400KB。在登录界面 System 选项可以选择 MySQL 和 PostgreSQL,输入上文提到的
VCAP_SERVICES 相关信息,登录到管理界面。图形化界面非常简单直观,如下图所示。
phpMiniAdmin 工具
phpMiniAdmin 工具只支持 MySQL 数据库服务,文件大小不到 50KB,可谓是非常之轻。在登录界面输入
VCAP_SERVICES 相关信息,登录到管理界面。只需要输入相关的 SQL 指令就可以非常方便地操作数据库,如下图所示。
Dbkiss 工具
dbkiss 工具支持 MySQL 和 PostgreSQL 数据库服务,文件大小不到 150KB,同样也是非常轻量级。选择数据库类型,输入
VCAP_SERVICES 相关信息登录到管理界面,就可以对数据库进行相关操作,如下图所示。
三种工具比较
总体而言,Adminer、phpMiniAdmin 和 dbkiss 这三款 Web 管理工具都非常之轻量级,能够很方便地对
MySQL 和 PostgreSQL 数据库进行管理,提供包括表结构的创建更改和删除、数据的导入导出、SQL
语句执行等主要数据库管理功能。尤其是 Adminer,提供很多图形化的菜单,不需要熟悉 SQL 语句就可以进行简单操作,而且还支持多语言,包括中文,简单易用。
当然,三种工具都能大大简化开发人员管理 Bluemix 上 MySQL 和 PostgreSQL 数据库服务的复杂度。所谓萝卜青菜,各有所爱,开发人员可以根据需要选择自己所喜爱数据库的管理工具,提高
Bluemix 上应用开发的效率。
总结
工欲善其事,必先利其器。在本文中,我们找到了三款开源的 PHP 版本的轻量级 MySQL 和 PostgreSQL
数据库的 Web 管理工具 , 经过一些小的改动,这些管理工具都能顺利地运行到 Bluemix 上。测试表明,使用这些工具可以大大降低开发人员管理
MySQL 和 PostgreSQL 数据库的难度,操作简单,响应速度快,而且只需占用非常少的计算资源。如果您的
Bluemix 应用中使用到了 MySQL 或 PostgreSQL 数据库服务,不妨一试。 |