繁体   English   中英

将列添加到 Cassandra 数据库而不会丢失数据

[英]Add Column to Cassandra db with out losing data

我正在使用集成到 Spring Boot 应用程序中的 Cassandra 数据库。

我的问题是围绕架构操作。 如果我需要对数据库进行结构更改,比如向表中添加一列,则需要重新创建数据库,但这意味着所有现有数据都将被删除:

schema-action: CREATE_IF_NOT_EXISTS

我设法解决这个问题的唯一方法是使用RECREATE方案操作,但如前所述,这会导致数据丢失。

处理这个问题的最佳方法是什么? 要添加结构更改(例如列名)而不必重新创建数据库并丢失所有现有数据?

谢谢

Cassandra 确实允许您通过cqlsh使用ALTER TABLE语句修改现有表的架构,而无需从头开始重新创建它。 但是,如该链接中所述,您可以进行的更改类型存在一些重要限制。 您根本无法修改表的主键,您可以添加或删除常规列,并且您不能将列的类型更改为不兼容的列。

大多数这些限制的原因是 Cassandra 需要如何处理表中已经存在的旧数据。 例如,说直到现在包含字符串的 A 列现在将包含整数是没有意义的 - 我们应该如何处理 A 列中所有不是整数的旧值?

正如 Aaron 在评论中正确地说的那样,您不太可能希望将这些架构更改作为应用程序的一部分进行。 这些通常是手动完成的罕见操作,或通过某些管理应用程序完成 - 而不是您常用的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM