问题标签 [cassandra-node-driver]
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.
node.js - 使用 Node.js 驱动程序使用 Cassandra 查询 SELECT ... IN 的参数格式
我有一个带有 IN 参数的 Cassandra SELECT 查询,我想通过 Node 驱动程序运行该查询,但无法弄清楚语法。
在 cqlsh 控制台上,我可以运行此选择并获得正确的结果:
但是,尝试使用 Cassandra Node 驱动程序使用 ID 数组运行此查询时,我会收到各种错误,具体取决于格式。这是我尝试过的:
错误是:
ResponseError:uuid 类型的 item_id 的列表文字无效
有了这个:
错误是:
ResponseError:第 1:72 行在输入“[”处没有可行的替代方案(...WHERE company_id = 4 AND [item_id] in...)
item_ids 是一个字符串对象数组,它们是通过另一个 Cassandra 表上的选择获得的。
这是一个工作应用程序,其他不使用“SELECT .. IN”的查询工作正常。
我也可以让它以“丑陋”的方式工作,但不希望:
cassandra - 使用 Nodejs 驱动程序将布尔值插入 Cassandra 不起作用
我已经建立了一个 Cassandra 2.2 集群,包含 3 个节点,复制因子为 2,并创建了一个简单的表:
我正在使用 2.2 Datastax 的 Nodejs 驱动程序在表中插入数据。并像这样编辑数据:
当我插入新记录时,一切正常。当我尝试更改现有记录的启用值时会出现问题。奇怪的是启用的值是随机变化的。例如,如果我发出 3 个请求并将启用的属性更改为 ->true, false, true
在第三个请求之后它可能仍在false
数据库中,或者在第二个请求之后它可能永远不会更改为 false。我不知道这是什么原因。
cassandra - Cassandra Node.js:流式传输大表中的所有行
我在 Cassandra 有一张桌子,实际上不是很大。只有 50k 行。我需要从该表中流式传输所有行并在 Elasticsearch 中对它们进行索引。
我使用以下方法在 Node.js 中编写了一个简单的脚本:
然后开始监听data
事件,创建 1000 行的批量请求,暂停流,索引行并取消暂停流。
这适用于 1000-2000 行。但是现在由于表大小已经增长到 50000 行,我query time out error
在从 Cassandra 获取时得到了。
所以这个过程甚至没有开始。解决此问题的推荐方法是什么?
cassandra - cassandra 上次更新(auto_now),上次访问和创建(auto_now_add)
有没有办法我们可以自动更新列的创建和最后更新/访问的时间戳?
我们可以使用toTimestamp(now())
函数来存储创建时间。但是我们有没有类似 的函数writetime(name)
,用于获取最后修改时间?是否有类似的功能可以读取创建时间和访问时间?
有没有办法让我自动生成和存储所有三个时间戳lastupdated
/lastaccessed
和时间戳?created
node.js - 在 Cassandra node.js 驱动程序中使用中等大小的 fetchSize 时出现帧流错误
我对 Cassandra node.js 驱动程序有一个奇怪的问题。当我尝试从某些分区中选择数据时,我收到此错误。
这里有一些非常奇怪的行为。
- 较小的 s 不会发生这种情况
fetchSize
。例如,我可以始终使用 312 或更高的提取大小使其出错,但每次都使用 311 的提取大小。 - 它只发生在某些分区键上。到目前为止,它似乎正在影响最近添加的键。
- 在单个表中,for 的断点
fetchSize
是一致的。例如,我可以运行,SELECT * FROM TableX WHERE myKey = value1
或者两者都将在240SELECT * FROM TableX WHERE myKey = value2
时开始出错,比如说。fetchSize
但是对于TableY
,限制可能是 284。
我在这里真的有点不知所措。我怀疑这与从单个分区返回太多行有关,但我能够从其他分区获取大量数据(例如,fetchSize
20000 的 a 在大多数分区上都可以正常工作)。
重现该问题的简单代码是
cassandra - dse 驱动程序连接被拒绝
我正在尝试连接到我在服务器上安装的 Datastax 企业 Cassandra。当我尝试连接时,我收到一个错误:
我猜 cassandra.yaml 中的某些内容限制了与 localhost 的连接?
任何帮助将不胜感激!我的 cassandra.yaml 有点长,无法发布,如果需要我可以发布链接
node.js - 将时间戳插入 Cassandra
我有一个如下创建的表:
我可以使用以下节点代码简单地向表中添加一个新行:
但是,我收到以下错误:
'错误:日期 (24) 的预期长度为 8 或 0 字节
当我将时间戳更改为 epoc 时间时:
我得到:d
溢出错误:标准化天数太大而无法放入 C int
我可以通过 cqlsh 插入新行,所以我可能在 node.js 驱动程序中遗漏了一些东西。
任何想法?
谢谢
cassandra - Cassandra 查询失败(墓碑)
所以这让我发疯。我尝试在 Cassandra 中查询我的一张表,结果显示查询失败。我试图深入挖掘其背后的原因,发现这是因为墓碑。我将 GC_GRACE_SECONDS 更改为零并使用 nodetool 触发压缩,当我再次查询时它工作正常。但是在随后的呼叫中,查询再次失败,原因相同。我正在使用 cassandra-nodejs 驱动程序。这是我的数据模型。
这是我要在该数据模型上执行的查询。
结果将有大约 40k 行。 这表明如果我们删除某些内容,它将被标记为墓碑,并在为给定表设置 GC_GRACE_SECONDS 后被删除。如果我理解正确的话。
- 当我从不删除任何表行时,怎么会出现墓碑问题?
- 当且仅当我们删除一行时,一行将被标记为墓碑是真的吗?
- 清除墓碑,然后有时查询相同的作品,有时却没有,为什么会这样?
- 增加tombstone_failure_threshold值是个好主意吗?(单节点集群应用)
我正在使用 cassandra 3.5,带有 cqlsh 版本 5.0.1。并且查询在终端上运行良好,但是当我们使用外部客户端执行时出错(使用 nodejs 驱动程序的 cassandra 快速应用程序)。我有一个单节点集群应用程序。
编辑 1
这是我在字段中插入的空值的日志(我只插入了名称和时间戳);
这是我查询已执行删除查询的字段时的日志。最初,用户Dhaval15的名字是“aaaa”,然后是单元格 aaa。然后再次对同一用户执行选择查询给了我这个日志。
node.js - Node.js 流/管道错误处理(错误时更改响应状态)
我的 Cassandra 数据库中有数百万行我想以 zip 文件的形式流式传输到客户端(不希望内存中可能存在巨大的 zip 文件)。我正在使用 Cassandra-Node 驱动程序中的 stream() 函数,通过管道连接到转换器,该转换器从我关心的每一行中提取一个字段并附加一个换行符,并通过管道将哪些管道归档到 Express Response 对象。这似乎工作正常,但我无法弄清楚如何在流式传输期间正确处理错误。我必须在为客户端流式传输之前设置适当的标头/状态,但是如果流式传输期间出现错误,例如在 dbStream 上,我想清理所有管道并将响应状态重置为类似于 404 .但是如果我在设置标题并开始流式传输后尝试重置状态,我会得到Can't set headers after they are sent
. 当管道/流式传输到 Response 对象时,我已经查看了所有内容,但找不到如何正确处理 Node 中的错误。如果我无法在错误时发送正确的响应代码,客户端如何判断是否实际传输了有效数据?任何人都可以帮忙吗?