全部产品
分析型数据库

8.1 业务系统连接并进行查询

更新时间:2017-06-07 13:26:11   分享:   

使用jdbc odbc php python R-Mysql等连接分析型数据库的例子和注意事项介绍,以及流控、retry链接、异常处理等方法。

分析型数据库集群系统部署在阿里云环境中,用户在部署业务应用系统时,尽可能保证业务系统与阿里云环境的网络联通性,如购买阿里云ECS主机( https://www.aliyun.com/product/ecs/ )作为业务系统的服务器。

JDBC直接连接分析型数据库

最简单直接的连接并访问分析型数据库的方式是通过JDBC,分析型数据库支持MySQL自带的客户端以及大部分版本的mysql-jdbc驱动。

支持的mysql jdbc驱动版本号

  • 5.0系列: 5.0.2,5.0.3,5.0.4,5.0.5,5.0.7,5.0.8
  • 5.1系列: 5.1.1,5.1.2,5.1.3,5.1.4,5.1.5,5.1.6,5.1.7,5.1.8,5.1.11,5.1.12,5.1.13,5.1.14,5.1.15,5.1.16,5.1.17,5.1.18,5.1.19,5.1.20,5.1.21,5.1.22,5.1.23,5.1.24,5.1.25,5.1.26,5.1.27,5.1.28,5.1.29,5.1.31
  • 5.4系列
  • 5.5系列

Java程序中,将合适的mysql-jdbc驱动包(mysql-connector-java-x.x.x.jar)加入CLASSPATH中,通过以下示例程序就能连接并访问分析型数据库。通过该JDBC方式直连分析型数据库时,和直连MySQL类似,需注意在使用完连接并不准备进行复用的情况下,需要释放连接资源。 用户根据具体情况,设置${url}, ${my_access_key_id}, ${my_access_key_secret}和${query}值。


        Connection connection = null;
        Statement statement = null;
        ResultSet rs = null;
        try {
            Class.forName("com.mysql.jdbc.Driver");
            String url = "jdbc:mysql://mydbname-xxxx.ads-hz.aliyuncs.com:5544/my_ads_db?useUnicode=true&characterEncoding=UTF-8";

            Properties connectionProps = new Properties();
            connectionProps.put("user", "my_access_key_id");
            connectionProps.put("password", "my_access_key_secret");

            connection = DriverManager.getConnection(url, connectionProps);
            statement = connection.createStatement();

            String query = "select count(*) from information_schema.tables";
            rs = statement.executeQuery(query);

            while (rs.next()) {
                System.out.println(rs.getObject(1));
            }

        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

通过JDBC连接池连接分析型数据库

通过JDBC连接池来连接分析型数据库是不错的选择,在1.5章节中,已经演示了通过连接池Druid连接分析型数据库的方式,请参考。

通过PHP连接分析型数据库

在1.5章节中,已经演示了在PHP应用中连接分析型数据库的方式,请参考。

关于负载均衡

用户在创建数据库(章节3.1)时,分析型数据库会根据用户指定的服务参数,为用户在分析型数据库集群中分配特定数量的前端服务机,这些机器对用户透明,用户得到的是访问该数据库的URL(例如:mydbname-xxxx.ads-hz.aliyuncs.com:5544,在控制台中的连接信息中获取),分析型数据库集群自己使用阿里云负载均衡产品SLB( http://www.aliyun.com/product/slb )来对访问请求进行负载均衡,用户无需关心访问分析型数据库时的负载均衡策略。 若用户的业务应用自己想采用一定的负载均衡方案,可以参考 http://www.aliyun.com/product/slb

关于重试以及异常处理

网络环境下连接和使用分析型数据库,从业务应用的角度来看,使用适当的重试和异常处理机制是保证业务应用高可用性的手段之一。 无论是通过JDBC直连、JDBC连接池、PHP,还是Python等方式连接分析型数据库,出现连接连接异常时,应用均可采用适当的重试机制来保证连接可用性。在海量数据并发处理任务量大的情况下,偶尔在查询过程中出现异常时,也可采用适当的重试机制来重发查询。

本文导读目录
本文导读目录
以上内容是否对您有帮助?