2

現在、私はそのようにClusterContextを開始しています:

        AstyanaxContext.Builder builder = new AstyanaxContext.Builder()
            .forCluster(clusterName)
            .forKeyspace(keyspaceName)
            .withAstyanaxConfiguration(getAstyanaxProperties(properties))
            .withConnectionPoolConfiguration(getConnectionPoolProperties(properties))
            .withConnectionPoolMonitor(connectionPoolMonitor);

    clusterContext = builder.buildCluster(ThriftFamilyFactory.getInstance());
    clusterContext.start();
    cluster = clusterContext.getEntity();

単一ノードの開発環境で実行されています。キースペース、列ファミリーなども作成したいので、ClusterContext を使用しています。

さらに KeyspaceContext も起動する必要がありますか? もしそうなら、どのような目的のために、または単一の ClusterContext でキースペース/列ファミリーの管理と読み取り/書き込みのシナリオに十分ですか?

KeyspaceContext を起動すると、接続プール モニターによると、2 つのホストが追加されてアクティブになっていることがわかります。単一の Cassandra ノードをシャットダウンしても、まだ 1 つがアクティブとしてマークされているため、混乱します。

ありがとう。

4

1 に答える 1

1

keyspace の作成については、netflix のドキュメントを参照してください。オブジェクトを使用してキースペースを作成することが示されていKeyspaceます。ページの少し下には、列ファミリーの作成に関する詳細も記載されています。

を使用して初期化し、オブジェクトAstyanaxContextを取得するために使用しKeyspaceます。

AstyanaxContext<Keyspace> ctx = new AstyanaxContext.Builder()
    .forKeyspace("MyKeyspace")
    // Additional configuration parameters
    .buildKeyspace(ThriftFamilyFactory.getInstance());
ctx.start();
Keyspace keyspace = ctx.getClient();

次に、キースペースを作成できます (以下)。forKeyspace(...)注意として、関数で指定しているキースペースがまだ作成されていなくても構いません。

// Using simple strategy
keyspace.createKeyspace(ImmutableMap.<String, Object>builder()
    .put("strategy_options", ImmutableMap.<String, Object>builder()
        .put("replication_factor", "1")
        .build())
    .put("strategy_class",     "SimpleStrategy")
        .build()
     );

これKeyspaceを使用および再利用して、挿入/削除/キースペースおよび列ファミリーの作成を必要なだけ行うことができます。

于 2013-06-20T08:11:37.933 に答える