yukim.github.io

Cassandra 2.0.0 リリース

Sep 03, 2013 -

いよいよCassandra 2.0.0 がリリースされました。と同時にこちらのランキングではちょうどTop 10入りを果たしたようです。

以下、2.0.0のNEWS.txtを日本語訳しましたのでご参考くださいませ。


アップグレード

  • バージョン2.0.0へのアップグレードはバージョン1.2.9以上からのみサポートされています。これはネットワークプロトコルやSSTableのファイルフォーマットの互換性についても当てはまります。1.2.9より前のバージョンから2.0.0にアップグレードを行う場合、一旦1.2.9へアップグレードし、upgradesstablesコマンドを実行してから2.0.0へアップグレードしてください。
  • CAS操作やCQLの新機能(DROP COLUMNなど)は、データのタイムスタンプがエポックからのマイクロ秒であることを前提としています。もしクライアント側でタイムスタンプを独自に指定している場合これらの機能は利用しないでください。
  • DDLにおいて、レプリケーションやストラテジーオプションに不明なオプションをつけるとエラーとなるようになりました。CQL3ではすでにそのような振る舞いになっていましたが、Thrift経由での定義にも適用されるようになりました。
  • initial_tokenが設定されていないノードのオートブートストラップは、以前の様に既存のトークン範囲を二分探索して決定するのではなく、ランダムに決定されるようになりました。バーチャルノードの利用を推奨します。もしくはinitial_tokenを設定するようにしてください。
  • reduce_cache_sizes_atreduce_cache_capacity_to、およびflush_largest_memtables_atオプションはcassandra.yamlから削除されました。
  • CacheServiceMBean#reduceCacheSizesは削除されました。代わりにCacheServiceMBean#set{Key,Row}CacheCapacityInMBを利用してください。
  • cassandra.yamlのauthorityオプションは1.2.0から非推奨となっていましたが、2.0.0で削除されました。authorizerオプションを利用してください。
  • cqlshのASSUMEコマンドは削除されました。CQL3の型変換ファンクションblobAsType()typeAsBlob()を利用してください(CQL3ドキュメント参照)。
  • blobの挿入に文字列リテラルを利用することは、blobリテラルの導入により非推奨となりました。1.2系をアプリケーションから利用している場合は、この新しいシンタックスを利用するように変更してから2.0.0へアップデートしてください(1.2は両方のシンタックスをサポートしています)。
  • index_intervalはColumnFamilyのプロパティとしてColumnFamily毎に設定するようになりました。ALTER TABLE ... WITH文で設定することが可能となり、設定変更後に書き出されたSSTableから新しい設定値が有効となります。アップグレード時の互換性保持のため、cassandra.yamlにindex_intervalの設定値があれば既存のColumnFamilyすべてのデフォルト値として利用します。
  • 非推奨であったnative_transport_min_threadsオプションはcassandra.yamlから削除されました。

運用に関する変更点

  • VNodes(バーチャルノード)がデフォルトで有効になりました。initial_tokenの設定はcassandra.yamlから取り除かれましたが、バーチャルノードを利用しない場合、以前と同じようにcassandra.yamlに設定することができます。
  • メジャーコンパクション、cleanup、scrub、upgradesstablesは実行中の他のコンパクションを中断して実行されるようになりました(repairのバリデーションを除く)。
  • コンパクションの自動実行を止めるには、しきい値(min_/max_compaction_threshold)を0に設定していましたが、この方法は非推奨になりました。かわりにnodetool disableautocompactionnodetool enableautocompactionを使用するか、コンパクションストラテジーのオプションに{enable: false}を設定してください。
  • CQL3のテーブルに対するALTER TABLE DROP文が再度有効になりました(CQL3ドキュメントCASSANDRA-3919を参照)。
  • CASはgc_grace_secondsの設定値を用いて、Paxosの状態を保持する時間を決定します(ただし最小値は3時間)。
  • Hinted hand offのメトリックが、ターゲットのノード単位で追跡されるようになりました(countPendingHintsは削除されました)。
  • パフォーマンステストの結果(CASSANDRA-5727), LeveledCompactionStrategyが出力するファイルサイズのデフォルト値が5MBから160MBに変更になりました。
  • cqlshのDESCRIBE SCHEMAコマンドはsystem_*キースペースのスキーマを出力しなくなりました。それらの情報を出力する場合、DESCRIBE FULL SCHEMAコマンドを使用してください。
  • CQL2は非推奨となりました。将来的に(バージョン2.2?)削除されます(CASSANDRA-5918参照)。

新機能

  • 軽量なトランザクションのサポート
  • SELECT文でのエイリアスのサポート(詳細はCQL3ドキュメント参照)。
  • JEMallocのサポート(cassandra.yaml内のmemory_allocatorを参照)。
  • トリガーの実験的なサポート。examplesディレクトリにサンプルがあります。”実験的”とは”まだ内部のデータ構造に強く依存している状況。将来的に疎結合にする予定であり、APIの変更も多いにあり得る”状況をさします。
  • CQL3の多数の新機能およびネイティブプロトコルのバージョンアップ(詳細はこちら)。