问题标签 [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.
cassandra - Cassandra 调试日志分析
我有一个 cassandra debug.log。它有很多未被任何应用程序触发的 SELECT * 查询。应用程序在 SELECT 查询中请求特定字段,而且查询似乎有一个LIMIT 5000
子句,我很确定在任何应用程序中都不存在。这些查询是由 cassandra 在内部触发的吗?调试日志充满了这样的查询。该应用程序使用 gocql 驱动程序连接到 cassandra。
go - 在 Go 应用程序中使用 Cassandra 插入之前检查行是否存在
我在我的 Go 应用程序中使用gocql并尝试解决下面描述的问题。
此查询将覆盖匹配记录,这是 Cassandra 的预期行为。
为了防止覆盖现有记录,我们可以IF NOT EXISTS
在查询结束时使用。
但是,我无法知道查询是否影响了数据库中的任何行。不知何故,我需要将“记录存在”消息返回给调用者,但目前不可能。如果有一些特定的东西session.Query(...).Exec()
会很有用,但据我所知没有。
如果没有匹配的记录,我在继续之前考虑SELECT
过,但是您可以猜到这是不可行的,因为当我在之后编辑新记录时,其他一些操作可能已经使用相同的电子邮件地址编辑了新记录。email_address
INSERT
INSERT
SELECT
INSERT
我们如何处理这种情况?
go - 将时间戳写入数据库 - gocql vs cqlsh
在 cassandra 数据库中写入时间戳的所需格式:
使用 cqlsh 语法进行插入查询:
能够使用以下格式编写上述格式
toTimeStamp(toDate(now()))
使用 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()
写createdDate
为2021-01-17 21:51:46.195
?因为cqlsh
能够使用_toTimeStamp(toDate(now()))
go - CQL 不允许我读取范围内的数据
我正在使用 GOCQL 查询一系列时间戳中的数据。当我查询数据 <= 某个时间时,下面的代码可以正常工作。当我查询数据> =某个时间时,它又可以正常工作了。当我结合这两个约束时,返回的切片是空的。
sql - 为什么 Cassandra 在插入重复记录时不会出错?
CQL 版本 5.0.1
卡桑德拉版本 3.11.9
在插入相同的记录时(如下所示),
Cassandra 在插入重复记录(具有相同的主键)时是否不显示错误?相反,它会更新记录
如果否,如何在使用 gocql 插入相同记录时错误处理重复记录?对于httpPOST
请求......我们还没有使用幂等密钥
RDBMS SQL 服务器给出了类似的错误Cannot insert duplicate key row
database - 在 Go-routine 上执行插入查询
以下是使用gocql
驱动程序的查询:
Cassandra 3.0 中的表模式是:
我们有一个INSERT
在多个 Go 例程(http 处理程序)上发起的上述查询的场景,具有相同的列值组合(id_1, id_2)
,然后,
Cassandra 是否确保只有第一个
INSERT
操作成功执行?并使用数据库中INSERT
的现有值组合错误输出后续请求(id_1, id_2)
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请求)需要设置什么一致性级别,才能保证完全一致
database - 如何在插入查询成功后绑定数据库记录
ScanCAS()
&MapScanCAS()
仅当插入语句未应用于数据库表时才返回数据库行(旧)的值。
插入成功后如何绑定表行的值?因为ScanCAS
仅在插入查询尝试失败时才绑定值(以前的)....
go - gocql 如何遍历来自选择查询的数据
我一直在寻找一种从 cassandra 中选择数据并将其加载到数组中的方法,因为我想处理需要从上一个或下一个索引中获取数据的系列数据。我发现的是一个迭代器,文档中的所有示例都让它走到下一个
谢谢
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”:
创建的表:
和客户端代码:
我想知道是否有人可以给我一些关于我还能寻找什么的建议?