问题标签 [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.

0 投票
1 回答
276 浏览

cassandra - Cassandra 调试日志分析

我有一个 cassandra debug.log。它有很多未被任何应用程序触发的 SELECT * 查询。应用程序在 SELECT 查询中请求特定字段,而且查询似乎有一个LIMIT 5000子句,我很确定在任何应用程序中都不存在。这些查询是由 cassandra 在内部触发的吗?调试日志充满了这样的查询。该应用程序使用 gocql 驱动程序连接到 cassandra。

0 投票
2 回答
167 浏览

go - 在 Go 应用程序中使用 Cassandra 插入之前检查行是否存在

我在我的 Go 应用程序中使用gocql并尝试解决下面描述的问题。

此查询将覆盖匹配记录,这是 Cassandra 的预期行为。

为了防止覆盖现有记录,我们可以IF NOT EXISTS在查询结束时使用。

但是,我无法知道查询是否影响了数据库中的任何行。不知何故,我需要将“记录存在”消息返回给调用者,但目前不可能。如果有一些特定的东西session.Query(...).Exec()会很有用,但据我所知没有。

如果没有匹配的记录,我在继续之前考虑SELECT过,但是您可以猜到这是不可行的,因为当我在之后编辑新记录时,其他一些操作可能已经使用相同的电子邮件地址编辑了新记录。email_addressINSERTINSERTSELECTINSERT

我们如何处理这种情况?

0 投票
1 回答
81 浏览

go - 将时间戳写入数据库 - gocql vs cqlsh

在 cassandra 数据库中写入时间戳的所需格式:

使用 cqlsh 语法进行插入查询:

  1. 能够使用以下格式编写上述格式toTimeStamp(toDate(now()))

  2. 使用 cqlsh,我无法使用toUnixTimestamp(now()). toUnixTimestamp(now())写入格式2021-01-17 21:51:46.195000+0000


gocql.Session.Query(insertQueryString, createdDate).Exec()代码也写入createdDate数据库,类似于 cqlsh 的格式,toUnixTimestamp(now())如下2021-01-17 21:51:46.195000+0000所示:

在此处输入图像描述


JimB 已经解释过:“同样,time.Time 没有格式。如果需要,您可以将其格式化为字符串,这在许多其他答案中都有解释。”

但,

如何使gocql.Session.Query(insertQueryString, createdDate).Exec()createdDate2021-01-17 21:51:46.195?因为cqlsh能够使用_toTimeStamp(toDate(now()))

0 投票
1 回答
22 浏览

go - CQL 不允许我读取范围内的数据

我正在使用 GOCQL 查询一系列时间戳中的数据。当我查询数据 <= 某个时间时,下面的代码可以正常工作。当我查询数据> =某个时间时,它又可以正常工作了。当我结合这两个约束时,返回的切片是空的。

0 投票
1 回答
87 浏览

sql - 为什么 Cassandra 在插入重复记录时不会出错?

CQL 版本 5.0.1

卡桑德拉版本 3.11.9


在插入相同的记录时(如下所示),


Cassandra 在插入重复记录(具有相同的主键)时是否不显示错误?相反,它会更新记录

如果否,如何在使用 gocql 插入相同记录时错误处理重复记录?对于httpPOST请求......我们还没有使用幂等密钥

RDBMS SQL 服务器给出了类似的错误Cannot insert duplicate key row

0 投票
1 回答
63 浏览

database - 在 Go-routine 上执行插入查询

以下是使用gocql驱动程序的查询:


Cassandra 3.0 中的表模式是:


我们有一个INSERT在多个 Go 例程(http 处理程序)上发起的上述查询的场景,具有相同的列值组合(id_1, id_2),然后,

Cassandra 是否确保只有第一个 INSERT操作成功执行?并使用数据库中INSERT的现有值组合错误输出后续请求(id_1, id_2)

0 投票
1 回答
39 浏览

database - 每个 POST 请求执行多次插入

我们有一个场景,每个id_2给定的插入发生id_1在 Cassandra 中,对于下面的模式:


单个 POST 请求正文具有多个值的详细信息id_2。这会在单个表上触发每个 POST 请求的多个插入。

每个 INSERT 查询执行如下所示:


1

Cassandra 是否确保每个 POST 请求在单个表上多次插入的数据一致性?每个 POST 请求都在 Go-routine(线程)上处理。后续的 GET 请求应确保检索到一致的数据(通过 POST 插入)

使用 BATCH 语句在暂存和生产中存在“批量太大”的问题。https://github.com/RBMHTechnology/eventuate/issues/166

2

我们有两个数据中心(用于 Cassandra),每个数据中心有 3 个副本节点。

写查询操作(POST请求)和就绪查询操作(GET请求)需要设置什么一致性级别,才能保证完全一致

0 投票
0 回答
29 浏览

database - 如何在插入查询成功后绑定数据库记录

ScanCAS()&MapScanCAS()仅当插入语句未应用于数据库表时才返回数据库行(旧)的值。


插入成功后如何绑定表行的值?因为ScanCAS仅在插入查询尝试失败时才绑定值(以前的)....

0 投票
1 回答
57 浏览

go - gocql 如何遍历来自选择查询的数据

我一直在寻找一种从 cassandra 中选择数据并将其加载到数组中的方法,因为我想处理需要从上一个或下一个索引中获取数据的系列数据。我发现的是一个迭代器,文档中的所有示例都让它走到下一个

谢谢

0 投票
1 回答
57 浏览

cassandra - Cassandra 集群:多个节点的写入速度降低

我正在使用 3 个节点作为 POC 测试 Cassandra 4.0,所有节点都使用具有 8GB RAM 和 2 个内核的 VM。虚拟机的创建方式确保它们不共享 I/O。

我启动了第一个节点,客户端中有 50 个线程,插入 150,000 条记录需要 7 秒(无批处理)。所以写入速度是22k/sec。然后我添加了第二个节点,并启动了另一个客户端(与第一个客户端同时写入不同的表),具有 50 个线程,同时插入 150k 条记录,两个客户端需要 18 秒才能完成,因此写入速度变为 16k/秒. 最后,我添加了第 3 个节点,使用 2 个客户端,插入 300k 条记录需要 27 秒,因此写入速度变为 11k/秒。显然,写入速度随着添加更多节点而降低。

我检查了 CPU 使用率,它在 70~80% 左右。

以下是“nodetool status”的结果:

结果来自“nodetool tpstats”:

创建的表:

和客户端代码:

我想知道是否有人可以给我一些关于我还能寻找什么的建议?