![](/img/trans.png)
[英]Add column in a table mapped using hibernate, without losing existing data
[英]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.