您可以使用 NuGet Package Manager, .NET CLI等工具来安装,以 .NET CLI为例
如果您使用的是.NET 5.0 或者更高版本的SDK,输入如下命令即可安装最新的NuGet包
dotnet add package Apache.IoTDB
如果您想安装更早版本的客户端,只需要指定版本即可
# 安装0.12.1.2版本的客户端 dotnet add package Apache.IoTDB --version 0.12.1.2
// 参数定义 string host = "localhost"; int port = 6667; int pool_size = 2; // 初始化session var session_pool = new SessionPool(host, port, pool_size); // 开启session await session_pool.Open(false); // 创建时间序列 await session_pool.CreateTimeSeries("root.test_group.test_device.ts1", TSDataType.TEXT, TSEncoding.PLAIN, Compressor.UNCOMPRESSED); await session_pool.CreateTimeSeries("root.test_group.test_device.ts2", TSDataType.BOOLEAN, TSEncoding.PLAIN, Compressor.UNCOMPRESSED); await session_pool.CreateTimeSeries("root.test_group.test_device.ts3", TSDataType.INT32, TSEncoding.PLAIN, Compressor.UNCOMPRESSED); // 插入record var measures = new List<string>{"ts1", "ts2", "ts3"}; var values = new List<object> { "test_text", true, (int)123 }; var timestamp = 1; var rowRecord = new RowRecord(timestamp, values, measures); await session_pool.InsertRecordAsync("root.test_group.test_device", rowRecord); // 插入Tablet var timestamp_lst = new List<long>{ timestamp + 1 }; var value_lst = new List<object> {"iotdb", true, (int) 12}; var tablet = new Tablet("root.test_group.test_device", measures, value_lst, timestamp_lst); await session_pool.InsertTabletAsync(tablet); // 关闭Session await session_pool.Close();
SessionPool 连接池支持并发客户端请求,线程安全。当 pool_size设为 1 时,其行为等同于单个 session。推荐使用 SessionPool ,作为实现与数据库交互的核心接口,SessionPool 集成了丰富的方法,支持数据写入、查询以及元数据操作等功能,详细介绍见下文。
| 方法名 | 参数 | 描述 | 示例 |
|---|---|---|---|
| Open | bool | 打开会话 | session_pool.Open(false) |
| Close | null | 关闭会话 | session_pool.Close() |
| IsOpen | null | 查看会话状态 | session_pool.IsOpen() |
| OpenDebugMode | LoggingConfiguration=null | 启用调试模式 | session_pool.OpenDebugMode() |
| CloseDebugMode | null | 禁用调试模式 | session_pool.CloseDebugMode() |
| SetTimeZone | string | 设置时区 | session_pool.GetTimeZone() |
| GetTimeZone | null | 获取时区 | session_pool.GetTimeZone() |
| 方法名 | 参数 | 描述 | 示例 |
|---|---|---|---|
| SetStorageGroup | string | (创建)存储组 | session_pool.SetStorageGroup(“root.97209_TEST_CSHARP_CLIENT_GROUP_01”) |
| CreateTimeSeries | string, TSDataType, TSEncoding, Compressor | 创建时间序列 | session_pool.InsertTabletsAsync(tablets) |
| CreateMultiTimeSeriesAsync | List, List , List , List | 创建多个时间序列 | session_pool.CreateMultiTimeSeriesAsync(ts_path_lst, data_type_lst, encoding_lst, compressor_lst); |
| CheckTimeSeriesExistsAsync | string | 查看时间序列是否存在 | session_pool.CheckTimeSeriesExistsAsync(time series) |
C# 原生接口支持通过 Record 和 Tablet 两种方式进行数据写入:
record数据进行封装和抽象,适合单行数据写入的场景,其构造方法如下var rowRecord = new RowRecord(long timestamps, List<object> values, List<string> measurements);
var tablet = new Tablet(string deviceId, List<string> measurements, List<List<object>> values, List<long> timestamps);
| 方法名 | 参数 | 描述 | 示例 |
|---|---|---|---|
| InsertRecordAsync | string, RowRecord | 插入单条记录 | session_pool.InsertRecordAsync(“root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE”, new RowRecord(1, values, measures)); |
| InsertRecordsAsync | List, List | 插入多条记录 | session_pool.InsertRecordsAsync(device_id, rowRecords) |
| InsertRecordsOfOneDeviceAsync | string, List | 插入同一设备的记录 | session_pool.InsertRecordsOfOneDeviceAsync(device_id, rowRecords) |
| InsertRecordsOfOneDeviceSortedAsync | string, List | 插入同一设备的有序记录 | session_pool.InsertRecordsOfOneDeviceSortedAsync(deviceId, sortedRowRecords); |
| TestInsertRecordAsync | string, RowRecord | 测试插入记录 | session_pool.TestInsertRecordAsync(“root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE”, rowRecord) |
| TestInsertRecordsAsync | List, List | 测试插入记录 | session_pool.TestInsertRecordsAsync(device_id, rowRecords) |
| 方法名 | 参数 | 描述 | 示例 |
|---|---|---|---|
| InsertTabletAsync | Tablet | 插入单个 tablet | session_pool.InsertTabletAsync(tablet) |
| InsertTabletsAsync | List | 插入一批 tablets | session_pool.InsertTabletsAsync(tablets) |
| TestInsertTabletAsync | Tablet | 测试插入 tablet | session_pool.TestInsertTabletAsync(tablet) |
| TestInsertTabletsAsync | List | 测试插入 tablets | session_pool.TestInsertTabletsAsync(tablets) |
| 方法名 | 参数 | 描述 | 示例 |
|---|---|---|---|
| ExecuteQueryStatementAsync | string | 执行 SQL 查询语句 | session_pool.ExecuteQueryStatementAsync(“select * from root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE where time<15”); |
| ExecuteNonQueryStatementAsync | string | 执行 SQL 非查询语句 | session_pool.ExecuteNonQueryStatementAsync( “create timeseries root.97209_TEST_CSHARP_CLIENT_GROUP.TEST_CSHARP_CLIENT_DEVICE.status with datatype=BOOLEAN,encoding=PLAIN”) |
| 方法名 | 参数 | 描述 | 示例 |
|---|---|---|---|
| DeleteStorageGroupAsync | string | 删除单个存储组 | session_pool.DeleteStorageGroupAsync(“root.97209_TEST_CSHARP_CLIENT_GROUP_01”) |
| DeleteStorageGroupsAsync | List | 删除存储组 | session_pool.DeleteStorageGroupAsync(“root.97209_TEST_CSHARP_CLIENT_GROUP”) |
| DeleteTimeSeriesAsync | List | 删除时间序列 | session_pool.DeleteTimeSeriesAsync(ts_path_lst) |
| DeleteTimeSeriesAsync | string | 删除时间序列 | session_pool.DeleteTimeSeriesAsync(ts_path) |
| DeleteDataAsync | List, long, long | 删除数据 | session_pool.DeleteDataAsync(ts_path_lst, 2, 3) |
完整示例请参考:Apache.IoTDB.Samples