Cassandra源代码分析(二)动态变更Keyspace和ColumnFamily定义

参考:http://wiki.apache.org/cassandra/LiveSchemaUpdates

本节讲述的是Cassandra0.7版本的一些特性,即在Cassandra集群运行过程中动态修改Keyspace的数据模型。

1.   揭开神秘面纱

Cassandr中有一个名称为SystemKeyspace,它包含4Columnspace,分别为LocationInfoHintsColumnFamily MigrationsSchema,具体的定义参见类CFMetaDataSchema中存储keyspace定义信息,Migrations中记录了keyspace的变更信息。

TimeUUIDs are used throughout to match migrations up with schema and vice-versa.

2.Keyspace Definitions (SCHEMA_CF)

当前的Keyspace定义被存储在一个Row中,一个Keyspace对应一个Column,这个ColumnTimeUUID作为Row key(也作为一个版本标识),Keyspace名称作为一个列名称,Keyspace定义的序列化数据作为ColumnValue。存在着一个特殊行,以Last Migration作为RowKey,这个行包含一列,表示当前Schema的版本UUID。这使得它易于查找和取得版本版本号。

3.Migrations (MIGRATIONS_CF)

Migration记录对于模型(Schema)的每一个变更(add,drop,rename)。Migration由一个以“Migrations Key”作为一个Row Key,一个变更作为一个Column。每一个Column有一个变更版本号UUID作为列名,以变更的序列化信息作为Column的值。

 

 

 

  4. Operations

4.1         客户端操作

  • 添加 column family or keyspace
  • 删除 column family or keyspace
  • 重命名 column family or keyspace

如果你拥有足够的权限,这些都可以通过Thrift API被执行。在进行RenameDrop操作的时候,客户端会阻塞,直到所有关联的文件被Rename或者Drop为止。


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值