Releases: eedalong/Apache-IoTDB-Client-CSharp
版本发布
版本发布
IoTDB C# Client 0.13.0.7 Release Note
本次发布是0.13.0.7的正式版本发布
主要更新如下
一. 添加对于ADO .NET支持
为了更加适配 .NET 读取数据库的方式以及方便不同使用习惯的用户,我们提供了对于ADO .NET的支持,用户可以使用Apache.IoTDB.Data这一nuget包,用户也依然可以使用之前的Apache.IoTDB包。
二. 调整项目结构
为了减少项目依赖,我们不再将RPC相关代码生成单独的nuget包,而是将其放入主体代码内部。
三. 调整自动测试的方法
我们在自动测试中改为使用IoTDB 0.13.0的docker image进行测试,测试结果更为稳定可靠
四. 向下兼容
支持.NET 4.6.1,并合并了Apache.IoTDB与Apache.IoTDB.Framework两个nuget包
预览版本发布
IoTDB C# Client 0.13.0.7 Pre-release Note
本次更新是改进IoTDB C#客户端
主要更新如下
一. 添加对于ADO .NET支持
为了更加适配 .NET 读取数据库的方式以及方便不同使用习惯的用户,我们提供了对于ADO .NET的支持,用户可以使用Apache.IoTDB.Data这一nuget包,用户也依然可以使用之前的Apache.IoTDB包。
二. 调整项目结构
为了减少项目依赖,我们不再将RPC相关代码生成单独的nuget包,而是将其放入主体代码内部。
三. 调整自动测试的方法
我们在自动测试中改为使用IoTDB 0.13.0的docker image进行测试,测试结果更为稳定可靠
四. 向下兼容
支持.NET 4.6.1,并合并了Apache.IoTDB与Apache.IoTDB.Framework两个nuget包
版本发布
IoTDB C# Client 0.13.0.1 Release Note
本次更新是为了适配Apache IoTDB 0.13.0版本
主要更新如下
一. 添加对齐序列的插入接口
IoTDB在0.13.0版本中引入了对齐时间序列,在底层的存储方式上与非对齐时间序列存在区别,并且二者不能共存,因此在插入对应的数据结构时,我们需要指定InsertPlan
针对所有的Insert*Async
接口,我们都添加了对应的InsertAligned*Async
接口,保证对齐时间序列能够正确插入
二. 添加SchemaTemplate相关接口
IoTDB在0.13.0版本中引入了SchemaTemplate,减少元数据开销,节省存储空间。为此我们添加了对应的操纵SchemaTemplate的接口,方便用户直接使用客户端操作和查询Template相关内容
三. 接口增强
针对用户反馈的重启IoTDB后接口执行错误的问题,我们增强了所有对应的接口: 一旦连接出现问题,我们会让客户端重新与服务端建立连接并且重新发送对应的请求
版本发布
版本发布
一. 适配0.12.x版本的IoTDB Server
原先的客户端版本,使用0.11.x版本的server没有出现问题,在使用0.12.x版本的server的过程中出现了Record插入错误,报错内容为数据类型不匹配,原因是0.12.x版本的server在序列化某些数据时改为使用byte
而非在0.11.x版本中的short
,因此,我们将序列化时使用的char
改为byte
,从而成功适配0.12.x版本的IoTDB Server
二. 结构和命名调整
对仓库的整体结构进行了大规模调整,以期适应C# 用户的使用习惯,同时将所有函数和变量的命名规范修改为Pascal模式
三. 添加使用样例
添加了使用客户端的样例,详见使用样例,使得用户能够更快上手使用我们的客户端
重大版本更新
重大版本更新!!!!
由于这个版本更新实在是太大了,避免英文介绍不清楚故直接使用中文来介绍。
一、抛除了Session,只支持SessionPool
在原先的版本中我们支持Session
, 后来为了支持并发客户端请求继而又支持了SessionPool
, 然而SessionPool
本身为Session
的超集,当SessionPool
的pool_size
设置为1
时便退化到了Session
。思考再三我们决定去除掉对Session
的支持,日后只专注于支持SessionPool
以避免代码变得越来越庞大。
二、抛除 Field的抽象
Field
本身提供的是泛型的概念,其最初来源于C++客户端的实现后被Go语言客户端以及Python客户端沿用。但实际上C#本身支持Generic Type
,故在C#客户端中我们决定去除Field
,进而直接使用Object泛型。
三、Record相关API更新
在过去的版本中我们参考IoTDB的接口封装参数形式,对Record相关接口参数分别有type_list
和value_list
,同时 value_list
为值的string形式。这实际上本质来源于C++客户端中没有实现对泛型很好的支持,进而通过这种方式进行接口支持。在C#中我们借助泛型,使得各种面向用户的Record相关接口参数直接接受Record,同时Record的定义如下。
public RowRecord(long timestamp, List<Object> values, List<string> measurements){
this.timestamp = timestamp;
this.values = values;
this.measurements = measurements;
}
Record的接口变成如下形式
public async Task<int> insert_record_async(string device_id, RowRecord record){}
新版本的接口在易用性上有较大的提升,同时对序列化性能有更友好。
四、 面向用户的接口均为Async接口
在SessionPool
中我们将面向用户的接口均实现为async接口以方便用户层的使用。
五、使用示例
用户可参照测试代码了解使用示例
Enhancement and New Feature
IoTDB CSharp Client Release Note
Enhancement
1. SessionPool
- To meet needs for high performance client, we support SessionPool which will create N client connection with IoTDB server. SessionPool expose almost all APIs as async method except for
open
,close
etc. You can refer SessionPoolTest.cs to see how to use session_pool.
2. Parallel Serialization
- Support parallel serialization in
insert_records
andinsert_records_of_one_device
to fasten serialization
Docs
- Add doc about time profiling, check this out if you are interested
Bug Fix And Feature Enhancement Release
IoTDB CSharp Client Release Note
Bug Fix
get_datetime
inRowRecord
return datetime in local timezone
Feature Enhancement
- Remove logs to Console in
SessionDataset
- Add doc about
ByteBuffer
, check this out if you are interested.
Enhancement and New Features release
IoTDB CSharp Client Release Note
Enhancement
- Optimize memory allocation in
ByteBuffer
, which will be extended by 2x when needed. This will speedup hugeTablet
serialization for about 35x when testing on a Tablet with 20,000 rows.
New Features
New Features about Field
- support type conversion with
get_bool
,get_int
,get_long
,get_str
,get_float
New Features about RowRecord
- support
append
which can appendField
to aRowRecord
- support indexing for
RowRecord
, you can get or set field by calling row_record[index] - support get datetime from
RowRecord
which will be converted fromtimestamp
inRowRecord