2016-07-03 20 views
0

私はdjango-tenantスキーマを使用して基本的なERP webappを作成しました。今、私の問題は、新しいユーザーがサインアップするたびに、そのダウンタイムが(各ユーザーの新しいスキーマを作成するのに役立つ移行のため)です。したがって、これは必ずしもスケーラブルではありません。私はデータベース、apache、DOとしてpsotgresqlを使用しています。Djangoテナントスキーマのスケーラビリティ

この悲惨なことに対して可能な答えはありますか?

私が直面している問題は、このERPシステムを複数のSMEに使用することです。現在、これらの中小企業のそれぞれは、10-15人の従業員を配置しています。これらの従業員のすべては、必要な許可を得て雇用主によって作成されたアカウントを持ちます。さて、スキーマなしで可能ですか?それに加えて毎回超大型のテーブルをスキャンするという問題があります。

答えて

0

私はマルチテナントだったdjango/postgresでアプリケーションを書いています。私が使用した技術は:

1)それぞれのテナントに固有の資格情報でログインさせることでした。 2)各テナントにテナントIDがある 3)すべてのテナントにテナントIDがある 4)各テーブルのtenant_idを使用してpostgresにビューを作成する。そのため、テナントがテーブルから選択すると、テナントIDと一致するテーブル内のすべての行が表示されます。

これはかなりうまくいっています。あなたはオーバーヘッドを追加しました。 tenant_idをセッションに関連付ける必要があります。テナントにアクセスさせる各テーブルのビューを作成するには、データベースにスキーマを追加する必要があります。

テナント固有ではなく、読み取り専用のテーブルをテナント間で共有できるという利点があります。

-g

+0

私が間違っていない場合、グレッグは、同じスキーマを持つマルチテナントでした。これは私が最初に考えたものです。しかし、これは私のユースケースではうまくいかない。問題がどこにあるのですか。私の場合は、各テナントが複数のユーザーを作成できるように複雑さが増しています。たとえば、ある人が自分のERPを使用している場合、ERPの異なるモジュール用のサブユーザを作成する必要があります(アカウント用、SCM用など)。したがって、スキーマが使用されていないと複雑さが増します。 – SG2791

+0

私は同じ問題がありました。また、ユーザーは異なるテナントに属している可能性があります。それは動作します。あなたが見逃している部分は、同じスキーマを共有していても、別々のスキーマと同じように分離されているということです。ログインを使用して区切りを作成します。あなたはtenant_idを覚えていて、あなたのアプリケーションはビューを介してdbにアクセスし、正しいtenant_idですべてを選択します。たぶんそれはあなたのために適切ではない、ちょうど私がそこにそれを投げると思った。 – Greg

+0

ありがとうグレッグ!!確かに私はある程度あなたのラインで考える必要があります。私はまた、新しいテナントのためにのみ移行スキーマを行うことを考えています。 1つのスキーマのみの移行(migrate-schema - パブリックはパブリック・スキーマのみを移行する方法)と同様です。私がdjangoとd-t-sのソースコードを掘り起こし、私の指が交差しないようにしましょう – SG2791

関連する問題