InfluxDB写入测试

     早几年测试时序库时,采集数据到kafka,然后用不同数据进行存储验证。Influxdb是花时间比较多的,它的数据建模方法、读写方法都需要使用特殊的API。时间久了自己也经常忘记,把当时的测试关键代码记录下来,也方便日后查找。

     代码基于java编写。

    1、接口数据定义,clientid+tag组合必须唯一

public class KafkaInfo{
        //客户端id
        public String clientid;

        //测点名称
        public String tag ;

        //数据时戳
        public String ts ;

        //测点数据类型
        public String vt;

        //测点值
        public String value;

        //本次数据更新次数
        public long updatacount;

        //测点说明
        public String desc;
}

2、数据写入

    static Logger logger = Logger.getLogger(influxdbApplicationTest.class);

    // You can generate a Token from the "Tokens Tab" in the UI
    static String token = "web界面创建的token";
    static String bucket = "数据分库名";
    static String org = "初始化时创建的org";

    public static void main(String[] args) {
        logger.info("-------start ,ApplicationTest--------");

        InfluxDBClient client = InfluxDBClientFactory.create("http://10.126.12.113:8086", token.toCharArray());

        //
        // Write data
        //
        try (WriteApi writeApi = client.getWriteApi()) {

            //
            // Write by Data Point
            //
            for ( int i = 0;i < 10; i ++ ) {
                Point point = Point.measurement("Line123")
                        .addTag("tag", "Tags001")
                        .addTag("L1", "real")
                        .addField("value", 20*i)
                        .addField("update", 7000+i)
                        .time(Instant.now().toEpochMilli(), WritePrecision.MS);

                //writeApi.writePoint(bucket, org, point);
            }

        }

        //
        // Query data
        //
        String query = String.format("from(bucket: \"%s\") |> range(start: -1h) |> filter(fn: (r) =>r._measurement==\"Line123\"", bucket);

        QueryApi queryApi = client.getQueryApi();

        List<FluxTable> tables = queryApi.query(query,org);
        for (FluxTable fluxTable : tables) {
            List<FluxRecord> records = fluxTable.getRecords();
            for (FluxRecord fluxRecord : records) {
                System.out.println(fluxRecord.getTime() + ": " + fluxRecord.getMeasurement()+","+ fluxRecord.getValueByKey("tag") +","+ fluxRecord.getValueByKey("_value"));
            }
        }

        client.close();

        logger.info("-------finish ,ApplicationTest--------");

    }

时序数据库InfluxDB的性能测试是通过在特定环境下对其进行写入和查询测试来评估其性能表现。在一个具体的测试环境中,使用了4核16G的CPU内存和1Gbit/s的带宽,操作系统为Ubuntu 4.8.4-2ubuntu1~14.04.3。测试结果显示,InfluxDB在处理时序数据方面表现出色。 引用\[2\]中提到了对InfluxDB的性能测试报告。测试环境包括写入测试和查询测试。在写入测试中,通过模拟大量的写入操作来测试InfluxDB写入性能。在查询测试中,通过执行各种类型的查询操作来测试InfluxDB的查询性能。 InfluxDB是用Go语言编写的一个开源分布式时序、事件和指标数据库,无需外部依赖。它专门设计用于处理时序数据,并且在处理大量数据和多样化数据类型方面表现出色。相比传统的关系型数据库,InfluxDB在时序数据处理方面具有更高的性能和效率。 总结来说,时序数据库InfluxDB在性能测试中展现出了优秀的表现,特别适用于处理时序数据。它的高性能和高效率使其成为许多应用场景中的首选数据库。 #### 引用[.reference_title] - *1* [【数据库】时序数据库InfluxDB 性能测试和为什么时序数据库更快、时序数据库应用场景...](https://blog.csdn.net/weixin_42319496/article/details/119372355)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [性能爆表-时序数据库InfluxDB](https://blog.csdn.net/kobe_okok/article/details/117233188)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值