4

ノードが 1 つしかないため、GCGraceSeconds を 0 に設定する必要がありますが、これに値を設定できる場所が見つかりません。astyanaxから設定することは可能ですか、それともいくつかの設定ファイルにありますか?

4

2 に答える 2

4

Cassandra の最近のバージョンでは、実際gc_grace_secondsにはスキーマの一部として列ファミリーごとに設定します。私が知る限り、現在 Astyanax はそのプロパティの設定をサポートしていません。ColumnFamilyDefinitionクラスに対応するメソッドはありません。

https://github.com/Netflix/astyanax/blob/master/src/main/java/com/netflix/astyanax/ddl/ColumnFamilyDefinition.java

必要に応じて、cassandra-cli ツールを使用して、既存の列ファミリーにプロパティを設定できます。

さらに、Astyanax にサポートを追加することはそれほど難しくないようです。彼らはプルリクエストを受け入れると確信しています。

アップデート

Astyanax は (しばらくの間) この設定をサポートするようになりました。ColumnFamilyDefinitionを参照してください。これは、astyanax 列ファミリーの作成で次のように設定できます。

OperationResult<SchemaChangeResult> opres = keyspace.createColumnFamily(cf, ImmutableMap.<String, Object> builder()
    .put("comparator", "UTF8Type")
    .put("key_validation_class", "UTF8Type")
    .put("gc_grace_seconds", 60*60*24) // gc grace seconds of one day
    .build()
);
于 2012-06-24T14:24:29.207 に答える
2

これはconf/cassandra.yaml (Cassandra 構成ファイル)で行われます。

以前のバージョン 0.7: conf/storage-conf.xml

覚えておいてください: "これは、ハードウェア障害に直面した場合でも、この秒数が経過するまでに削除マーカーがすべてのレプリカに伝播されると確信できる十分に大きな値に設定してください。デフォルト値は 10 日です。 "

デフォルトは ' 864000 ' 秒、つまり10日です。

于 2012-06-23T13:30:53.290 に答える