问题标签 [cassandra-2.1]

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 投票
3 回答
892 浏览

amazon-ec2 - Cassandra 写入基准,低 (20%) CPU 使用率

我正在 Amazon EC2 上构建 Cassandra 3x m1.large 集群。我使用了 DataStax Auto-Clustering AMI 2.5.1-pv 和 Cassandra DataStax Community 版本 2.2.0-1。

在对“生产”数据进行写入基准测试时,集群似乎每秒可以处理大约 3k 到 5k 的写入请求,而没有读取负载。几乎所有时间节点都这样做:

  • system.hints 的压缩
  • mykeyspace.mybigtable 的压缩
  • mybigtable 索引的压缩

但是,让我担心的是 CPU 使用率低。所有 3 个节点的 CPU 使用率都在 17% 到 24% 之间。CPU使用率是不是太低了?这不是限制我的写入速度吗?对我来说可能是 100%。

顺便提一句。如何检查限制我的写入性能的因素(CPU、内存、网络、磁盘)?

以下是一些统计数据:

网络统计

tpstats

最佳

iostat

编辑:

  • 我正在插入很好地分布在集群周围的数据
  • 我正在使用一致性级别一
0 投票
3 回答
6170 浏览

cassandra - Cassandra 中的模式更改正在超时

我尝试设置一个 2 节点 Cassandra 设置,它已经完成了。节点似乎连接,如下所示:

1) 每个 DDL 类型的操作都在这里超时:

或者

2)虽然,上述操作超时,但我可以在片刻后看到这些键空间,但这些键空间不会被复制到其他任何replication_factor = 2的地方。不确定这些超时错误是否与复制有关,因为我尝试了通过停止 2 个节点中的一个来实现相同,但即使在此之后也会出现相同的超时错误。

0 投票
1 回答
86 浏览

cassandra - 带有索引的 Cassandra 帐户建模

我们在 cassandra 中使用社交登录对帐户表进行建模,我们选择电子邮件作为主键和瘦行实现。我们的 cassandra 在 version 上2.1.6。这是表定义:

这对于电子邮件访问来说很好,因为当我们知道登录后的电子邮件地址时,我们可以快速访问每个帐户。

除了电子邮件登录选项外,用户还可以使用社交帐户登录/注册。当使用社交帐户登录时,流程是转到社交网络,接收社交 ID(facebook、twitter、linkedin),可能还有电子邮件并通过社交 ID 查询帐户表以获取完整帐户,或者只是电子邮件并继续在每个 API 请求上使用电子邮件。

facebook_id我们目前在, twitter_id,上添加了索引linkedin_id来支持这一点,因为我们处于 MVP 阶段,只有一个节点,我们选择 fats 实现而不是性能。

对此建模的正确方法是什么?以下是我们正在考虑的几个建议:

  • 离开索引实现,因为通过社交 ID 获取仅在登录一次时发生(在使用该电子邮件之后)
  • 每个社交 ID 都有一个表格,其中包含社交 ID 电子邮件对
  • 每个社交 ID 都有一个表格,该表格将保存完整帐户(可以编辑帐户,因此这会增加更新的复杂性)
  • 别的东西?

另一个问题是,当您对很少发生的访问路径进行建模时,具有高基数字段(如社交 ID)的索引实现真的那么糟糕吗?

0 投票
2 回答
42 浏览

datastax-enterprise - Datastax Enterprise:在复制完成之前添加了节点服务数据

我们在 Datastax Enterprise 中有一个由 3 个 Cassandra 2.1 节点组成的集群;我们不得不更换出现硬件故障的节点之一。当我们添加第三个节点时,它在完成数据同步之前立即开始服务请求。

我的问题:在我们知道复制完成之前,有没有办法将节点标记为不可用?我们不能在我们的生产轮换中使用这台机器。我将节点关闭,但当它关闭时,它不会回填数据。

请让我知道,谢谢,

鲍勃格拉塞特

0 投票
1 回答
197 浏览

data-modeling - 在 Cassandra 中处理关系模型

背景

我们之所以选择 Cassandra 作为我们的存储引擎,是因为我们有一个应用程序必须处理网站上许多用户之间的异步消息传递和事件存储(某些类型的分析、网站上发生的事情和时间等)。此外,我们有一个投票平台,因此我们每天为每位用户存储投票,而 Cassandra 在这些用例中表现出色。

最近我们有了在现有系统之上构建关系模型的新要求(至少我们认为它是关系模型)。某些类型的政治候选人,包括工作、教育、历史投票、背书等清单。

问题

我们有可以在两端编辑的关系(即候选人由公司支持,但在我们的管理面板中,可以在没有候选人的情况下编辑公司)。候选是我们的 Cassandra DB 中由 UUID 标识的一行。在前端,我们需要有关候选人的完整信息(政党、学校、工作、投票历史、支持公司)。我们希望将大部分候选信息放在一行中,以便我们可以通过单次读取来读取数据。但是,当我们放置支持公司 UDT 的列表时,我们在编辑它时遇到了问题(我们需要在表格中进行更改)company_by_idcandidate_by_id

问题

在我们的情况下如何解决编辑问题和关系模型问题?

我们提出了几个解决方案:

  1. 使用额外的类似索引的表跟踪 Cassandra 中的关系:candidates_by_supporting_company. 更新公司时,我们也会更新拥有该公司的候选人。
  2. 与 1 类似,但如果关系低肉质并基于二级索引进行更新,则使用二级索引(我们有 10 个政党,因此我们可以将索引放在候选人表中的政党上,当政党发生变化时,我们可以按政党更改候选人,因为我们有索引)
  3. 对关系类型的数据使用关系数据库,让 Cassandra 只处理合适的用例,如时间序列数据、消息传递、事件排序(这会增加一个数据库的维护成本、部署成本和问题,因为我们的系统是分布式的有数据复制)
  4. 使用 Spark 进行连接(这将不是将 Spark 添加到系统的唯一目的,我们正在考虑添加它以导入 CSV 中的大量数据集并进行转换,因此拥有 Spark 将是一个额外的好处,我们可以使用 SparkSQL我们需要加入的地方)

我们倾向于选项 3,因为无论如何我们都会添加 Spark,我们将只使用 Cassandra 数据库(这不会使维护和部署另一个数据库变得复杂),并且我们在应用程序级别上获得了一种高效的 JOINS 和 GROUP BY。

你怎么看?

0 投票
2 回答
583 浏览

cassandra - Cassandra - 在同一组服务器上运行多个集群

我是卡桑德拉的新手。我有 6 台物理服务器,运行 2 个数据中心 Cassandra 集群。

Cass_cluster_1

服务器 1 DC1:rac1 服务器 2 DC1:rac1 服务器 3 DC1:rac1

服务器 4 DC2:rac1 服务器 5 DC2:rac1 服务器 6 DC2:rac1

我可以使用相同的服务器并运行另一个具有不同键空间和表的 Cassandra 集群吗?我需要单独安装 Cassandra 吗?我会使用不同的端口来监听地址等吗?这甚至可行吗?

想创建 Cass_cluster_2

服务器 1 DC1:rac1 服务器 2 DC1:rac1 服务器 3 DC1:rac1

服务器 4 DC2:rac1 服务器 5 DC2:rac1 服务器 6 DC2:rac1

0 投票
2 回答
1682 浏览

cassandra - Cassandra:对于单节点集群,keyspace 复制因子 >1 会增加磁盘空间使用率吗?

我有一个复制因子设置为 3 的键空间,但我只有一个节点。那么磁盘空间会被使用 3 倍的数据大小吗?由于副本尚未分配给任何其他节点,除非有新节点加入集群,否则 cassandra 会停止创建副本吗?

0 投票
1 回答
1062 浏览

java - Cassandra 触发器用于在更新另一个表时更新一个表

我正在通过cassandra中的触发器实现。我想实现触发器,以便使用已修改的表的旧值更新表。假设我在 keyspace keyspace1 中有一个表说 test_table。我还有一个表,说 table_track 在同一个键空间中,列 columnname 和 columnvalue。现在,当在 test_table 中更新一行时,我想将行数据(在执行更新查询之前的 test_table 中)分别填充到列 columnname 和 columnvalue 中。

我在任何地方都找不到有关 cassandra 触发器的任何适当文档。我设法以某种方式实现 InvertedIndex 和一些小例子

我如何修改增强方法来实现该功能。肿瘤坏死因子

0 投票
1 回答
220 浏览

datatables - 用于 NoSQL 数据库的 jQuery DataTables 1.9.0 分页

jQuery DataTables 1.9.0 有一些属性,例如iDisplayStartiTotalRecords,它们有助于使用分页从服务器获取部分请求。

这似乎适用于 MySQL (RDBMS) 等数据库。

但最近我们转向了 NoSQL Cassandra。但我们面临的唯一和主要问题是迁移 jQuery DataTables 查询,我们过去常常使用开始和结束限制来查询行。

不幸的是,我还没有深入研究 Cassandra 以找到这样的开始和结束限制查询,我认为它甚至不存在。我的列族也不能有 id 列。我想你们中的许多人可能已经经历过这个问题,并且可能会帮助我解决这个问题。

0 投票
1 回答
179 浏览

cassandra - Cassandra:使用 UDT 最小化元数据开销

我有一个 40 列的 RDBMS 表,我将其移植到 Cassandra。

在http://docs.datastax.com/en/cassandra/2.1/cassandra/planning/architecturePlanningUserData_t.html使用估算器

我创建了一个包含列名、数据类型、每列大小等的 Excel 表。当实际数据只有 192 字节时,每个 RDBMS 行的 Cassandra 特定开销高达 1KB。

由于开销与列数成正比,我认为如果我只为不属于主键的字段创建一个 UDT 会更好。这样,我只会产生一次列开销。

另外,我不打算对 UDT 的内部字段运行查询。即使我确实想要,Cassandra 在非 PK 字段上的查询功能也非常有限。

这是一个很好的策略吗?有什么陷阱吗?所有这些开销都可以通过压缩或其他一些内部操作轻松消除吗?