0

Spring Data - Cassandra (SDC) で、同じ DataStax ドライバー セッションを再利用したいが、現在 Cassandra にアクセスしているテナント (マルチテナント SaaS モデル) に応じて異なるキースペースにアクセスしたい。とはいえ、私の調査では、キースペースを追加して完全修飾クエリを作成することが、これを達成するための好ましい方法であるようです。

SDC にはこれを行うためのフックがありますか? Hibernate のマルチテナンシー サポートに似たものを探しています。Hibernate では、同じ接続プールを再利用できます。このアプリは、どのテナントが現在のコンテキストにあるかを Hibernate に伝える方法を提供し、Hibernate のセッションの接続方法を制御できます。JDBC 接続などで "SET SCHEMA 'foo_tenant_schema' " を呼び出すことにより、テナントごとに異なるスキーマになる可能性があります。

そうでない場合は、自分で書く必要があります。それはいいです。「tenantID-to-keyspace」のマップをロードし、何らかの形で動的に追加して、完全修飾呼び出しを行うことを考えています。これが DataStax セッションの PreparedStatements などにどのように影響するかはわかりません。

より良い方法についての考えがあれば、教えてください。

4

1 に答える 1

1

あなたは間違いなくあなたがやっている方法を行うことができます.他のオプションは、実際のクエリを実行する前に以下を実行することです.

cassandraTemplate.execute("use " + keySpaceName + ";");

上記のクエリを実際のクエリとバッチで組み合わせることもできます。この方法では、既存のクエリに何も追加する必要はありません。ここでの前提は、すべてのキースペースが同じクラスター上にあることです。

于 2015-07-20T12:21:50.927 に答える