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)和轻量级事务 的相关文章

  • 用于多个 ContentProvider 的 CursorLoader

    我需要制作一个 ListAdapter 来显示来自多个 ContentProvider 的数据 ContentProvider 本身代表关系数据库中的一张表 我想使用 CursorLoader 系统将聚合数据检索到 ListView 中 这
  • 如何知道 Cassandra 中键空间和列族的大小?

    最近 我开始使用 cassandra 的 Java 驱动程序 cassandra driver core 2 0 2 进行 Grails 与 Cassandra 的集成 因此 我很好奇如何知道我们的表在 cassandra DB 中存储数据
  • 在插入 SQLite 之前检查表 B 中的日期是否在表 A 中的日期之间

    我有一个名为 项目 的表 其中包含开始日期和结束日期 我还有一个名为 Plan 的表 它有自己的开始日期和结束日期列 但我通过某种方式验证计划开始 结束日期是否在匹配的项目开始 结束日期之间 我不知道在创建表或向计划表中插入行时添加检查是否
  • 使用git在测试和生产环境之间同步数据库

    我正在尝试在 php mysql 应用程序的开发过程中实现 git 到目前为止 我已经设置了 git repos 并且我们正在使用本地计算机进行测试 并且我们成功地将其用于文件 但我真的不知道如何处理数据库 服务器上有一个 cron 脚本
  • 播种方法是插入具有 NULL 值的附加实体

    我突然出现这种奇怪的行为 我在版本控制 tfs 中比较了我的文件 以确保我没有更改任何内容 也没有发现任何不同 我正在用一些元数据播种我的数据库 我发现它有一个我以前从未见过的非常奇怪的行为 我正在插入一个实体 产品 它会插入该实体2 ti
  • 在 MongoDB 中查找 7 天前的记录

    我有一个包含对象的集合 如下所示 1 id ObjectId 551c6605e4c6ac495c923aab sender id ObjectId 551c6605e4c6ac495c923aac rep sender id 38 sen
  • 如何打开sqlite数据库并将其转换为pandas dataframe

    我已经下载了一些数据作为 sqlite 数据库 data db 我想在 python 中打开这个数据库 然后将其转换为 pandas 数据框 这是到目前为止我所做的 import sqlite3 import pandas dat sqli
  • 哪些 ORM 与 Scala 配合得很好? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 关于ORA 21000

    我正在与 ORA 21000 作斗争 上面写着ORA 21000 raise application error 的错误号参数 3739 超出范围 此错误间歇性出现 我不知道为什么会发生这种情况 早些时候这工作得很好 但是从 Solaris
  • 在哪里可以下载可用作数据仓库的示例数据库? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在哪里可以下载可用于创建数据仓库的示例数据库 它不应该是来自 Microsoft Northwind
  • 我想在 Red Hat Linux 服务器中执行 .ps1 powershell 脚本

    我有一个在窗口中执行的 ps1 powershell 脚本 但我的整个数据都在 Linux 服务器中 有什么可能的方法可以让我在红帽服务器中执行 powershell 脚本 powershell脚本是 Clear Host path D D
  • 数百个别名/同义词与数据库表的完全限定名称

    考虑到多个模式中的数百个数据库表 在创建存储过程和视图时 您是否建议使用别名 同义词或完全限定名称 给定一些 schema table 像这样 Orders OrderHeader Production LineThroughput Sal
  • DB2连接授权失败原因:Java不支持安全机制

    我正在尝试使用 DB2JDBC Type4 驱动程序配置 DB2 连接 但我收到这个错误 线程 main 中的异常 com ibm db2 jcc am SqlInvalidAuthorizationSpecException jcc t4
  • PostgreSQL 中字符串列类型的索引数组

    是否可以在类型为的列上创建索引文本数组 尝试使用GIN索引 但查询似乎没有使用这些索引 Example CREATE TABLE users name VARCHAR 100 groups TEXT Query SELECT name FR
  • 什么时候不应该使用 Cassandra? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 相关话题已经有很多讨论了卡桑德拉 http cassandra apache org lately Twitter Digg Facebook
  • CloudKit 通过 cron 作业发送推送通知?

    我正在创建一个大学餐饮菜单应用程序 在其中我需要根据每日菜单发送推送通知 最初 我计划通过 Heroku 将用户数据存储在数据库中 并使用 cron 作业将数据库中的数据与每日菜单进行比较 并向用户发送适当的通知 然而 在 Cloudkit
  • 如何在 Delphi DBLookupComboBox 中选择正确的项目

    我有一个数据库查找组合框连接到数据库查询 那部分工作正常 当我运行程序时数据库查找组合框填充有查询的结果 我想看看数据库查找组合框填充第一项 请选择 当 的时候程序第一次运行或者当一个新项目行动已启动 见下图 另外 如果我正在加载以前保存的
  • 社交应用程序的数据库设计和优化注意事项

    通常的情况 我有一个简单的应用程序 允许人们上传照片并关注其他人 因此 每个用户都会有类似 墙 或 活动源 的东西 他或她可以在其中看到他 她的朋友 他或她关注的人 上传的最新照片 大多数功能都很容易实现 然而 当涉及到这个历史活动源时 由
  • 如何在 PostgreSQL 中将数据库从一台服务器移动到另一台服务器?

    我正在尝试将数据库从旧服务器移动到新服务器 任何帮助 将不胜感激 Just pipe http www postgresql org docs current interactive migration html从旧服务器转储到新服务器 p
  • 什么是数据库池?

    我只是想了解数据库连接池的概念以及它是如何实现的 数据库联系池是一种用于保持数据库连接打开的方法 以便其他人可以重用它们 通常 打开数据库连接是一项昂贵的操作 尤其是在数据库位于远程的情况下 您必须打开网络会话 进行身份验证 检查授权等等

随机推荐