欢迎投稿

今日深度:

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

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为止。


 

www.htsjk.Com true http://www.htsjk.com/cassandra/34448.html NewsArticle Cassandra源代码分析(二)动态变更Keyspace和ColumnFamily定义, 参考:http://wiki.apache.org/cassandra/LiveSchemaUpdates 本节讲述的是 Cassandra0.7 版本的一些特性,即在 Cassandra 集群运行过程中动态修改...
相关文章
    暂无相关文章
评论暂时关闭