开发者社区> 问答> 正文

在应用中如何连接和使用分析型数据库?


首次成功导入数据到分析型数据库后,我们便希望我们的应用系统能够连接到分析型数据库来进行数据查询。分析型数据库可以通过任何支持 5.1.x 5.4.x5.6.x协议的客户端进行连接。连接所使用的域名和端口号可以在iDB Cloud的右上角进行查看。连接使用的用户名和密码为用户在阿里云的AccessKey,可以在 https://i.aliyun.com/access_key/查看和管理。其中Access Key ID为用户名,Access Key Secret为密码(分析型数据库承诺不会保存用户的Access Key信息)。
若需要使用阿里云访问控制(RAM)子账号连接分析型数据库,请参阅使用手册的8.6节。

在PHP中连接分析型数据库


在PHP环境下,假设我们已经安装好了php-mysql5.1.x模块(Windows下为php_MySQL.dll),那么我们新建一个ads_conn.php,内容如下:

  1. $ads_server_name="mydbname-xxxx.ads-cn-hangzhou-1.aliyuncs.com "; //数据库的连接url,请在控制台中的连接信息中获取    
  2. $ads_username="my_access_key_id"; // 连接数据库用户名    
  3. $ads_password="my_access_key_secret"; // 连接数据库密码    
  4. $ads_database="my_ads_db"; // 数据库的名字
  5. $ads_port=3003; //数据库的端口号,请在控制台中的连接信息中获取      
  6. // 连接到数据库    
  7. $ads_conn=mysqli_connect($ads_server_name, $ads_username,  $ads_password, $ads_database, $ads_port);

执行查询时,可以使用:
  1. $strsql="SELECT user_id FROM my_ads_db.my_first_table limit 20;";     $result=mysqli_query($ads_conn, $strsql);    
  2. while($row = mysqli_fetch_array($result)) {
  3.   echo $row["user_id"] ; //user_id为列名
  4. }

上述代码即可取出任意十条记录的user_id并打印出。注意分析型数据库在数据查询中是不支持SELECT *方式查询所有列的。

在JAVA中连接分析型数据库


通常,在JAVA中,我们通过连接池来使用分析型数据库。在这里我们以国产的高性能连接池Druid为例来演示连接分析型数据库的方式。
  1. import com.alibaba.druid.pool.*;      
  2. DruidDataSource dataSource = new DruidDataSource();    
  3. dataSource.setDriverClassName("com.mysql.jdbc.Driver");    
  4. dataSource.setUsername("my_access_key_id");      
  5. dataSource.setPassword("my_access_key_secret");      
  6. dataSource.setUrl("jdbc:mysql://mydbname-xxxx.ads-hz.aliyuncs.com:5544/my_ads_db");    
  7. // 连接数配置      
  8. dataSource.setInitialSize(5);      
  9. dataSource.setMinIdle(1);      
  10. dataSource.setMaxActive(10);      
  11. // 启用监控统计功能      
  12. dataSource.setFilters("stat");    
  13. // for mysql      
  14. dataSource.setPoolPreparedStatements(false);    
  15. // 使用心跳语句检测空闲连接    
  16. dataSource.setValidationQuery('show status like "%Service_Status%";');    
  17. dataSource.setTestWhileIdle(true);

如上,需要注意的是,若是在任何语言中需要使用心跳SQL来进行分析型数据库服务状态检测,请使用 show status like“%Service_Status%” 语句,若返回一行两列且第二列为1,则分析型数据库服务正常。

展开
收起
nicenelly 2017-10-31 11:21:32 1809 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

更多
新氧云原生全栈数仓最佳实践 立即下载
离线实时一体化数仓与湖仓一体—云原生大数据平台的持续演进 立即下载
企业大数据平台下数仓架构 立即下载