4

システムには、サーバーごとに一意であり続けたい特定のテーブルが 1 つあります。

つまり、 http://server1.example.com/some_stuff.htmlhttp://server2.example.com/some_stuff.htmlは、その特定のサーバーに固有のデータを格納して表示する必要があります。サーバーの 1 つが停止すると、そのテーブルとそのデータも一緒に移動します。

4

2 に答える 2

3

CQL はテーブル レベルのレプリケーション ファクターをサポートしていないと思います (利用可能なcreate table optionsを参照してください)。1 つの代替方法は、レプリケーション ファクター = 1 でキースペースを作成することです。

    CREATE KEYSPACE <ksname>
        WITH replication = {'class':'<strategy>' [,'<option>':<val>]};

    Example:
     To create a keyspace with SimpleStrategy and "replication_factor" option
     with a value of "1" you would use this statement:
        CREATE KEYSPACE <ksname>
            WITH replication = {'class':'SimpleStrategy', 'replication_factor':1};

その場合、そのキースペースで作成されたすべてのテーブルにはレプリケーションがありません。

ノードごとにテーブルが必要な場合、Cassandra はそれを直接サポートしていないと思います。1 つの回避策は、各クラスターに 1 つのノードしかないノードごとに追加の Cassandra クラスターを開始することです。

于 2013-08-12T18:52:32.200 に答える
1

なぜそれをしたいのかわかりませんが、これについての私の見解は次のとおりです。

Cassandra クラスター内のノード間での実際のデータの分散は、行キーによって決定されます。

レプリケーション係数を 1 に設定するだけでは、1 つの列ファミリー/テーブルのすべてのデータが 1 つのノードに配置されるわけではありません。行キーに従って、データは引き続き分割/分散されます。

データが格納される正確な場所は、ここに記載されているように、行キーとパーティショナーによって決定されます。これは DDBS 固有の部分であり、これを強制する簡単な方法はありません。

1 つのサーバーのすべてのデータを 1 つのノードの 1 つのテーブルに物理的に配置する唯一の方法は、次のとおりです。

  1. サーバーごとに1つの行キーを使用し、(非常に)幅の広い行を作成します(おそらく複合列キーを使用します)
  2. すべての行キー トークンが期待するノードにマップされるように、トークンの選択をだます ( http://wiki.apache.org/cassandra/Operations#Token_selection )
于 2013-08-13T10:41:16.573 に答える