5

私はキャッシュ (Apache Ignite) に多くのレコードを保持する必要があるプロジェクトに取り組んでいます。このレコードは会社ごとに分けられています。

元:

会社; 製品; 量

CompA; A; 15

CompA; B; 10

CompB; A; 20

CompB; B; 12

私の疑問は、キー(会社+製品)を使用して同じキャッシュ追加テナントにエントリを作成し、次のように各テナントに新しいキャッシュを作成する間のパフォーマンスについてです。

CacheConfiguration<String, String> cfgCompanyA = new CacheConfiguration<>();
cfgCompanyA.setName("CompanyA");
IgniteCache<String, String> cacheCompanyA = ignite.getOrCreateCache(cfgCompanyA);

CacheConfiguration<String, String> cfgCompanyB = new CacheConfiguration<>();
cfgCompanyB.setName("CompanyB");
IgniteCache<String, String> cacheCompanyB = ignite.getOrCreateCache(cfgCompanyB);
4

3 に答える 3

1

それはあなたの要件に依存します。私は Apache Ignite の専門家ではないので、一般的なレベルで説明します。

個別のキャッシュの引数:

  • アクセスがより効率的になり、キーにテナントがありません
  • 1 つのテナントのキャッシュと処理を同じ場所に配置して、より簡単に移動できます
  • キャッシュ構成はクライアントごとに行われるため、クライアントごとに保証されるレイテンシーとリソースの使用を制御できます。

個別のキャッシュに対する引数:

  • 共有キャッシュにより、全体的に制御可能で最適なリソースの使用が可能になります。テナント用に個別のキャッシュがある場合、テナントが何ヶ月もアプリケーションを使用していなくても、キャッシュがリソースを使い果たす可能性があります
  • テナントを動的に追加する必要がある場合は、すべてのキャッシュ構成を管理するためのコンセプトを考え出す必要があります

良い代替手段は、両方を組み合わせて使用​​することです。

  • テナントを常にキャッシュキーに入れる
  • 各テナントのデータを取得できるキャッシュ プールを実装する
  • 複数のキャッシュ プールを許可し、キャッシュ プールをテナントに割り当てる機能

これにより、次のことが可能になります。

  • 複数のテナントがある場合でも、開発と (単体) テスト用に単一のキャッシュ プールを用意します。開発セットアップの簡素化。
  • 大量のテナントを専用キャッシュ プールに割り当てる
  • ボリュームの少ないテナントを共有キャッシュ プールに割り当て、リソースの使用を最適化する
  • 新しいテナントは共有プールで開始されるか、他のリソース制限のある「フリーミアム」および「試用」プールがある場合があります。
  • 少量のテナントは、キャッシュ構成を変更せずに出入りできます
于 2016-04-30T08:59:53.607 に答える