![](/img/trans.png)
[英]Couchbase - Bulk insert via Java SDK - How to scale with Akka?
[英]Couchbase - Bulk insert via Java
我目前正在使用 Couchbase 作为数据库的 Java 项目。 作为其中的一部分,我开始通过 json 文件和 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
使用 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 <-> 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
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.