问题标签 [couchbase-java-api]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
402 浏览

java - 如何从 HBase 获取基于大小的行?

我想根据大小从 hbase 扫描/查询行。我尝试使用scan.setMaxResultSize(100000)但我没有得到预期的结果。有什么办法可以做到这一点?

0 投票
2 回答
80 浏览

couchbase - 如何在“无复制”的情况下在 Couch base 中创建文档?

嗨沙发基地专家,

我们有两个启用了复制的集群,我们想确定我们的 java 应用程序正在写入哪个集群。所以我们正在考虑为每个集群添加一个唯一的文档,然后我们可以查询文档以找出集群的名称。但问题是,随着复制的开启,两个文档都将在两个集群中可用,并且我们根据文档的存在来识别集群的逻辑将失败。有没有人遇到过类似的问题?我们可以关闭一组特定文档的复制吗?

0 投票
1 回答
1300 浏览

couchbase - 如何增加 N1QL 索引扫描超时?

作为 ETL 过程的一部分,我正在尝试从 Couchbase 存储桶(Couchbase Enterprise 4.5)中读取所有文档密钥 ID。这个桶可能有几千万个文档。为了测试这一点(在这个阶段,我只是想看看这种方法是否足够快以满足我们的需求),我使用如下代码设置一个大的 serverSideTimeout 值:

这开始执行,我的订阅者开始从查询中获取 id,但随后我收到此错误:

我对它需要进行索引扫描并不感到惊讶,因为我实际上是在尝试读取主索引中的所有内容。这里关于“索引扫描超时”的明显相关问题在评论中提到有一个设置来调整索引扫描超时值,但我找不到这个设置在哪里。我查看了 N1qlParams 对象、CouchbaseEnvironment 以及 Couchbase 管理 UI 中集群设置的索引设置部分,但在任何地方都找不到此设置。对于希望进行全索引扫描的查询,如何将索引扫描超时设置为更长的值?

0 投票
1 回答
324 浏览

couchbase - 如何从 couchbase 获取有序结果

我的存储桶中有一个包含 ID 列表(childList)的文档。我想查询这个列表并保持结果的顺序,就像在我的 JSON 中一样。我的查询就像(使用 java SDK):

String query = new StringBuilder().append("SELECT B.name, META(B).id as id ") .append("FROM" + bucket.name() + " A ") .append("USE KEYS $id ") .append("JOIN" + bucket.name() + "B ON KEYS ARRAY i FOR i IN A.childList end;").toString();

此查询将返回我将转换为域对象的行并创建如下列表:

问题是输出顺序很重要。

有任何想法吗?

谢谢你。

0 投票
2 回答
768 浏览

java - Couchbase 在 N1QL 参数化查询中使用了错误的索引

我在理解 couchbase 查询计划的工作方式方面存在问题。我将 SpringData 与 Couchbase 4.1 一起使用,并提供 Couchbase 存储库的自定义实现。在我的 Couchbase 存储库的自定义实现中,我有以下方法:

结果,Spring Data 向 Couchbase 生成以下 json 对象表示的查询:

当我通过 Java 和 N1QL Rest Api 或通过 cbq consol 执行它时,问题在于性能。为了在 cbq 中执行此查询,我只需将参数引用替换为精确值。

在 select 语句之前添加 EXPLAIN 子句后,我提到了不同的执行计划。通过 Java Spring Data 或 N1QL Rest Api 将此查询作为参数化查询执行我已经提到该查询不使用我专门为这种情况创建的索引。索引定义如下:

因此,当我通过 cbq consol 执行查询时,Couchbase 使用我的 idnex 并且查询性能非常好。但是,当我通过 N1QL rest api 或 Java 执行此查询时,我看到该查询不使用我的索引。您可以在下面找到证明这一事实的部分执行计划:

那么,问题在于,couchbase 查询优化器的权利和合法行为是什么?这是否意味着查询计划不考虑参数的实际值?并且我是否手动将值放入查询字符串或存在任何其他方式来使用具有正确索引选择的 N1Ql 参数化查询?

编辑

根据shashi raj的回答,我将 N1qlParams.build().adhoc(false) 参数添加到参数化的 N1QL 查询中。这并不能解决我的问题,因为我仍然有这个查询的性能问题。此外,当我打印查询时,我看到它与我之前描述的相同。因此,我的查询仍然错误分析并导致性能下降。

0 投票
2 回答
185 浏览

java - Couchbase RX 客户端 - 合并多个可观察对象与平面图

以下代码片段之间的性能差异是什么?

用例:使用 Couchbase 反应式 SDK 从 Couchbase 检索多个密钥。

片段#1

片段#2

根据 CB 的文档,第一个片段是推荐的方式。

此外,在最后,可观察对象被转换为阻塞对象,但在此之前的一切,包括网络调用和聚合,都是完全异步发生的。

在 SDK 内部,这提供了更有效的资源利用,因为请求非常快速地存储在内部请求 RingBuffer 中,并且 I/O 线程能够选择尽可能大的批次。之后,无论服务器首先返回结果,它都会存储在列表中,因此不会对响应进行序列化。

第二个片段是我们今天在我们的代码库中发现的一个案例,其中有一个 Observable 列表,其中每个 observable 都会一个一个触发 Bucket 的 get 方法,然后将它们全部合并。

0 投票
1 回答
3569 浏览

java - 什么是 Couchbase 环境 autoreleaseAfter 选项?

在使用了一些 Couchbase (2.4.1) 的 java 客户端 API 之后,我遇到了这个异常:

我在命令模式下使用 ViewQuery,从结果中获取行时失败(ViewResult 是正确的,因为 totalRows() 和 success() 有很好的值)

有效设置 autoreleaseAfter 解决了问题,但我不知道它是否安全或只是回避问题。

我猜这种模式不会在查询后关闭连接,它让它一直存在,直到达到超时(5 秒)。

如果 http 调用完成(使用 Spring MVC),它会自动“提前”关闭吗?似乎这种模式带来了危险,因为它可以容纳更多的连接,但这真的很重要吗?

最后,我觉得这个 API 的“正确”使用是通过 rxjava Observable API,而发现的大多数文档只显示了命令式示例。自动释放模式是否已过时(并且将被弃用)还是在不久的将来仍会受到支持?

0 投票
2 回答
1003 浏览

couchbase - Couchbase SDK 无法解码二进制文件

我正在尝试从 Couchbase 4.0.0-4051 社区版获取 cbworkloadgen 上传的 BinaryDocuments。Couchbase Java 客户端版本是 2.4.1。

解码器给出的例外是 -

我使用以下来获取文件-

对于 JsonDocument,一切正常。行是 AsyncViewRow。

我究竟做错了什么?有人可以告诉我吗?或者这是与标志字段中的错误值相关的错误?

0 投票
1 回答
118 浏览

spring-boot - 运行时 Couchbase 查询异常 键的不支持参数类型:类 com.couchbase.client.protocol.views.Query

每次我尝试从我的 Spring Boot 应用程序中查询 Couchbase DB 上的视图时,都会遇到此异常。不支持的键参数类型:com.couchbase.client.protocol.views.Query 类。

我在 Query 类的 setKey() 方法上设置了一个字符串,但出现异常。但后来我检查了 API 并提供了一个 json 给 setKey,仍然无法正常工作。进行了很多搜索,但无法使其正常工作。

我也在这篇文章中分享代码片段。

应用程序属性

播放器存储库

播放器.java

SpringBootApplication 类

@SpringBootApplication 公共类 CricketTeamSelectionMain {

}

播放器服务类

在 CouchBase DB 上查看 by_Name

0 投票
1 回答
134 浏览

java - membase 服务器到 couchbase 服务器迁移:Java 客户端

我正在使用 aspymemcached 客户端连接到我的 membase 服务器。代码如下:

将对象放入缓存:

从缓存中获取对象:

现在我计划将 membase 服务器升级到 couchbase 服务器,因此我必须使用 couchbase 客户端 java API(参考:http ://docs.couchbase.com/developer/java-2.1/java-intro.html )。在 cousebase 客户端中,所有操作都在 JsonObject ref 上执行:

http://docs.couchbase.com/developer/java-2.0/documents-basics.html

那么如何将以上两种方法迁移到couchbase客户端