2012-03-19 8 views
2

RBACのような認証&認可モデル を実装するためのCassandraの使用についてのご意見をお聞かせください。 N --- M ---役割:ロールベースのアクセス制御システムのデータベースとしてのCassandra

ユーザ--- N:我々は、一般モデル (http://en.wikipedia.org/wiki/Role-based_access_control)の 中央の関係を簡略化しています:m ---リソース

ユーザとリソースは、外部から見える識別子で索引付けされます。 これらの識別子は「再所有可能」である必要があります(メールエイリアスと考える)。

カサンドラを考慮する主な理由は、可用性、スケーラビリティ、 と(グローバル)ジオリダンダンシーです。これはRBDMSで達成するのが難しいです。

一方、RBACには多くのm:n関係があります。 の不一致が許容される場合もありますが、リソースの所有権(ロール=所有者) は決して混同してはいけません。

あなたはどう思いますか?このようなリレーショナルモデルは、Cassandra 用の反パターンですか?カッサンドラに基づく類似のソリューションをご存じですか?

+0

RDBMSとNoSQLを比較する前に、Cassandraを評価する際にすぐに2つの質問があります。 1)どの程度データセットを扱う予定ですか? 2)データを追加する頻度と速さはどれくらいですか?たとえば、1TBのデータセットから始め、1日に10GBのデータを追加します。データの量が少なくてもそれほど大きくならない場合、RDBMSは余分な作業をすることなくm:nの関係に大きな力を提供すると思います。 – FloppyDisk

+1

多くの書き込みがなくても、セキュリティを実装するためのホット・バックアップを備えたRDBMSに傾いています。索引を使用してRDBMSの読み込み速度を上げることができ、多量の列ファミリをコーディングしなくてもm:nの関係を処理できるようになります。また、セキュリティー・アーキテクチャーを実装するときに欲しいと思う矛盾がないことを保証します。 – FloppyDisk

+0

約100.000.000アカウント。重い書き込み負荷ではありませんが、多くの読み込み –

答えて

3

私は先に進み、私のコメントを答えに変えて、彼らが1か所にいるようにします。

私はそれを正しく読んでいる場合、大きなサウンドデータセット、100,000,000アカウントを管理していますが、特定の関係が決して同期を失わないように一定のレベルの整合性を強制する必要があるという制約もあります。また、実行する必要がある1対多の関係(上記のリソース - >ユーザーまたはm:n)がたくさんある状況もあります。さらに、データセットからデータを読み込むようになっているようにも思えます。その後、私はホットバックアップを備えたRDBMSがカスタムカサンドラのデプロイメントよりもあなたの問題をより良く解決するだろうと考えています。このビーイングの背後にある理由は :RDBMSで

  1. 1対多の関係は、テーブル間結合とあなたは一度だけデータを格納する必要がSQL文として表現することができます。カサンドラでは、設定に応じて、関係を適切に反映するために複数の場所に同じ情報を保存する必要があります。これはむしろ面倒で冗長なデータモデルにつながります。

  2. 一貫性 - カサンドラは最終的に一貫しています。これはほとんどの種類のデータIMHOを処理する場合には問題ありません。しかし、いつも一貫性を必要とするセキュリティのようなものを扱う場合、RDBMS(複数形)は、データが常に同期していることを保証するために、トランザクションにおいて大きな利点があります。私が考えるものは、セキュリティの観点から重要です。

  3. 読み込み速度 - RDBMSのインデックスを使用すると、DBからの読み込みが大幅に高速化されるため、経験的に大きなボトルネックになると判断するまでは、この決定要因にはなりません。 Cassandraのクォーラム・リーディング・モデルは、N個のマシン(N> = 1)で応答を返し、同期がとれていない場合にその答えを訂正する必要があるため、いくつかの点で、より遅くなる可能性があります。

  4. 冗長性 - ホットバックアップを持つRDBMS(マスターマスターコピー)は、冗長性の問題を解決します。

カサンドラは素晴らしいツールだと私は使用して楽しむ、しかし、この場合には、私はあなたのモデルが、それはカサンドラとよりもRDBMSとのより良い作品だと思います。

運が良かった!

+0

しかし、私は1つの重要な要件があります:グローバルな冗長性。 Cassandraはそれをすぐにサポートし、RDBMSを使用するマルチマスターには、失われた更新や混在した更新などの問題もあります。 –

+0

真実ですが、カッサンドラでもデータを失う可能性があります。クォーラム書き込みの一部が失敗した場合、書き込み全体が失敗します。 RDBMSを使用すると、更新が失敗しても少なくとも1つの場所にデータが残っています。 RDBMSのスケーリングの例として、Postgresのクラスタリングの詳細については、PG wikiを参照してください。http://wiki.postgresql.org/wiki/Replication,_Clustering,_Connection_Pooling – FloppyDisk

+0

@FloppyDisk Cassandraの書き込み整合性レベルが不可能な場合満足している(つまり、あなたが要求したものであれば、クォーラムのノードからの応答を得られません)、クライアントは何が起こったのかを知らせる例外を得ます。書き込みは、カッサンドラと偶然になる可能性があるので、新しい変更を上書きすることを心配することなく、成功するまで安全に書き込みを再試行できます。データの損失はありません。 –

関連する問題