Cassandra(复制因子:2,节点:3)和轻量级事务

2024-01-11

我们有一个运行 3 个节点且复制因子为 2 的 cassandra 集群 -> 也许我们应该从一开始就选择 3,但事实并非如此。

因此,我们的法定人数 = 2/2 + 1 = 2

假设我们丢失了一个节点 - 所以现在只有两个 cassandra 节点在线。

如果我们将一致性级别设置为“ONE”,然后读取 ->,我们仍然可以从集群中读取数据,所以这不是问题。

我不明白的是以下内容。

我们仍然有两个节点正在运行,那么为什么不能在我们的键空间中进行串行(轻量级事务)插入呢?我们有两个节点,所以在尝试插入时是否应该能够获得 2 的法定人数?

是因为其中一行已经放在丢失的节点上吗?


当您尝试插入数据时,数据将根据令牌值(基于配置的分区器)存储并以循环方式复制。

例如如果您在 3 节点集群 Node1(拥有令牌 A)、Node2(拥有令牌 B)和 Node3(拥有令牌 C)中的复制因子为 2 的键空间中插入数据 X。假设如果数据 X 计算为令牌 B,则 Cassandra 开始从 Node2 和 Node3 插入数据(直到完成副本)。假设如果数据 X 计算为标记 C,那么 Cassandra 开始从 Node3 和 Node1 插入数据。

因此设置一致性级别为2意味着数据必须写入2个节点。 在您的情况下,即使您在 Node1(令牌 A)和 Node2(令牌 B)上有 2 个节点,在 Node3 下有一个节点(令牌 C),如果数据被计算并选择为令牌 B,那么 Cassandra 会尝试插入 Node2 并Node3 并且您会收到一致性错误,因为它无法插入到 Node3 中。

因此,要插入,您必须将复制增加到 3 或将一致性减少到 1。

要了解有关一致性的更多信息,请参阅此文档https://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_config_consistency_c.html https://docs.datastax.com/en/cassandra/2.1/cassandra/dml/dml_config_consistency_c.html

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Cassandra(复制因子:2,节点:3)和轻量级事务 的相关文章

  • 如何在数据库中找到实际的联系表7结构?

    我想找到我所有表单的实际代码 有很多 例如 cf7 代码如下所示
  • 如何找到 Oracle 数据库的 URL?

    如何找到 Oracle 数据库的 URL 和端口 Example jdbc oracle thin host port dbName 用户名 密码 是否有我可以查看的 SQL 命令或日志 配置文件 对于甲骨文来说 有一个tnsnames o
  • CAP 定理 - 可用性和分区容错性

    当我尝试理解CAP中的 可用性 A 和 分区容错性 P 时 我发现很难理解各种文章的解释 我感觉A和P可以在一起 我知道事实并非如此 这就是为什么我无法理解 简单解释一下 A和P是什么以及它们之间的区别 一致性意味着整个集群中的数据是相同的
  • 在同一个表上组合两个 SQL SELECT 语句

    我想结合这两个 SQL 查询 SELECT FROM Contracts WHERE productType RINsell AND clearTime IS NULL AND holdTime IS NOT NULL ORDER BY g
  • 如何在我的 iOS 项目中添加和执行 .sql 文件?

    我找到了很多关于在 iOS 中使用 SQLite 数据库的教程 但没有找到任何直接引用 sql 文件的内容 谁能告诉我如何将现有的 SQL 数据库链接到我的应用程序 编辑 这是一个 MySQL 转储 我们有一个基于浏览器的抽认卡程序 现在我
  • 在 PHP 中将十进制/双精度/浮点值与 PDO 绑定的最佳方法是什么?

    看来类常量只涵盖PDO PARAM BOOL PDO PARAM INT and PDO PARAM STR用于绑定 您只是将十进制 浮点 双精度值绑定为字符串还是有更好的方法来处理它们 MySQLi 允许使用 d 类型表示 double
  • 从数据库 MYSQL 和 Codeigniter 获取信息

    如果你们需要其他信息 上一个问题就在这里 从数据库中获取信息 https stackoverflow com questions 13336744 fetching information from the database 另一个更新 尽
  • DBMS 中的阻塞因素

    DBMS 中的阻塞因素是什么 我查看的位表示它是每个记录的块的下限值 因此 B R 下限 其中 B 是块大小 R 是记录 我只是想知道 有人可以告诉我它使用的主要原因 以及它是否真的是地板 我对 FLOORED 的理解是 1 5 降到 1
  • 内存高效的大型数据集流式传输到 S3

    我正在尝试使用 SQL alchemy 复制 S3 大型数据集 大于 RAM 我的限制是 我需要使用 sqlalchemy 我需要将内存压力保持在最低水平 我不想使用本地 filsystem 作为中间步骤将数据发送到 s3 我只想通过管道将
  • 不能为实体类型指定过滤表达式。过滤器只能应用于层次结构中的根实体类型

    我在添加新迁移时遇到此错误 无法为实体类型 Babysitter 指定筛选表达式 e gt Not e IsDeleted 过滤器只能应用于层次结构中的根实体类型 我正在做的是 我有 2 个类 Babysitter 和 Parent 它们都
  • MySQL 行级锁

    我不确定行级锁是如何工作的 但这是我的问题 我有一个表 T id int balance int engine InnoDB 我想锁定 ID 1 的行 所以我开始一个像这样的事务 start transaction select from
  • 用户离开时如何正确插入时间( user_left 和 user_joined 具有相同的值)

    在这段代码中 我想获取用户加入和离开的时间并将其存储到数据库中 如果我在 连接 表和 左 表中获得相同的值 会发生什么情况 如何修复它以便它存储不同的值 Schema create user info function Blueprint
  • 使用 System.out.println 显示特殊字符

    我在将带有特殊字符的文本从网络服务发送或显示到数据库时遇到问题 在我的 Eclipse 上 我已将字符编码设置为 UTF 8 但它仍然不允许我显示字符 例如 像下面的代码一样简单的打印 String test System out prin
  • 将“选票”存储在数据库中

    我正在编写一个 Intranet 应用程序 其功能之一大致类似于内容投票 与 SO Amazon 和许多其他网站的做法不同 假设每个可投票的内容都有一个唯一的 ID 并且每个用户 他们经过身份验证 都有一个唯一的 ID 最简单的方法似乎是有
  • 数据库设计 - “推”模型,或写时扇出

    背景信息 我正在尝试检索我关注的人的图像 按最新时间排序 它就像 Twitter 新闻源 显示您朋友的最新动态 Plans 目前我只需要考虑一项 那就是图像 将来我计划分析用户的行为并将他们可能喜欢的其他图像添加到他们的提要中等 http
  • 表行为的 cassandra TTL

    假设我在 secondary 1 处插入一列 在 secondary 2 处插入另一列 表的默认 TTL 设置为 10 秒 例如 问题1 data1 和 data2 是否会在 10 秒后被删除 或者 data 1 将在 10 秒后被删除 d
  • Cassandra 会话与集群 有什么可分享的?

    考虑 Cassandra 的 Session 和 Cluster 类 Java 驱动程序 我想知道有什么区别 在 Hibernate 中 每次都会创建一个会话并共享会话工厂 从许多来源我了解到 它被认为是创建一个会话并在多个线程之间共享它
  • 如何将UTF-8编码的汉字从MySql正确导出到SQL

    过去三天我们正在与严重的问题作斗争 我们从PhpmyAdmin导出MySql数据库文件 数据库条目中写入的数据是带有UTF 8字符集的中文 导出后将其转换为拉丁字符集 现在我们正在将此数据库SQl文件导入到其他主机 我们在UTF 8和排序规
  • Android spinner 将多列(连接)Sqlite 数据库加载到表中

    我正在学习如何创建一个从 SQLite 加载下拉列表的微调器 我有一个由旋转器和表格组成的用户界面 如果用户单击微调器 表的内容将根据微调器上选定的 ID 根据数据库加载 如果未选择名称 它将加载表中的所有内容 但是我找不到如何根据微调器上
  • .NET 表适配器:获取与填充?

    在处理数据库中的数据 强类型或其他方式 时 我似乎总是使用 Get 并且我从未真正需要使用 Fill 尽管在提取和更新数据时我可以轻松地使用 Fill 而不是 get 任何人都可以提供有关每种方法的含义和陷阱的指导吗 在什么情况下最好使用其

随机推荐