This is an automated email from the ASF dual-hosted git repository.
critas pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iotdb-docs.git
The following commit(s) were added to refs/heads/main by this push:
new 1fc083d3 Add data security document (#721)
1fc083d3 is described below
commit 1fc083d3b0ebe4769a31a13849e90add5d9d5aca
Author: W1y1r <[email protected]>
AuthorDate: Fri Apr 25 16:30:26 2025 +0800
Add data security document (#721)
---
.../latest-Table/User-Manual/Data-Security.md | 332 +++++++++++++++++++++
.../UserGuide/latest/User-Manual/Data-Security.md | 332 +++++++++++++++++++++
2 files changed, 664 insertions(+)
diff --git a/src/zh/UserGuide/latest-Table/User-Manual/Data-Security.md
b/src/zh/UserGuide/latest-Table/User-Manual/Data-Security.md
new file mode 100644
index 00000000..c34c439e
--- /dev/null
+++ b/src/zh/UserGuide/latest-Table/User-Manual/Data-Security.md
@@ -0,0 +1,332 @@
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+# 数据安全
+
+## 1. 数据存储加密
+### 1.1 概述
+
+IoTDB 通过内置的透明加密引擎支持对数据文件 TsFile
的加密防护。启用加密功能后,即可实现数据在写入时实时加密、读取时无缝解密的全流程自动化处理,保证落盘文件数据安全。该过程完全融入数据库内核,业务应用无感知且无需进行任何代码改造或查询逻辑调整。
+
+### 1.2 参数配置
+
+IoTDB 配置文件` ${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties`中数据加密相关的参数如下所示:
+
+| 参数 | 注释
|
+| :----------------- |
:----------------------------------------------------------- |
+| `encrypt flag` | `true`为开启加密
|
+| `encrypt_key_path` | 文件导入的主密钥文件路径 |
+| `encrypt type` |
加密方式,例如"`org.apache.tsfile.encrypt.UNENCRYPTED`"。目前包括`AES128`和`UNENCRYPTED(SM4128)`。
|
+
+### 1.3 使用流程
+
+1. 获取 加密算法 Jar 包
+2. 将 Jar 包放置于 IoTDB 部署路径下 lib 文件夹中,即 `${IOTDB_HOME}/lib`
+3. 修改配置文件 ` ${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties`
+
+```Properties
+encrypt_flag=true
+encrypt_type=org.example.encrypt.AES128.AES128
+# encrypt_type=org.example.encrypt.SM4128.5M41283
+encrypt_key_path=......
+```
+
+4. 启动 IoTDB 即可使用对应加密算法对 TsFile 文件进行加密。
+
+### 1.4 注意事项
+
+- 开启加密后,对合并功能无影响。但不支持系统内存在与配置不同的加密文件,以免触发合并时发生冲突。
+- 开启加密后禁用 Pipe。
+- 开启加密后禁用 Load TsFile。
+- 建议对主密钥文件路径进行一定的保护,例如存放在特定权限才能访问的磁盘上等。
+
+## 2. 数据传输加密
+
+### 2.1 概述
+
+在某些客户的生产环境中,对于数据传输的安全性要求更高,希望有更安全的传输方式,因此扩展了 Datanode 的 Client RPC
以支持数据传输加密。以下是支持数据传输加密的方式:
+
+1. Thrift 除了普通模式与压缩模式外,增加 SSL 模式
+2. SessionPool(java) 与 Session(java) 支持使用 SSL 模式连接
+3. JDBC 支持使用 SSL 模式连接
+4. CLI 支持使用 SSL 模式连接
+5. 支持压缩模式
+6. 支持 RSA ECDSA 证书
+ 1. RSA证书:算法为RSA,签名算法为SHA256withRSA
+ 2. ECDSA 证书:算法为EC,签名算法为SHA256withECDSA
+
+### 2.2 Server端配置
+
+iotdb-datanode.properties 的默认配置,默认 ssl 是关闭状态。
+
+#### 2.2.1 默认配置示例:
+
+```Properties
+#iotdb-datanode.properties的默认配置
+.......
+# is SSL enabled
+#enable_thrift_ssl=false
+
+# SSL key store path
+#key_store_path=
+
+# SSL key store password
+#key_store_pwd=
+.......
+```
+
+#### 2.2.2 启用 ssl 配置步骤:
+
+1. 在iotdb/conf/iotdb-datanode.properties 配置文件中找到enable_thrift_ssl
配置默认是false,修改成true
+2. 修改key_store_path,添加生成的keystore路径
+3. 修改key_store_pwd为生成keystore的密码(秘钥库口令)
+4. 启动iotdb服务
+
+启用 ssl 配置后,需重启 iotdb 服务。同时,对应的使用到 dn_rpc_port 接口的客户端都需要使用 ssl 方式访问,否则不能访问。
+
+```SQL
+# is SSL enabled
+enable_thrift_ssl=true
+
+# SSL key store path
+key_store_path=/Users/keystore/.keystore
+
+# SSL key store password
+key_store_pwd=123456
+```
+
+### 2.3 Java SessionPool
+
+SessionPool 客户端配置ssl 需要配置useSSL、trustStore、trustStorePwd。
+
+- useSSL :是否开启ssl
+- trustStore :truststore的证书路径
+- trustStorePwd:truststore的证书密码(秘钥库口令)
+
+#### 2.3.1 代码示例:
+
+```SQL
+ sessionPool =
+ new SessionPool.Builder()
+ .nodeUrls(nodeUrls)
+.user("root")
+.password("root")
+.maxSize(3)
+.useSSL(true)
+.trustStore("/Users/key/.truststore")
+ .trustStorePwd("123456")
+ .build();
+```
+
+### 2.4 Java Session
+
+Session 客户端配置ssl 需要配置useSSL、trustStore、trustStorePwd 代码示例
+
+- useSSL :是否开启ssl
+- trustStore :truststore的证书路径
+- trustStorePwd:truststore的证书密码(秘钥库口令)
+
+#### 2.4.1 代码示例:
+
+```SQL
+session =
+ new Session.Builder()
+ .host(LOCAL_HOST)
+ .port(6667)
+ .username("root")
+ .password("root")
+ .version(Version.V_1_0)
+ .useSSL(true)
+ .trustStore("/Users/key/.truststore")
+ .trustStorePwd("123456")
+ .build();
+```
+
+### 2.5 JDBC
+
+jdbc 支持两种方式的ssl 配置,需要配置use_ssl、trust_store、trust_store_pwd。
+
+- use_ssl:是否开启ssl 默认是false
+- trust_store:truststore的证书路径
+- trust_store_pwd:truststore证书的密码(秘钥库口令)
+
+#### 2.5.1 代码示例:
+
+**方式一、在jdbc 的url 中配置使用**
+
+jdbc:iotdb://ip:port?use_ssl=true&trust_store_pwd=123456&trust_store=/Users/keystore/.truststore
+
+```SQL
+try (Connection connection =
+ DriverManager.getConnection(
+
"jdbc:iotdb://127.0.0.1:6667?version=V_1_0&use_ssl=true&trust_store_pwd=123456&trust_store=/Users/keystore/.truststore",
+ "root",
+ "root");Statement statement = connection.createStatement(){
+ // 代码逻辑
+
+ }catch (IoTDBSQLException e) {
+ logger.error("IoTDB Jdbc example error", e);
+ }
+```
+
+**方式二、使用Properties 来配置使用**
+
+```SQL
+java.util.Properties info = new Properties();
+info.setProperty("use_ssl", "true");
+info.setProperty("user", "root");
+info.setProperty("password", "root");
+info.setProperty("trust_store", "/Users/keystore/.truststore");
+info.setProperty("trust_store_pwd","123456");
+try (Connection connection =
+
DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667?version=V_1_0", info);
+ Statement statement = connection.createStatement()) {
+ // 代码逻辑
+
+}catch (IoTDBSQLException e) {
+ logger.error("IoTDB Jdbc example error", e);
+}
+```
+
+### 2.6 CLI
+
+```SQL
+./start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -usessl true -ts
/Users/keystore/.truststore -tpw 123456
+```
+
+### 2.7 SSL证书生成方式
+
+需安装 JDK、测试jdk8和jdk11生成证书未发现问题
+
+1. 创建私钥(.keystore)
+
+```SQL
+keytool -genkeypair -alias mykey -keyalg RSA -validity 7 -keystore .keystore
+```
+
+2. 导出对应的证书
+
+```SQL
+keytool -export -alias mykey -keystore .keystore -rfc -file certificate.cer
+```
+
+3. 将该证书导入到客户端信任库(公钥:.truststore)
+
+```SQL
+keytool -import -alias mykey -file certificate.cer -keystore .truststore
+```
+
+4. 创建 ECDSA 证书
+
+提示:FIPS标准规定使用 RSA、ECDSA 或 EdDSA(23年刚支持)
+
+```Bash
+keytool -genkeypair -alias mykey -keyalg EC -validity 7 -keystore aa.keystore
+
+keytool -export -alias mykey -keystore aa.keystore -rfc -file certificate.cer
+
+keytool -import -alias mykey -file certificate.cer -keystore aa.truststore
+```
+
+### 2.8 性能测试
+
+#### 2.8.1 插入测试
+
+使用session 的inserttablet方法,使用100 设备*100测点,每批 100 行 loop 100
次,测试3遍,三次插入使用不同的设备名字,测试环境:1c1d,mac 16G,Intel Core i5。
+
+**代码示例:**
+
+```Properties
+for(int i=0;i<100;i++){
+ insertTablet(i+"");
+}
+private static void insertTablet(String d) throws IoTDBConnectionException,
StatementExecutionException {
+ List<MeasurementSchema> schemaList = new ArrayList<>();
+ for(int i=1;i<=100;i++){
+ schemaList.add(new MeasurementSchema("s"+i, TSDataType.INT64));
+ }
+
+ Tablet tablet = new Tablet(ROOT_SG1_D1+d, schemaList, 100);
+ long timestamp = System.currentTimeMillis();
+
+ for (long row = 0; row < 100; row++) {
+ int rowIndex = tablet.rowSize++;
+ tablet.addTimestamp(rowIndex, timestamp);
+ for (int s = 0; s < 100; s++) {
+ long value = random.nextLong();
+ tablet.addValue(schemaList.get(s).getMeasurementId(), rowIndex, value);
+ }
+ if (tablet.rowSize == tablet.getMaxRowNumber()) {
+ session.insertTablet(tablet, true);
+ tablet.reset();
+ }
+ timestamp++;
+ }
+
+ if (tablet.rowSize != 0) {
+ session.insertTablet(tablet);
+ tablet.reset();
+ }
+
+}
+```
+
+**插入测试结果:**
+
+| | ssl(单位ms) | 非ssl(单位ms) |
+| ------ | ------------- | --------------- |
+| 第一次 | 13611 | 14099 |
+| 第二次 | 11938 | 10236 |
+| 第三次 | 13801 | 13663 |
+
+**测试结论:**
+
+根据ssl 三次取平均值为13117ms、非ssl取平均值12666ms,综合测试结果可以看出非ssl 插入速度略快ssl(`3.5%`)
+
+#### 2.8.2 查询测试
+
+使用session
的executeQueryStatement方法、循环100次查询不同设备的测点,测试3遍,查询完后修改ssl重启iotdb,三次查询使用不同的设备名字,测试环境:1c1d,mac
16G,Intel Core i5
+
+**代码示例:**
+
+```Properties
+private static void query(String d) throws IoTDBConnectionException,
StatementExecutionException {
+ try (SessionDataSet dataSet = session.executeQueryStatement("select * from
root.sg1.d9"+d)) {
+ System.out.println(dataSet.getColumnNames());
+ dataSet.setFetchSize(1024); // default is 10000
+ while (dataSet.hasNext()) {
+ System.out.println(dataSet.next());
+ }
+ }
+}
+```
+
+**查询测试结果:**
+
+| | ssl(单位ms) | 非ssl(单位ms) |
+| ------ | ------------- | --------------- |
+| 第一次 | 7101 | 6111 |
+| 第二次 | 3109 | 2162 |
+| 第三次 | 3594 | 3032 |
+
+**测试结论:**
+
+根据ssl 三次取平均值为4601ms、非ssl取平均值3768ms,综合测试结果可以看出非ssl 插入速度略快ssl(`22%`)
\ No newline at end of file
diff --git a/src/zh/UserGuide/latest/User-Manual/Data-Security.md
b/src/zh/UserGuide/latest/User-Manual/Data-Security.md
new file mode 100644
index 00000000..c34c439e
--- /dev/null
+++ b/src/zh/UserGuide/latest/User-Manual/Data-Security.md
@@ -0,0 +1,332 @@
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); you may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+
+-->
+
+# 数据安全
+
+## 1. 数据存储加密
+### 1.1 概述
+
+IoTDB 通过内置的透明加密引擎支持对数据文件 TsFile
的加密防护。启用加密功能后,即可实现数据在写入时实时加密、读取时无缝解密的全流程自动化处理,保证落盘文件数据安全。该过程完全融入数据库内核,业务应用无感知且无需进行任何代码改造或查询逻辑调整。
+
+### 1.2 参数配置
+
+IoTDB 配置文件` ${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties`中数据加密相关的参数如下所示:
+
+| 参数 | 注释
|
+| :----------------- |
:----------------------------------------------------------- |
+| `encrypt flag` | `true`为开启加密
|
+| `encrypt_key_path` | 文件导入的主密钥文件路径 |
+| `encrypt type` |
加密方式,例如"`org.apache.tsfile.encrypt.UNENCRYPTED`"。目前包括`AES128`和`UNENCRYPTED(SM4128)`。
|
+
+### 1.3 使用流程
+
+1. 获取 加密算法 Jar 包
+2. 将 Jar 包放置于 IoTDB 部署路径下 lib 文件夹中,即 `${IOTDB_HOME}/lib`
+3. 修改配置文件 ` ${IOTDB_HOME}/${IOTDB_CONF}/iotdb-system.properties`
+
+```Properties
+encrypt_flag=true
+encrypt_type=org.example.encrypt.AES128.AES128
+# encrypt_type=org.example.encrypt.SM4128.5M41283
+encrypt_key_path=......
+```
+
+4. 启动 IoTDB 即可使用对应加密算法对 TsFile 文件进行加密。
+
+### 1.4 注意事项
+
+- 开启加密后,对合并功能无影响。但不支持系统内存在与配置不同的加密文件,以免触发合并时发生冲突。
+- 开启加密后禁用 Pipe。
+- 开启加密后禁用 Load TsFile。
+- 建议对主密钥文件路径进行一定的保护,例如存放在特定权限才能访问的磁盘上等。
+
+## 2. 数据传输加密
+
+### 2.1 概述
+
+在某些客户的生产环境中,对于数据传输的安全性要求更高,希望有更安全的传输方式,因此扩展了 Datanode 的 Client RPC
以支持数据传输加密。以下是支持数据传输加密的方式:
+
+1. Thrift 除了普通模式与压缩模式外,增加 SSL 模式
+2. SessionPool(java) 与 Session(java) 支持使用 SSL 模式连接
+3. JDBC 支持使用 SSL 模式连接
+4. CLI 支持使用 SSL 模式连接
+5. 支持压缩模式
+6. 支持 RSA ECDSA 证书
+ 1. RSA证书:算法为RSA,签名算法为SHA256withRSA
+ 2. ECDSA 证书:算法为EC,签名算法为SHA256withECDSA
+
+### 2.2 Server端配置
+
+iotdb-datanode.properties 的默认配置,默认 ssl 是关闭状态。
+
+#### 2.2.1 默认配置示例:
+
+```Properties
+#iotdb-datanode.properties的默认配置
+.......
+# is SSL enabled
+#enable_thrift_ssl=false
+
+# SSL key store path
+#key_store_path=
+
+# SSL key store password
+#key_store_pwd=
+.......
+```
+
+#### 2.2.2 启用 ssl 配置步骤:
+
+1. 在iotdb/conf/iotdb-datanode.properties 配置文件中找到enable_thrift_ssl
配置默认是false,修改成true
+2. 修改key_store_path,添加生成的keystore路径
+3. 修改key_store_pwd为生成keystore的密码(秘钥库口令)
+4. 启动iotdb服务
+
+启用 ssl 配置后,需重启 iotdb 服务。同时,对应的使用到 dn_rpc_port 接口的客户端都需要使用 ssl 方式访问,否则不能访问。
+
+```SQL
+# is SSL enabled
+enable_thrift_ssl=true
+
+# SSL key store path
+key_store_path=/Users/keystore/.keystore
+
+# SSL key store password
+key_store_pwd=123456
+```
+
+### 2.3 Java SessionPool
+
+SessionPool 客户端配置ssl 需要配置useSSL、trustStore、trustStorePwd。
+
+- useSSL :是否开启ssl
+- trustStore :truststore的证书路径
+- trustStorePwd:truststore的证书密码(秘钥库口令)
+
+#### 2.3.1 代码示例:
+
+```SQL
+ sessionPool =
+ new SessionPool.Builder()
+ .nodeUrls(nodeUrls)
+.user("root")
+.password("root")
+.maxSize(3)
+.useSSL(true)
+.trustStore("/Users/key/.truststore")
+ .trustStorePwd("123456")
+ .build();
+```
+
+### 2.4 Java Session
+
+Session 客户端配置ssl 需要配置useSSL、trustStore、trustStorePwd 代码示例
+
+- useSSL :是否开启ssl
+- trustStore :truststore的证书路径
+- trustStorePwd:truststore的证书密码(秘钥库口令)
+
+#### 2.4.1 代码示例:
+
+```SQL
+session =
+ new Session.Builder()
+ .host(LOCAL_HOST)
+ .port(6667)
+ .username("root")
+ .password("root")
+ .version(Version.V_1_0)
+ .useSSL(true)
+ .trustStore("/Users/key/.truststore")
+ .trustStorePwd("123456")
+ .build();
+```
+
+### 2.5 JDBC
+
+jdbc 支持两种方式的ssl 配置,需要配置use_ssl、trust_store、trust_store_pwd。
+
+- use_ssl:是否开启ssl 默认是false
+- trust_store:truststore的证书路径
+- trust_store_pwd:truststore证书的密码(秘钥库口令)
+
+#### 2.5.1 代码示例:
+
+**方式一、在jdbc 的url 中配置使用**
+
+jdbc:iotdb://ip:port?use_ssl=true&trust_store_pwd=123456&trust_store=/Users/keystore/.truststore
+
+```SQL
+try (Connection connection =
+ DriverManager.getConnection(
+
"jdbc:iotdb://127.0.0.1:6667?version=V_1_0&use_ssl=true&trust_store_pwd=123456&trust_store=/Users/keystore/.truststore",
+ "root",
+ "root");Statement statement = connection.createStatement(){
+ // 代码逻辑
+
+ }catch (IoTDBSQLException e) {
+ logger.error("IoTDB Jdbc example error", e);
+ }
+```
+
+**方式二、使用Properties 来配置使用**
+
+```SQL
+java.util.Properties info = new Properties();
+info.setProperty("use_ssl", "true");
+info.setProperty("user", "root");
+info.setProperty("password", "root");
+info.setProperty("trust_store", "/Users/keystore/.truststore");
+info.setProperty("trust_store_pwd","123456");
+try (Connection connection =
+
DriverManager.getConnection("jdbc:iotdb://127.0.0.1:6667?version=V_1_0", info);
+ Statement statement = connection.createStatement()) {
+ // 代码逻辑
+
+}catch (IoTDBSQLException e) {
+ logger.error("IoTDB Jdbc example error", e);
+}
+```
+
+### 2.6 CLI
+
+```SQL
+./start-cli.sh -h 127.0.0.1 -p 6667 -u root -pw root -usessl true -ts
/Users/keystore/.truststore -tpw 123456
+```
+
+### 2.7 SSL证书生成方式
+
+需安装 JDK、测试jdk8和jdk11生成证书未发现问题
+
+1. 创建私钥(.keystore)
+
+```SQL
+keytool -genkeypair -alias mykey -keyalg RSA -validity 7 -keystore .keystore
+```
+
+2. 导出对应的证书
+
+```SQL
+keytool -export -alias mykey -keystore .keystore -rfc -file certificate.cer
+```
+
+3. 将该证书导入到客户端信任库(公钥:.truststore)
+
+```SQL
+keytool -import -alias mykey -file certificate.cer -keystore .truststore
+```
+
+4. 创建 ECDSA 证书
+
+提示:FIPS标准规定使用 RSA、ECDSA 或 EdDSA(23年刚支持)
+
+```Bash
+keytool -genkeypair -alias mykey -keyalg EC -validity 7 -keystore aa.keystore
+
+keytool -export -alias mykey -keystore aa.keystore -rfc -file certificate.cer
+
+keytool -import -alias mykey -file certificate.cer -keystore aa.truststore
+```
+
+### 2.8 性能测试
+
+#### 2.8.1 插入测试
+
+使用session 的inserttablet方法,使用100 设备*100测点,每批 100 行 loop 100
次,测试3遍,三次插入使用不同的设备名字,测试环境:1c1d,mac 16G,Intel Core i5。
+
+**代码示例:**
+
+```Properties
+for(int i=0;i<100;i++){
+ insertTablet(i+"");
+}
+private static void insertTablet(String d) throws IoTDBConnectionException,
StatementExecutionException {
+ List<MeasurementSchema> schemaList = new ArrayList<>();
+ for(int i=1;i<=100;i++){
+ schemaList.add(new MeasurementSchema("s"+i, TSDataType.INT64));
+ }
+
+ Tablet tablet = new Tablet(ROOT_SG1_D1+d, schemaList, 100);
+ long timestamp = System.currentTimeMillis();
+
+ for (long row = 0; row < 100; row++) {
+ int rowIndex = tablet.rowSize++;
+ tablet.addTimestamp(rowIndex, timestamp);
+ for (int s = 0; s < 100; s++) {
+ long value = random.nextLong();
+ tablet.addValue(schemaList.get(s).getMeasurementId(), rowIndex, value);
+ }
+ if (tablet.rowSize == tablet.getMaxRowNumber()) {
+ session.insertTablet(tablet, true);
+ tablet.reset();
+ }
+ timestamp++;
+ }
+
+ if (tablet.rowSize != 0) {
+ session.insertTablet(tablet);
+ tablet.reset();
+ }
+
+}
+```
+
+**插入测试结果:**
+
+| | ssl(单位ms) | 非ssl(单位ms) |
+| ------ | ------------- | --------------- |
+| 第一次 | 13611 | 14099 |
+| 第二次 | 11938 | 10236 |
+| 第三次 | 13801 | 13663 |
+
+**测试结论:**
+
+根据ssl 三次取平均值为13117ms、非ssl取平均值12666ms,综合测试结果可以看出非ssl 插入速度略快ssl(`3.5%`)
+
+#### 2.8.2 查询测试
+
+使用session
的executeQueryStatement方法、循环100次查询不同设备的测点,测试3遍,查询完后修改ssl重启iotdb,三次查询使用不同的设备名字,测试环境:1c1d,mac
16G,Intel Core i5
+
+**代码示例:**
+
+```Properties
+private static void query(String d) throws IoTDBConnectionException,
StatementExecutionException {
+ try (SessionDataSet dataSet = session.executeQueryStatement("select * from
root.sg1.d9"+d)) {
+ System.out.println(dataSet.getColumnNames());
+ dataSet.setFetchSize(1024); // default is 10000
+ while (dataSet.hasNext()) {
+ System.out.println(dataSet.next());
+ }
+ }
+}
+```
+
+**查询测试结果:**
+
+| | ssl(单位ms) | 非ssl(单位ms) |
+| ------ | ------------- | --------------- |
+| 第一次 | 7101 | 6111 |
+| 第二次 | 3109 | 2162 |
+| 第三次 | 3594 | 3032 |
+
+**测试结论:**
+
+根据ssl 三次取平均值为4601ms、非ssl取平均值3768ms,综合测试结果可以看出非ssl 插入速度略快ssl(`22%`)
\ No newline at end of file