繁体   English   中英

沙发底座 - 通过 Java 批量插入

[英]Couchbase - Bulk insert via Java

介绍

我目前正在使用 Couchbase 作为数据库的 Java 项目。 作为其中的一部分,我开始通过 json 文件和 csv 文件创建海量数据插入。

问题

我想知道,实现这一目标的最佳方法是什么? 是否可以提供示例代码?

CSV 转换:

基准:

您有几个库来执行 CSV <-> Java object 之间的转换,这里是不同库的基准:

图书馆 读取(记录/秒) 写入(记录/秒) 依赖项 大小 (KiB)
共享 CSV 1,128,102 3,354,703 50
快速CSV 4,738,726 5,034,953 31
Jackson CSV 3,770,602 3,995,294 是的 2,040
Java CSV 1,922,189 2,732,843 13
打开csv 1,085,935 1,808,982 是的 2,625
SM+ASM 5,164,967 1,901,154 是的 1.498
Sfm-ASM 4,652,517 1,901,154 是的 1,498
超级CSV 1,406,090 1,730,984 96
单义性 3,594,900 4,050,255 437

有关此基准测试的更多信息,您可以访问此站点: https://github.com/osiegmar/JavaCsvBenchmarkSuite#results

快速CSV:

使用 header 迭代读取一些 CSV 数据

NamedCsvReader.builder().build("header 1,header 2\nfield 1,field 2")
    .forEach(row -> row.getField("header 2"));

有关FastCSV的更多信息,您可以访问此站点: https://github.com/osiegmar/FastCSV


JSON 转换:

基准:

您有几个库来执行 Json <-> Java object 之间的转换,这是不同库的基准:

在此处输入图像描述

有关此基准测试的更多信息,您可以访问此站点: https://github.com/ngs-doo/dsl-jsons

杰克逊数据绑定:

从 json 字符串到 java object 的转换:

String json = "{\"name\":\"Hassan\",\"age\":23}";
Person person = new ObjectMapper().readValue(json, Person.class);

有关jackson-databind的更多信息,您可以访问此站点: https://github.com/FasterXML/jackson-databind


CouchBase 插入:

Java 中的散装插入示例:

protected void doWork() {
    final String key = "javaDevguideExampleBulkInsert";
    // Create a JSON document content
    final JsonObject content = JsonObject.create().put("item", "A bulk insert test value");
    // Describe what we want to do asynchronously using RxJava Observables:
    ReactiveCollection reactiveCollection = collection.reactive();
    Flux<MutationResult> resultFlux = Flux.range(0, 10)
            .map(index -> { return key + "_" + index; })
            .flatMap(k -> reactiveCollection.upsert(k, content));
    resultFlux.subscribe(System.out::println);
}

此代码来自官方docs-sdk-java

我们最近发布了一个导入指南,它也可能有用: https://docs.couchbase.com/server/current/guides/import.html#importing-using-an-sdk

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM