开发者社区> 问答> 正文

分析型数据库如何进行业务系统连接并进行查询?(2)



带重试的JDBC样例程序片段

  1. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]final[backcolor=transparent] [backcolor=transparent]int[backcolor=transparent] MAX_QUERY_RETRY_TIMES [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]3[backcolor=transparent];
  2. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]Connection[backcolor=transparent] conn [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent];
  3. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]Statement[backcolor=transparent] statement [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent];
  4. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]ResultSet[backcolor=transparent] rs [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent];
  5. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] main[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent][][backcolor=transparent] args[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]ClassNotFoundException[backcolor=transparent] [backcolor=transparent]{
  6. [backcolor=transparent]    [backcolor=transparent]String[backcolor=transparent] yourDB [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"user_db"[backcolor=transparent];
  7. [backcolor=transparent]    [backcolor=transparent]String[backcolor=transparent] username [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"my_access_key_id"[backcolor=transparent];
  8. [backcolor=transparent]    [backcolor=transparent]String[backcolor=transparent] password [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"my_access_key_secret"[backcolor=transparent];
  9. [backcolor=transparent]    [backcolor=transparent]Class[backcolor=transparent].[backcolor=transparent]forName[backcolor=transparent]([backcolor=transparent]"com.mysql.jdbc.Driver"[backcolor=transparent]);
  10. [backcolor=transparent]    [backcolor=transparent]String[backcolor=transparent] url [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"jdbc:mysql://mydbname.ads-hz.aliyuncs.com:5544/"[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] yourDB [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]"?useUnicode=true&characterEncoding=UTF-8"[backcolor=transparent];
  11. [backcolor=transparent]    [backcolor=transparent]Properties[backcolor=transparent] connectionProps [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]new[backcolor=transparent] [backcolor=transparent]Properties[backcolor=transparent]();
  12. [backcolor=transparent]    connectionProps[backcolor=transparent].[backcolor=transparent]put[backcolor=transparent]([backcolor=transparent]"user"[backcolor=transparent],[backcolor=transparent] username[backcolor=transparent]);
  13. [backcolor=transparent]    connectionProps[backcolor=transparent].[backcolor=transparent]put[backcolor=transparent]([backcolor=transparent]"password"[backcolor=transparent],[backcolor=transparent] password[backcolor=transparent]);
  14. [backcolor=transparent]    [backcolor=transparent]String[backcolor=transparent] query [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]"select id from test4dmp.test limit 10"[backcolor=transparent];
  15. [backcolor=transparent]    [backcolor=transparent]int[backcolor=transparent] retryTimes [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]0[backcolor=transparent];
  16. [backcolor=transparent]    [backcolor=transparent]while[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]retryTimes [backcolor=transparent]<[backcolor=transparent] MAX_QUERY_RETRY_TIMES[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  17. [backcolor=transparent]        [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  18. [backcolor=transparent]            getConn[backcolor=transparent]([backcolor=transparent]url[backcolor=transparent],[backcolor=transparent] connectionProps[backcolor=transparent]);
  19. [backcolor=transparent]            execQuery[backcolor=transparent]([backcolor=transparent]query[backcolor=transparent]);
  20. [backcolor=transparent]            [backcolor=transparent]break[backcolor=transparent];[backcolor=transparent] [backcolor=transparent]// Query execution successfully, break out.
  21. [backcolor=transparent]        [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]SQLException[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  22. [backcolor=transparent]            [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]out[backcolor=transparent].[backcolor=transparent]println[backcolor=transparent]([backcolor=transparent]"Met SQL exception: "[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] e[backcolor=transparent].[backcolor=transparent]getMessage[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]", then go to retry task ..."[backcolor=transparent]);
  23. [backcolor=transparent]            [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  24. [backcolor=transparent]                [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]conn [backcolor=transparent]==[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent] [backcolor=transparent]||[backcolor=transparent] conn[backcolor=transparent].[backcolor=transparent]isClosed[backcolor=transparent]())[backcolor=transparent] [backcolor=transparent]{
  25. [backcolor=transparent]                    retryTimes[backcolor=transparent]++;
  26. [backcolor=transparent]                [backcolor=transparent]}
  27. [backcolor=transparent]            [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]SQLException[backcolor=transparent] e1[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  28. [backcolor=transparent]                [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]conn [backcolor=transparent]!=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  29. [backcolor=transparent]                    [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  30. [backcolor=transparent]                        conn[backcolor=transparent].[backcolor=transparent]close[backcolor=transparent]();
  31. [backcolor=transparent]                    [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]SQLException[backcolor=transparent] e2[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  32. [backcolor=transparent]                        e[backcolor=transparent].[backcolor=transparent]printStackTrace[backcolor=transparent]();
  33. [backcolor=transparent]                    [backcolor=transparent]}
  34. [backcolor=transparent]                [backcolor=transparent]}
  35. [backcolor=transparent]            [backcolor=transparent]}
  36. [backcolor=transparent]        [backcolor=transparent]}
  37. [backcolor=transparent]    [backcolor=transparent]}
  38. [backcolor=transparent]    [backcolor=transparent]// Clear connection resource.
  39. [backcolor=transparent]    closeResource[backcolor=transparent]();
  40. [backcolor=transparent]}
  41. [backcolor=transparent]/**
  42. [backcolor=transparent] * Get connection.
  43. [backcolor=transparent] *
  44. [backcolor=transparent] * @param url
  45. [backcolor=transparent] * @param connectionProps
  46. [backcolor=transparent] * @throws SQLException
  47. [backcolor=transparent] */
  48. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] getConn[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent] url[backcolor=transparent],[backcolor=transparent] [backcolor=transparent]Properties[backcolor=transparent] connectionProps[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]SQLException[backcolor=transparent] [backcolor=transparent]{
  49. [backcolor=transparent]    conn [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]DriverManager[backcolor=transparent].[backcolor=transparent]getConnection[backcolor=transparent]([backcolor=transparent]url[backcolor=transparent],[backcolor=transparent] connectionProps[backcolor=transparent]);
  50. [backcolor=transparent]}
  51. [backcolor=transparent]/**
  52. [backcolor=transparent] * Query task execution logic.
  53. [backcolor=transparent] *
  54. [backcolor=transparent] * @param sql
  55. [backcolor=transparent] * @throws SQLException
  56. [backcolor=transparent] */
  57. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] execQuery[backcolor=transparent]([backcolor=transparent]String[backcolor=transparent] sql[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]throws[backcolor=transparent] [backcolor=transparent]SQLException[backcolor=transparent] [backcolor=transparent]{
  58. [backcolor=transparent]    [backcolor=transparent]Statement[backcolor=transparent] statement [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent];
  59. [backcolor=transparent]    [backcolor=transparent]ResultSet[backcolor=transparent] rs [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent];
  60. [backcolor=transparent]    statement [backcolor=transparent]=[backcolor=transparent] conn[backcolor=transparent].[backcolor=transparent]createStatement[backcolor=transparent]();
  61. [backcolor=transparent]    [backcolor=transparent]for[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]int[backcolor=transparent] i [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]0[backcolor=transparent];[backcolor=transparent] i [backcolor=transparent]<[backcolor=transparent] [backcolor=transparent]10[backcolor=transparent];[backcolor=transparent] i[backcolor=transparent]++)[backcolor=transparent] [backcolor=transparent]{
  62. [backcolor=transparent]        [backcolor=transparent]long[backcolor=transparent] startTs [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]currentTimeMillis[backcolor=transparent]();
  63. [backcolor=transparent]        rs [backcolor=transparent]=[backcolor=transparent] statement[backcolor=transparent].[backcolor=transparent]executeQuery[backcolor=transparent]([backcolor=transparent]sql[backcolor=transparent]);
  64. [backcolor=transparent]        [backcolor=transparent]int[backcolor=transparent] cnt [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]0[backcolor=transparent];
  65. [backcolor=transparent]        [backcolor=transparent]while[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]rs[backcolor=transparent].[backcolor=transparent]next[backcolor=transparent]())[backcolor=transparent] [backcolor=transparent]{
  66. [backcolor=transparent]            cnt[backcolor=transparent]++;
  67. [backcolor=transparent]            [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]out[backcolor=transparent].[backcolor=transparent]println[backcolor=transparent]([backcolor=transparent]rs[backcolor=transparent].[backcolor=transparent]getObject[backcolor=transparent]([backcolor=transparent]1[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]" "[backcolor=transparent]);
  68. [backcolor=transparent]        [backcolor=transparent]}
  69. [backcolor=transparent]        [backcolor=transparent]long[backcolor=transparent] endTs [backcolor=transparent]=[backcolor=transparent] [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]currentTimeMillis[backcolor=transparent]();
  70. [backcolor=transparent]        [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]out[backcolor=transparent].[backcolor=transparent]println[backcolor=transparent]([backcolor=transparent]"Elapse Time: "[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]endTs [backcolor=transparent]-[backcolor=transparent] startTs[backcolor=transparent]));
  71. [backcolor=transparent]        [backcolor=transparent]System[backcolor=transparent].[backcolor=transparent]out[backcolor=transparent].[backcolor=transparent]println[backcolor=transparent]([backcolor=transparent]"Row count: "[backcolor=transparent] [backcolor=transparent]+[backcolor=transparent] cnt[backcolor=transparent]);
  72. [backcolor=transparent]        [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  73. [backcolor=transparent]            [backcolor=transparent]Thread[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]160000[backcolor=transparent]);
  74. [backcolor=transparent]        [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]InterruptedException[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  75. [backcolor=transparent]            e[backcolor=transparent].[backcolor=transparent]printStackTrace[backcolor=transparent]();
  76. [backcolor=transparent]        [backcolor=transparent]}
  77. [backcolor=transparent]    [backcolor=transparent]}
  78. [backcolor=transparent]}
  79. [backcolor=transparent]/**
  80. [backcolor=transparent] * Close connection resource.
  81. [backcolor=transparent] */
  82. [backcolor=transparent]public[backcolor=transparent] [backcolor=transparent]static[backcolor=transparent] [backcolor=transparent]void[backcolor=transparent] closeResource[backcolor=transparent]()[backcolor=transparent] [backcolor=transparent]{
  83. [backcolor=transparent]    [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]rs [backcolor=transparent]!=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  84. [backcolor=transparent]        [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  85. [backcolor=transparent]            rs[backcolor=transparent].[backcolor=transparent]close[backcolor=transparent]();
  86. [backcolor=transparent]        [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]SQLException[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  87. [backcolor=transparent]            e[backcolor=transparent].[backcolor=transparent]printStackTrace[backcolor=transparent]();
  88. [backcolor=transparent]        [backcolor=transparent]}
  89. [backcolor=transparent]    [backcolor=transparent]}
  90. [backcolor=transparent]    [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]statement [backcolor=transparent]!=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  91. [backcolor=transparent]        [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  92. [backcolor=transparent]            statement[backcolor=transparent].[backcolor=transparent]close[backcolor=transparent]();
  93. [backcolor=transparent]        [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]SQLException[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  94. [backcolor=transparent]            e[backcolor=transparent].[backcolor=transparent]printStackTrace[backcolor=transparent]();
  95. [backcolor=transparent]        [backcolor=transparent]}
  96. [backcolor=transparent]    [backcolor=transparent]}
  97. [backcolor=transparent]    [backcolor=transparent]if[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]conn [backcolor=transparent]!=[backcolor=transparent] [backcolor=transparent]null[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  98. [backcolor=transparent]        [backcolor=transparent]try[backcolor=transparent] [backcolor=transparent]{
  99. [backcolor=transparent]            conn[backcolor=transparent].[backcolor=transparent]close[backcolor=transparent]();
  100. [backcolor=transparent]        [backcolor=transparent]}[backcolor=transparent] [backcolor=transparent]catch[backcolor=transparent] [backcolor=transparent]([backcolor=transparent]SQLException[backcolor=transparent] e[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]{
  101. [backcolor=transparent]            e[backcolor=transparent].[backcolor=transparent]printStackTrace[backcolor=transparent]();
  102. [backcolor=transparent]        [backcolor=transparent]}
  103. [backcolor=transparent]    [backcolor=transparent]}
  104. [backcolor=transparent]}


通过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等方式连接分析型数据库,出现连接连接异常时,应用均可采用适当的重试机制来保证连接可用性。在海量数据并发处理任务量大的情况下,偶尔在查询过程中出现异常时,也可采用适当的重试机制来重发查询

展开
收起
nicenelly 2017-10-27 13:13:26 1974 0
0 条回答
写回答
取消 提交回答
问答排行榜
最热
最新

相关电子书

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