質問: "myregion"まで。 これは厄介です。 jpaではうまくいきません。例えばentitymanager.find()メソッドは主キーしか受け付けません。 もちろん、私はネイティブに行くことができますが、私は1つのselectステートメントを見逃すだけでよく、私のセキュリティは撃たれます 2)mysqlプロキシを使用して結果をフィルタリングします。 ちょっとファンキーですが、その場合はmysqlプロキシは生の呼び出しを見ているだけなので、実際にどのようにフィルタ処理する必要があるのか(つまり、この要求を行ったユーザーがどの地域に属しているのか)わかりません。 わかりました、私は各地域のための委任状を始めることができますがそれは少し面倒になり始めます.. 3)地域ごとに別々のスキーマを使用します。 ええ、単純です、私はspringを使用しているので、正しいデータソース(スキーマごとに1つのデータソース)を介してroutingdatasourceを使用してリクエストをルーティングできます。 もちろん、問題は現在、地域やその他のカテゴリでフィルタリングしたいと考えているところにあります。 ああ。 4)acl - 本当によくわからない。 aがtablexから*を選択した場合。自分がアクセスできないオブジェクトを静かに除外するのでしょうか、それとも大量のアクセス例外がスローされるのでしょうか。 しかし、私はこれについてあまり考えすぎていますか? これは本当に一般的な問題のようです。 簡単な解決策があるに違いありません。 可能な限りソースに近い場所でフィルタをかけたいので、それはデータベースの近くにある、あるいはデータベース内にあるはずです。 偽装されているとは思わない - 任意のリンク、キーワード、アイデア、コマーシャル/オープンソース製品の提案は本当に感謝されるでしょう! ありがとう。
回答: 私は、会計パッケージの階層的な複数会社拡張のために、ここ数週間、似たようなもの(realbasicがmysqlと話す)を実装したところです。 sqlステートメントを構成する多数の既存のコードがあるので、それに対処し、必要に応じて制限が各テーブルに含まれていることを確認するために多くの監査を行う必要がありました。 ルックアップテーブルは通常プライマリテーブルとの組み合わせでのみ使用されていましたが、メンテナンスのためにguiはルックアップテーブル自体を直接ロードしていました。 acme pornstarsが会社のある部門のクライアントであることを明らかにするなど、暗黙の情報を漏らす危険があります;-) その部分に対する唯一の解決策は、すべての暗黙の関係とたくさんの監査とグリップのソースコードを表示するためのdbダイアグラムの非常に慎重な構築と、追加の制限を必要としないとしてokだった領域を示す慎重なコメントでした。 将来これをより一般化するために私が考え出した1つのパターンは、明示的なregion = currentregionvar型検索ではなく、グローバルなcurrententityforrole( "blah")関数によって提供される任意のentityidを使用することです。 この抽象化により、他の制限境界を表す疑似エンティティを実装するだけでなく、一部のデータを共有できます。 私がjavaとspringについて話すことができるほど十分に知りませんが、ビューが地域フィルタによって制限されている場合に単一キールックアップを提供するためにビューを使うことができる方法はありますか? 集約と可能なデータ共有を提供したいという願望は、私たちが別のデータベースルートをたどらなかった理由でした。