Vertica 集成 CodeNOW¶
概述¶
CodeNOW 是一个云原生 DevOps 价值流交付平台,帮助管理整个开发生命周期。任何技能水平的开发者都可以使用 CodeNOW 开发微服务架构的应用。
测试环境¶
| 组件 | 版本 |
|---|---|
| CodeNOW | 6.7 |
| Vertica JDBC Driver | 11.1.0(从 Maven Central Repository 导入) |
| Vertica | Analytical Database 11.1.0 |
创建 CodeNOW 项目并连接到 Vertica¶
创建应用¶
- 使用邮件中的链接登录演示环境。
- 点击 Create New Application。
- 提供应用名称和描述,从 Production Environment 下拉选择
demo-env,点击 Confirm。
创建组件¶
- 在 Create Component 页面,输入组件名称和描述。
- 在 Setup your Stack 部分:
- 选择 Standard stack
- Language:Java
- Build Tool:MAVEN
- Framework:Blank
- 点击 Confirm。
添加 Vertica JDBC 依赖¶
- 在 BackendComponent 页面,向下滚动到 Clone your Repository 部分,获取 GitLab 中的应用代码链接。
- 导航到 GitLab 链接查看生成的引导代码。
- 编辑
pom.xml,添加以下依赖:
<dependency>
<groupId>com.vertica.jdbc</groupId>
<artifactId>vertica-jdbc</artifactId>
<version>11.1.0-0</version>
</dependency>
编写应用代码¶
编辑 src/main/java/org/example/service/Application.java,替换为以下代码以执行查询并以 JSON 格式返回 Vertica 结果:
package org.example.service;
import io.javalin.Javalin;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.SQLInvalidAuthorizationSpecException;
import java.sql.SQLTransientConnectionException;
import java.util.Properties;
import org.json.simple.JSONObject;
import org.json.simple.JSONArray;
public class Application {
public static void main(String[] args) throws IOException {
Logger logger = LoggerFactory.getLogger(Application.class);
logger.info("Hello World!");
int serverPort;
if (System.getenv("SERVER_PORT") != null) {
serverPort = Integer.parseInt(System.getenv("SERVER_PORT"));
} else {
serverPort = 7000;
}
Javalin app = Javalin.create().start(serverPort);
app.get("/", ctx -> ctx.result("Hello World"));
app.get("/health", ctx -> ctx.result("OK"));
app.get("/vertica_storeschema_object", ctx -> {
Properties myProp = new Properties();
myProp.put("user", "codenow_user");
myProp.put("password", "<dbadmin_pwd>");
myProp.put("loginTimeout", "35");
try {
Connection conn = DriverManager.getConnection(
"jdbc:vertica://<Vertica_DB_IP>:5433/<Vertica_DB_Name>", myProp);
logger.info("Connected");
java.sql.Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(
"SELECT store_city, store_region FROM store.store_dimension");
JSONObject records = new JSONObject();
JSONArray array = new JSONArray();
while (rs.next()) {
JSONObject single_record = new JSONObject();
single_record.put("store_city", rs.getString("store_city"));
single_record.put("store_region", rs.getString("store_region"));
array.add(single_record);
}
conn.close();
records.put("store_data", array);
ctx.json(records);
} catch (SQLTransientConnectionException connException) {
System.out.print("Network connection issue: " + connException.getMessage());
} catch (SQLInvalidAuthorizationSpecException authException) {
System.out.print("Could not log into database: " + authException.getMessage());
} catch (SQLException e) {
e.printStackTrace();
}
});
}
}
构建和部署¶
- 导航到 CodeNOW 仪表盘,点击已创建的应用查看详情。
- 在 Components 部分,点击 Build 构建 BackendComponent。
- 在 Build Component 窗口,选择 Release Build,输入版本号,选择 Next Major(首次主版本),点击 Confirm。
- 在 Build History 页面查看构建进度。
- 构建成功后,在应用详情窗口点击 Create New Application package。
- 输入版本号和标签,选择要打包的版本,点击 Confirm。
- 在 Deployment configurations 中,点击 Create new Configuration:
- 从 Select Environment 下拉选择 demo-env
- 选择要部署的应用包
- 点击 Confirm
- 选择部署目标、部署配置、分配域和运行时配置,或使用默认值,点击 Deploy。
- 部署成功后,在 Deployed Applications 部分可查看部署状态。
- 点击 Open in Browser,在 URL 后追加
/vertica_storeschema_object以 JSON 端点形式查看 Vertica 查询结果。
参考¶
原文来源:https://www.vertica.com/kb/codeNOW_TE/Content/Partner/codeNOW_TE.htm