cassandra表重命名方案

 

cql3.0中并没有给出重命名表的方式,所以需要从cassandra启动读取数据库文件、快照备份和还原的原理来入手

cassandra启动时会加载system_schema中的表的元信息然后根据这些元信息去定位数据文件位置

而cassandra快照的原理又是如下

 

1.将原有表目录下的文件做硬链接至./snapshots/目录下(元信息等一些比较小的文件采用直接写入的方式,data文件采用硬链接的方式)

2.保留原本的文件,新建sstable,之后的数据全部往新的sstable中写入

 

因此结合起来就有了如下方案

原表名test_keyspace.original_table
1.复制原表名,建立一张相同结构的test_keyspace.new_table
2.执行
select id from system_schema.tables where keyspace_name='test_keyspace' and table_name='original_table';
获取旧表id(去掉uuid中的-) 83663110f34e11e684938968567b65fc
3.执行
select id from system_schema.tables where keyspace_name='test_keyspace' and table_name='new_table';
获取新表id(去掉uuid中的-) 8f0650e01e8c11e7806a711ecf84b4d2
4.停止该表写入
5.执行./nodetool flush将内存中文件写入数据库
6.执行./nodetool compact test_keyspace original_table合并sstable
7.cd进入original_table-83663110f34e11e684938968567b65fc
8.执行ls ./|xargs -i ln ./{} ../new_table-8f0650e01e8c11e7806a711ecf84b4d2/{}把内容硬链接到新表目录下(这个时候new_table因为是新表的原因应该并没有任何数据库文件,如果有,删掉)
9.执行./nodetool refresh test_keyspace new_table同步新表数据
10.删掉旧表
11.开启新表写入

Cassandra是一个分布式数据库,设计在Cassandra中非常重要。以下是关于Cassandra设计的一些重要考虑因素: 1. 数据模型:Cassandra的数据模型是基于Wide Column Store的,类似于键值对的形式。因此,在设计时,需要考虑数据的分布和存储方式。一般来说,每个应该只包含相关的列,并且尽量避免使用JOIN操作。 2. 主键设计:主键在Cassandra中非常重要。主键由分区键和排序键组成。分区键用于在集群中分布数据,而排序键用于对数据进行排序。精心设计主键可以提高查询性能和数据分布的均衡性。 3. 数据复制:Cassandra是一个分布式数据库,具有数据复制和冗余功能。在设计时,需要考虑复制因子和策略。复制因子是指每个分区要复制的副本数量,而复制策略定义了如何在集群中分布副本。这些设计决策会影响数据的可用性和一致性。 4. 索引:Cassandra支持二级索引,但使用索引时需要权衡查询性能和存储成本。过多的索引可能会导致维护和查询变慢。因此,在设计时,需要仔细选择需要建立索引的列,并在必要时使用辅助来支持查询需求。 5. 数据分区:Cassandra将数据分区到不同的节点上,以实现水平扩展。在设计时,需要选择一个适当的分区策略,以确保数据在集群中均匀分布,避免热点数据和性能瓶颈。 6. 数据模型规范化:与传统关系型数据库相比,Cassandra倾向于使用冗余数据来提高查询性能。因此,在设计时,通常会 denormalize 数据,将相关的数据放在同一个中,以避免JOIN操作。 总之,Cassandra设计需要综合考虑数据模型、主键、复制、索引、数据分区和数据规范化等因素,以实现高性能、可扩展和可靠的数据存储和查询。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值