# DataStorage

DataStorage 北向插件使用 [Arrow Flight SQL](https://arrow.apache.org/docs/format/FlightSql.html#arrow-flight-sql) 写入数据到 [Datalayers](https://docs.datalayers.cn/datalayers/latest/) 时序数据库，它为 NeuronEX 增加了时序数据的存储能力。

NeuronEX 会在启动时创建一个 *DataStorage* 单例节点，用户不能直接使用该插件创建或删除节点。
您可以在**北向应用**页签中看到 *DataStorage* 节点。

## 应用配置

以下是使用 DataStorage 插件配置节点时可用的参数：

| 字段                       | 说明                                                  |
| ------------------------------- | ------------------------------------------------------------ |
| **服务器地址**                | Datalayers 服务器的 ip 地址 |
| **服务器端口**                | Datalayers gRPC 服务的端口  |
| **用户名**                    | Datalayers 用户名          |
| **密码**                      | Datalayers 密码            |

## 添加订阅

完成插件的添加和配置后，通过订阅南向设备实现数据的存储。

在**北向应用**页，点击设备卡片/设备列进入**组列表**页。点击**添加订阅**，完成南向设备和采集组的添加。订阅完成后，DataStorage 节点将开始接收南向数据，并将数据存储到 Datalayers 时序数据库中。

## 数据存储

DataStorage 在传输过程中使用 Arrow 的列存格式，在数据传输过程将完全避免序列化/反序列化操作，可彻底消除序列化/反序列化带来时间及性能损耗、提升系统的吞吐能力。

## 运行与维护

在设备卡片或设备列，您可点击数据统计图表查看及应用运行情况、接受和发送的数据情况。

其中**缓存队列大小**表示，当前 DataStorage 插件数据存储时使用的缓存队列大小值。

其中**最大缓存队列大小**表示，DataStorage 插件数据存储时使用的缓存队列的历史最大值。

其中**丢弃消息数**表示，DataStorage 插件数据存储时，由于数据吞吐量过大，超过了缓存队列的最大值1000时，导致的数据丢失数量。

## 性能指标

推荐 NeuronEX 边端存储点位不超过1w个。

### DataStorage 插件性能指标

| 场景 | 点位数 | 组间间隔 (ms) | CPU 最大使用率 (%) | 内存占用 (MB) | 最大缓存队列长度 | 
| ---- | ------ | ----------- | ---------------- | ----------- | ------------- |
| 1   | 3,000  | 1000        | 10.4              | 79          | 1             | 
| 2   | 10,000 | 1000        | 35                | 197         | 1             | 
| 3   | 10,000 | 100         | 145                | 228        | 1             | 

### Datalayers 数据库性能指标

| 场景 | 点位数 | 组间间隔 (ms) | CPU 最大使用率 (%) | 内存占用 (MB) | 磁盘写入 (MB/s) | 查询响应时间 (ms) |
| ---- | ------ | ----------- | ---------------- | ----------- | ------------- | --------------- |
| 1   | 3,000  | 1000        | 2.6              | 157         | 0.093         | 10              |
| 2   | 10,000 | 1000        | 4.5              | 217         | 0.314         | 15              |
| 3   | 10,000 | 100         | 145                | 296        |1.59             | 22           |

