如何理解Cassandra中的“灵活模式”?

2024-04-20

我是 Cassandra 的新手,可以在下面的维基百科中找到。

列族(自 CQL 3 起称为“表”)类似于 RDBMS(关系数据库管理系统)中的表。列族包含行和列。每行都由行键唯一标识。每行有多列,每列都有名称、值和时间戳。与 RDBMS 中的表不同,同一列族中的不同行不必共享同一组列,并且可以随时将列添加到一行或多行中。 [29]

它说“同一列族中的不同行不必共享同一组列”,但如何实现呢?官方网站上的文档我几乎都看完了。

我可以创建表并插入数据,如下所示。

CREATE TABLE Emp_record(E_id int PRIMARY KEY,E_score int,E_name text,E_city text);
INSERT INTO Emp_record(E_id, E_score, E_name, E_city) values (101, 85, 'ashish', 'Noida');
INSERT INTO Emp_record(E_id, E_score, E_name, E_city) values (102, 90, 'ankur', 'meerut');

这很像我在关系数据库中所做的。那么如何创建具有不同列的多行呢?

我还发现官方文档提到了‘Flexible schema’,这里怎么理解呢?

首先十分感谢。


列族来自Cassandra最初的设计,当时的数据模型看起来像Google BigTable或Apache HBase,并使用Thrift协议进行通信。但这要求在应用程序内部定义架构,这使得从许多应用程序访问数据变得更加困难,因为您需要更新所有应用程序内部的架构......

The CREATE TABLE and INSERT是很久以前引入的 Cassandra 查询语言(CQL)的一部分,并取代了基于 Thrift 的实现(Cassandra 4.0 完全删除了 Thrift 支持)。在 CQL 中,您需要为表定义架构,其中需要提供列名称和类型。如果您确实需要动态列,有几种方法(我将链接我已经写过的答案,因此不会重复):

  1. 如果您有相同类型的值,则可以使用一列作为属性/列的名称,并使用另一列来存储值,例如此处描述 https://stackoverflow.com/questions/60968338/cassandra-data-modeling-when-columns-are-dynamic/60970294#60970294
  2. 如果您有不同类型的值,您还可以使用一列作为属性/列的名称,并为值定义多列 - 每种数据类型一列:int, text,...,并且您仅将值插入到相应的列中(已描述here https://stackoverflow.com/questions/60203270/cassandra-dynamic-column-family/60204948#60204948)
  3. 您可以使用地图(描述here https://stackoverflow.com/questions/60596982/how-to-handle-dynamic-columns-in-cassandra/60599463#60599463) - 它类似于第一个或第二个,但主要是为非常少量的“动态列”设计的,并且还有其他限制,例如,您需要读取完整的映射来获取一个值等)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何理解Cassandra中的“灵活模式”? 的相关文章

随机推荐

  • 我如何使其解密而不是加密?

    想知道如何从加密代码中获取此代码并使用相同的代码来创建解密 我知道这意味着我必须反转一些指令并重新排序 但我无法弄清楚哪些指令需要重新排序 哪些不需要 编辑 这是完整的函数 可以让事情变得更清晰一些 对堆栈溢出非常陌生 因此对于任何混淆表示
  • 同一台服务器的不同端口是否算跨域? (Ajax 方面)

    XMLHttpRequest 可以发送请求到http mydomain example 81 from http mydomain example 对于被视为具有相同来源的两个文档 协议 http https 域和端口 默认 80 或 xx
  • 以编程方式启动和停止 IIS Express

    我正在尝试用 C 构建一个小型应用程序 它应该启动 停止 IIS Express 工作进程 为此 我想使用 MSDN 上记录的官方 IIS Express API http msdn microsoft com en us library
  • React-native:如何在不单击react-native-maps中的标记的情况下显示工具提示

    我正在使用react native maps模块 我已经给出了纬度和经度值 并且我使用MapView Marker在单击标记时显示标记和工具提示 但是 现在我想在地图最初加载时显示工具提示 而无需单击标记 这是我的代码
  • 使用 eval 加载模块

    我在 Perl 和内置函数方面遇到了一些麻烦eval http perldoc perl org functions eval html 我浏览了网络 但找不到任何答案或示例代码 我想动态加载模块 在执行时间之前我不知道它们 module
  • 嵌套 RibbonApplicationMenuItem 时出错

    我想建立一个RibbonApplicationMenu 其中应嵌套一个RibbonApplicationMenuItem or RibbonApplicationSplitMenuItem 例如喜欢这个
  • Azure Web 角色如何在没有入口点的情况下运行?

    出于好奇 我打开了我的 Azure Web 角色项目 导航到包含以下内容的文件 RoleEntryPoint后代阶级和完全删除了该类定义 然后我打包了该角色并将其部署在 Azure 中 该角色启动时没有任何错误指示 这怎么可能行得通 除了
  • 如何找出 WPF 应用程序中的焦点在哪里?

    我的 WPF 应用程序中有一个搜索屏幕 该屏幕作为 TabControl 的 TabItem 中的 UserControl 实现 当用户切换到 搜索 选项卡时 我希望焦点进入一个特定字段 因此 我向 Xaml 中的 UserControl
  • AKSequencer 计数一或两个小节

    在当前序列开始播放之前需要播放 1 或 2 个小节进行计数 只需点击一下即可计入 能够做类似的事情会很酷 player sequencer setTime MusicTimeStamp 4 将时间设置为0 不起作用 使用 AKSequenc
  • 如何计算scipy中曲线拟合的可能性?

    我有一个非线性模型拟合 如下所示 深色实线是模型拟合 灰色部分是原始数据 问题的简短版本 如何获得该模型拟合的可能性 以便我可以执行对数似然比测试 假设残差服从正态分布 我对统计学比较陌生 我目前的想法是 从曲线拟合中得到残差 并计算残差的
  • YouTube 视频 ID 的最大长度是多少?

    我正在开发一个显示 YouTube 视频的应用程序 我想将视频 id 存储在数据库中 但是因为会有很多视频 我想最小化所需的空间 所以有人知道 youtube 上视频 id 的最大长度吗 几乎可以肯定它会保持在 11 个字符 各个字符来自一
  • 是否可以创建一个不带参数的 C 可变参数函数? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中是否可以有一个没有非可变参数的可变参数函数 https stackoverflow com questions 2622147 is it possible to have a variadic
  • 按渐近增长率对函数排序

    按渐近增长率的非降序列出以下函数 如果两个或多个函数具有相同的渐近增长率 则将它们分组在一起 g1 n n g2 n n 3 4n g3 n 2n log 以 2 为底 n g4 n 2 n g5 n 3 3 log 以 3 为底 n g6
  • 在 JSF 中使用消息束时从验证消息中删除组件 ID

    我正在练习JSF 我创建了一个带有用户 ID 和密码字段的登录屏幕 现在两个输入字段都需要 true 我创建了 message properties 文件并向其中添加了以下验证 ID javax faces component UIInpu
  • Codeigniter:使用 RESTful 服务

    是否有一个易于设置的 Codeigniter REST 库 我可以用它来使用 RESTful 服务 我尝试设置this https github com philsturgeon codeigniter restclient图书馆 但无法设
  • 无法在 macOS High Sierra 上打开 SQL 编辑器

    自从更新到 macOS High Sierra 以来 我一直无法在 MySQL Workbench 上打开 SQL 编辑器 When I try to connect to the database as usual I m given t
  • 如何获取真实的UTC时间戳(与客户端无关)?

    有没有办法获得real当前 UTC 时间戳而不依赖于客户端时间 这可能无法在每个客户端上正确设置 我知道 JavaScript 的getTime 我可以获取以毫秒为单位的 UTC 时间戳 它独立于客户的时区 但我认为它取决于客户的当前时间
  • CoTaskMemAlloc v malloc v AllocHGlobal

    我读过 在 Windows 上 malloc 与 CoTaskMemAlloc 不同 CoTaskMemAlloc 与 AllocHGlobal 不同 对于 C 用户来说 这意味着如果我有一个返回 malloc 指针的 C 函数 我需要对其
  • Android SeekBar 最小和连续浮点值属性

    我正在寻找一种在 SeekBar 中实现最小值的方法 并且还可以选择增加十进制数字 例如 当前我的 SeekBar 的最小值设置为 0 但我需要它从值 0 2 开始 另外 我希望能够让用户以 0 1 的精度选择 0 2 到 10 0 之间的
  • 如何理解Cassandra中的“灵活模式”?

    我是 Cassandra 的新手 可以在下面的维基百科中找到 列族 自 CQL 3 起称为 表 类似于 RDBMS 关系数据库管理系统 中的表 列族包含行和列 每行都由行键唯一标识 每行有多列 每列都有名称 值和时间戳 与 RDBMS 中的