问题标签 [gocql]
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.
go - gocql Query.Get() 与 Query.GetRelease()
Query.Release()
幕后做什么?这意味着“将查询返回池”是什么意思?什么时候Query.Get()
应该用,什么时候用Query.GetRelease()
?
go - 使用 Golang 和 Gocqlx 在 Cassandra 中进行多分区批处理
我正在尝试使用 Golang 和 Gocqlx 在 Cassandra 中执行多分区 BATCH。
我的问题是我无法让我的 BATCH 语句正常工作。
我的目标如下:
我在 Cassandra 中有以下表结构:
下面是我的代码:
这可能是非常明显的事情,但遗憾的是我对 Cassandra 和 Gocqlx 还是陌生的。
go - 使用 gocql 将用户定义类型的数组插入 Cassandra
我在 Cassandra 中有一个 UDT,并且我有一个表,其架构中有一组这些 UDT。这是一个示例:
在我的架构中,我有
在我的 go 包中,我构建了一个结构:
然后我有一个函数,它本质上返回这个 test_type: 的列表[]test_type
,让我们调用它my_array
。
当我尝试使用 gocql 进行插入时:
我得到一堆空值而不是我的数组。基本上 test_type 没有正确映射到我创建的 UDT 是我的假设。
本质上,我的问题是如何将结构映射到 udt 以便正确识别类型。.
docker - gocql + docker“未找到”
我有一个像这样设置的 docker compose 文件:
docker-compose up -d
以及使用“网络”日志启动服务时:
当我然后使用时,docker inspect docker_cassandra_1
我看到它有这个 IP 地址 - 所以分辨率工作正常:
在 cassandra 的日志中,我看到该节点知道它的 IP 地址是什么,并且它也在侦听正确的端口:
10:06:37,709 StorageService.java:2289 - 节点 /172.19.0.2 状态跳转到 NORMAL cassandra_1 INFO [main] 2018-11-04 10:06:37,737 Gossiper.java:1692 - 等待八卦解决... cassandra_1 INFO [main] 2018-11-04 10:06:45,745 Gossiper.java:1723 - 没有八卦积压;进行 cassandra_1 INFO [main] 2018-11-04 10:06:46,379 NativeTransportService.java:70 - Netty 使用本机 Epoll 事件循环 cassandra_1 | INFO [main] 2018-11-04 10:06:46,496 ...开始在 /0.0.0.0:9042(未加密)上侦听 CQL 客户端...
当docker inspect web
我看到它没有 IP 地址并且卡在重新启动时(除非强制删除图像,否则无法停止:
码头工人ps:
我还检查了 cassandra 中的 system.local 表 - 所有地址都是正确的(docker dns 解析到的那个)
这里有什么问题?
编辑。:
没有提到:docker exec -it docker_cassandra_1 cqlsh
让我连接到数据库 - 所以它显然是
编辑2:
我做了一些进一步的测试并在 myApp 容器上安装了 nmap(并将其更改为在启动时运行 /bin/bash 而不是我的入口点脚本)
这是在“web”容器上运行的
docker exec -it docker_cassandra_1 /bin/bash
让我通过外部 IP 连接
这是我连接的代码:
编辑:
当我在主机上启动我的应用程序并尝试连接到 127.0.0.1 时,它也不起作用,而端口 9042 通过 -p 9042:9042 暴露
go - 如何检查是否应用了 CQL 查询
我在 Cassandra 前面有一个用 golang 编写的 API Server,所以我使用 gocql 作为驱动程序。如果有人试图在 Cassandra 中创建重复条目,我想要返回一个错误,所以我不仅需要幂等操作(可以通过 if not exists 子句实现),而且还需要以某种方式知道是否应用了查询。像 SELECT primary_keys FROM TABLE WHERE primary_keys = blah LIMIT 1 这样的初步请求不是一个选项,因为 INSERT 操作应该是原子的。
当我在 cqlsh 中运行下面的示例时,Cassandra 会告诉我是否应用了查询:
由于 query.Exec() 只返回错误,是否有任何选项可以使用 gocql 实现相同的目标?
谢谢!
go - 使用 Cassandra GOCQL 驱动程序 (Golang) 确定页面状态
我一直试图围绕如何在 Apache Cassandra 中使用 GOlang 中的驱动程序函数进行分页。
我有以下用于获取行的代码
我要实现的目标: 我引用的表很大,超过 18k 行,我想使用驱动程序的内置分页以最有效的方式获取所有表以进行特殊操作,这样查询就不会了t 超时。
问题: 我不确定如何让查询恢复到前一页状态。我不确定这是否涉及在循环中运行查询并在其外部管理页面状态。我了解如何获取和设置页面状态,但在所有分页完成后,如果没有适当的停止条件,我无法弄清楚如何每次使用新页面状态迭代查询。
我最好的尝试:
我这样做是对的,还是有更好的方法来实现这一点?
go - 不断重新连接到 Cassandra
我在网上读到,使用 Cassandra 的最佳做法是在您的服务生命周期内使用 1Cluster
和 1 Session
。
我的问题是:
如果我们的 Cassandra 服务器出现故障,我如何确保我的集群和/或会话将继续尝试重新连接,直到我们的 Cassandra 服务器重新上线?
应该只尝试重新连接集群,还是只尝试重新连接,或者两者都尝试?
我们正在使用Go
github.com/gocql/gocql来提供我们的服务。
我在gocql
文档中看到了以下片段,但看起来它只有有限的重试次数:
我还在网上找到了下面的代码片段,但它看起来不像是为了处理这种情况而设计的:
上述任何方法是否足以确保在我们的 Cassandra 服务器重新上线之前尝试重新连接?如果没有,这种情况的最佳实践是什么?
go - 如何使用 gocql 优化 scylla db 的跨分片查询
我正在使用具有 9 个节点且复制因子为 3 的 scylla 集群。一个应用程序打开一个与它的连接,读取和写入数据。
但是,我注意到在 scylla CQL 优化监控仪表板中,交叉分片的百分比非常高,大约 150%。
这是正常的还是我该如何优化它。
go - 如何在应用程序端记录 Cassandra 查询?
我在我的应用程序中使用 gocql 驱动程序。驱动程序有没有办法在控制台上记录查询?如何配置记录器以打印完整的查询(以及数据绑定)
cassandra - Cassandra 插入不一致/部分记录
我有一张桌子,其中有 4 列 A、B、C、D。我将 LWT 用于此表中的所有创建/更新/删除操作。A 是我唯一的主键。我的查询有点像这样:-
在任何时候,我们都不可能在记录中有值 C 但 B 是空白的。但是当我从这张表中阅读时,
select * from xTable where A = '123';
我分别得到了 A、C、D 的正确值,即“123”、“789”、“456”,但 B 为空白。在执行上述任何查询时也没有收到错误。
这种不一致的数据可能是什么原因?
卡桑德拉 3.7 版。我正在使用 golang 的 gocql 驱动程序来执行查询。
编辑 - 1
我对所有查询都使用了 QUORUM 级别的一致性。这也是一个间歇性问题。它很少发生并且不容易重现