# huaweicloud-nosql-params-config-java
**Repository Path**: HuaweiCloudDeveloper/huaweicloud-nosql-params-config-java
## Basic Information
- **Project Name**: huaweicloud-nosql-params-config-java
- **Description**: GaussDB(for NoSQL)参数信息API调用示例,包含,查看指定实例的参数信息、修改需要重启生效的参数、查询指定实例的参数信息。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master-dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2022-10-19
- **Last Updated**: 2024-01-22
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 修改不需要重启的参数信息
## 版本说明
本示例配套的sdk版本为:3.1.5
## 1. 简介
云数据库 GeminiDB 是一款基于计算存储分离架构的分布式多模NoSQL数据库服务,在云计算平台高性能、高可用、高可靠、高安全、可弹性伸缩的基础上,提供了一键部署、备份恢复、监控报警等服务能力。云数据库 GeminiDB 目前包含GeminiDB Cassandra、GeminiDB Mongo、GeminiDB Influx和GeminiDB Redis四款产品,分别兼容Cassandra、MongoDB、InfluxDB和Redis主流NoSQL接口,并提供高读写性能,具有高性价比,适用于IoT、气象、互联网、游戏等领域。
## 2. 流程图

## 3. 前置条件
1.已 [注册](https://reg.huaweicloud.com/registerui/cn/register.html?locale=zh-cn#/register) 华为云,并完成 [实名认证](https://account.huaweicloud.com/usercenter/?region=cn-north-4#/accountindex/realnameauth) 。。
2.获取华为云开发工具包(sdk),您也可以查看安装java sdk。
3.已获取华为云账号对应的access key(ak)和secret access key(sk)。请在华为云控制台“我的凭证 > 访问密钥”页面上创建和查看您的ak/sk。具体请参见 [访问密钥](https://support.huaweicloud.com/usermanual-ca/zh-cn_topic_0046606340.html) 。
4.已具备开发环境 ,支持java jdk 1.8及其以上版本。
## 4. SDK获取和安装
您可以通过maven方式获取和安装sdk,首先需要在您的操作系统中下载并安装maven ,安装完成后您只需要在java项目的pom.xml文件中加入相应的依赖项即可。
具体的sdk版本号请参见 [sdk开发中心](https://sdkcenter.developer.huaweicloud.com?language=java) 。
```xml
com.huaweicloud.sdk
huaweicloud-sdk-gaussdbfornosql
3.1.5
```
## 5.关键代码片段
以下代码展示如何通过GeminiDB SDK修改不需要重启的参数
```java
public class ParamsConfigDemo {
private static final Logger logger = LoggerFactory.getLogger(ParamsConfigDemo.class.getName());
/**
* args[0] = ""
* args[1] = ""
* args[2] = ""
* args[3] = ""
*
* 认证用的ak和sk硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
* 本示例以ak和sk保存在环境变量中为例,运行本示例前请先在本地环境变量中设置环境变量 HUAWEICLOUD_SDK_AK 和 HUAWEICLOUD_SDK_SK
*
* @param args
*/
public static void main(String[] args) {
if (args.length != 4) {
logger.info("Illegal Arguments");
}
String iamEndpoint = args[0];
String endpoint = args[1];
String instanceId = args[2];
String regionId = args[3];
String ak = System.getenv("HUAWEICLOUD_SDK_AK");
String sk = System.getenv("HUAWEICLOUD_SDK_SK");
ICredential auth = new BasicCredentials()
.withIamEndpoint(iamEndpoint)
.withAk(ak)
.withSk(sk);
GaussDBforNoSQLClient client = GaussDBforNoSQLClient.newBuilder()
.withCredential(auth)
.withRegion(new Region(regionId, endpoint))
.build();
// 查询指定实例的参数信息
queryInstanceParamGroup(client, instanceId);
// 修改不需要重启失效的参数
Map values = new HashMap() {
{
put("concurrent_reads", "64");
}
};
updateInstanceParamGroup(client, instanceId, values);
// 查询指定实例参数信息
queryInstanceParamGroup(client, instanceId);
}
private static ShowInstanceConfigurationResponse queryInstanceParamGroup(GaussDBforNoSQLClient client, String instanceId) {
ShowInstanceConfigurationRequest request = new ShowInstanceConfigurationRequest();
request.setInstanceId(instanceId);
ShowInstanceConfigurationResponse response = new ShowInstanceConfigurationResponse();
try {
response = client.showInstanceConfiguration(request);
logger.info(response.toString());
} catch (ConnectionException e) {
logger.error("ConnectionException", e);
} catch (RequestTimeoutException e) {
logger.error("RequestTimeoutException ", e);
} catch (ServiceResponseException e) {
logger.error("httpStatusCode: {}, errorCode: {}, errorMsg: {}", e.getHttpStatusCode(), e.getErrorCode(), e.getErrorMsg());
}
return response;
}
private static void updateInstanceParamGroup(GaussDBforNoSQLClient client, String instanceId, Map values) {
UpdateInstanceConfigurationRequest request = new UpdateInstanceConfigurationRequest();
UpdateInstanceConfigurationRequestBody body = new UpdateInstanceConfigurationRequestBody();
body.setValues(values);
request.setInstanceId(instanceId);
request.withBody(body);
try {
UpdateInstanceConfigurationResponse response = client.updateInstanceConfiguration(request);
logger.info(response.toString());
} catch (ConnectionException e) {
logger.error("ConnectionException", e);
} catch (RequestTimeoutException e) {
logger.error("RequestTimeoutException ", e);
} catch (ServiceResponseException e) {
logger.error("httpStatusCode: {}, errorCode: {}, errorMsg: {}", e.getHttpStatusCode(), e.getErrorCode(), e.getErrorMsg());
}
}
}
```
## 6.返回结果示例
* 查看实例参数组详情(showInstanceConfiguration)接口返回值:
```
{
"datastore_version_name":"3.11",
"datastore_name":"cassandra",
"created":"2022-06-22T08:07:59+0000",
"updated":"2022-08-02T03:33:11+0000",
"configuration_parameters":[
{
"name":"authenticator",
"value":"PasswordAuthenticator",
"restart_required":true,
"readonly":true,
"value_range":"PasswordAuthenticator|AllowAllAuthenticator",
"type":"string",
"description":"Backend username verification."
},
{
"name":"authorizer",
"value":"CassandraAuthorizer",
"restart_required":true,
"readonly":true,
"value_range":"AllowAllAuthorizer|CassandraAuthorizer",
"type":"string",
"description":"Backend user authorization verification."
},
{
"name":"batch_size_fail_threshold_in_kb",
"value":"5000",
"restart_required":true,
"readonly":true,
"value_range":"1-10000",
"type":"integer",
"description":"When the size of a batch processing request exceeds the threshold, the request fails to be processed."
},
{
"name":"batch_size_warn_threshold_in_kb",
"value":"5",
"restart_required":false,
"readonly":false,
"value_range":"1-1000",
"type":"integer",
"description":"When the size of batch processing requests exceeds the threshold, logs of the WARN level are printed."
},
{
"name":"cas_contention_timeout_in_ms",
"value":"1000",
"restart_required":false,
"readonly":false,
"value_range":"100-100000",
"type":"integer",
"description":"Timeout duration for the coordinator to wait for CAS operations to complete."
},
{
"name":"concurrent_alter_schema_forwards",
"value":"8",
"restart_required":true,
"readonly":true,
"value_range":"4-512",
"type":"integer",
"description":"Number of threads for concurrently executing the ALTER statement."
},
{
"name":"concurrent_counter_writes",
"value":"32",
"restart_required":true,
"readonly":true,
"value_range":"4-512",
"type":"integer",
"description":"Number of concurrent write threads of the counter."
},
{
"name":"concurrent_materialized_view_writes",
"value":"32",
"restart_required":true,
"readonly":true,
"value_range":"4-512",
"type":"integer",
"description":"Number of concurrent write threads for materialized views."
},
{
"name":"concurrent_reads",
"value":"32",
"restart_required":true,
"readonly":true,
"value_range":"4-512",
"type":"integer",
"description":"Number of concurrent read threads. The default value depends on the CPU specifications."
},
{
"name":"concurrent_writes",
"value":"16",
"restart_required":true,
"readonly":true,
"value_range":"4-512",
"type":"integer",
"description":"Number of concurrent write threads. The default value depends on the CPU specifications."
},
{
"name":"counter_write_request_timeout_in_ms",
"value":"5000",
"restart_required":false,
"readonly":false,
"value_range":"100-100000",
"type":"integer",
"description":"Timeout duration for the coordinator to wait for counter write operations to complete."
},
{
"name":"range_request_timeout_in_ms",
"value":"10000",
"restart_required":false,
"readonly":false,
"value_range":"100-100000",
"type":"integer",
"description":"Timeout duration for the coordinator to wait for range operations to complete."
},
{
"name":"read_request_timeout_in_ms",
"value":"5000",
"restart_required":false,
"readonly":false,
"value_range":"100-100000",
"type":"integer",
"description":"Timeout duration for the coordinator to wait for read operations to complete."
},
{
"name":"request_timeout_in_ms",
"value":"10000",
"restart_required":false,
"readonly":false,
"value_range":"100-100000",
"type":"integer",
"description":"Timeout duration for the coordinator to wait for the completion of other operations except read, write, range, counter write, CAS, and truncate."
},
{
"name":"role_manager",
"value":"CassandraRoleManager",
"restart_required":true,
"readonly":true,
"value_range":"CassandraRoleManager",
"type":"string",
"description":"Inter-role authorization management."
},
{
"name":"slow_query_log_timeout_in_ms",
"value":"500",
"restart_required":true,
"readonly":false,
"value_range":"1-60000",
"type":"integer",
"description":"Slow query time threshold, in milliseconds."
},
{
"name":"tombstone_failure_threshold",
"value":"100000",
"restart_required":false,
"readonly":false,
"value_range":"10-10000000",
"type":"integer",
"description":"If the number of tombstones in a query result exceeds the threshold, the query fails."
},
{
"name":"tombstone_warn_threshold",
"value":"1000",
"restart_required":false,
"readonly":false,
"value_range":"10-100000",
"type":"integer",
"description":"When the number of tombstones in a query result exceeds the threshold, logs of the WARN level are printed."
},
{
"name":"truncate_request_timeout_in_ms",
"value":"60000",
"restart_required":false,
"readonly":false,
"value_range":"100-100000",
"type":"integer",
"description":"Timeout duration for the coordinator to wait for truncate operations to complete."
},
{
"name":"unlogged_batch_across_partitions_warn_threshold",
"value":"10",
"restart_required":false,
"readonly":false,
"value_range":"1-10000",
"type":"integer",
"description":"When the number of partitions for batch processing exceeds the threshold, logs of the WARN level are printed."
},
{
"name":"write_request_timeout_in_ms",
"value":"2000",
"restart_required":false,
"readonly":false,
"value_range":"100-100000",
"type":"integer",
"description":"Timeout duration for the coordinator to wait for write operations to complete."
}
]
}
```
* 修改实例不需要重启的参数组 (updateInstanceConfiguration)接口返回值:
```
{
jobId: f44ecd0f-1763-431c-8dd9-1fabb7e811e5
restartRequired: false
}
```
## 7.参考链接
请见 [获取指定实例的参数](https://support.huaweicloud.com/intl/zh-cn/api-nosql/nosql_06_0007.html) 您可以在 [API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=GaussDBforNoSQL&api=ShowInstanceConfiguration) 中直接运行调试该接口。
请见 [修改指定实例的参数](https://support.huaweicloud.com/intl/zh-cn/api-nosql/nosql_06_0006.html) 您可以在 [API Explorer](https://apiexplorer.developer.huaweicloud.com/apiexplorer/doc?product=GaussDBforNoSQL&api=UpdateInstanceConfiguration) 中直接运行调试该接口。
## 修订记录
| 发布日期 | 文档版本 | 修订说明 |
|:----------:| :------: | :----------: |
| 2022-10-25 | 1.0 | 文档首次发布 |