1

1 つの Postgres データベースに 20,000 を超えるスキーマを含めることはできますか? このようなデータベース設計の意味は何ですか。

ここでpostgresスキーマについて読んでいました-http ://www.postgresql.org/docs/8.2/static/ddl-schemas.htmlで、マルチテナントRuby on Railsアプリでアカウントごとに1つのスキーマを作成することを計画しています。各スキーマには、関連するアカウントのデータを格納するための一連のテーブルがあります。

私たちが提供するすべての機能の各ユーザー/スキーマは、50 ~ 60 のテーブルを持つことができます。

データベース サーバーをホストするために大規模な EC2 インスタンスを割り当てた場合、Postgres は問題なくこれらすべてを処理できますか?

[アップデート]

経験上、postgres でこのような数のスキーマで問題が発生した場合、共有することができ、そのような落とし穴を回避するためのより多くのガイダンスを得ることができると思いました。

4

2 に答える 2

3

1 つの PostgreSQL データベースに 20,000 のスキーマを作成できますが、それが良い考えであるとは言えません。

まず、設計の観点から、テーブルに新しい列を追加する場合、20,000 個のテーブルを更新する必要があります。また、すべてのユーザーの合計を表示したい場合、それは 20,000 のテーブル ユニオンを作成する必要があり、見栄えがよくありません。

第二に、非常に多数のスキーマとテーブルに関して、歴史的にいくつかの問題があったことは確かです。個々のクエリの観点からではなく、システムカタログをクエリするものからです。特定のシステム ビューと関数の実装は単純化されており、100 テーブルでは問題なく動作しますが、10,000 テーブルでは非常に遅くなります。それは必ずしも悪いことではありません。99% のユーザーのコア機能を複雑にする必要はありません。

あなたのようなデザインを試みる人々の限界を押し上げるために、システム カタログのあちこちでいくつかの微調整が行われました。ただし、制限がどこにあるかは、使用パターンによって異なります。ActiveRecord やそれに類するものを見てからしばらく経ちましたが、開発モードではテーブル定義をチェックするために常にカタログをクエリしていました。ただし、本番環境では、起動が遅くても問題がない場合があります。

要件を満たす CPU と RAM がある限り、ここでは EC2 が問題になるとは思いません。

だから - 要約すると:

  • それはできる
  • 奇数コーナーでは、O(n log n) パフォーマンスではなくO(n 2 ) パフォーマンスが示され、20,000 スキーマで顕著になります。

これに関するこれまでの議論については、postgresql.org メーリング リストのアーカイブを確認してください。本当に詳細な情報が必要な場合は、ここを参照してください。

于 2013-07-23T18:58:11.403 に答える
0

ここで 3 つの質問をしましたが、最終的な質問は、データベース サーバーをホストするために大きな EC2 インスタンスを割り当てた場合、postgres は問題なく [20,000 スキーマ] を処理できますか?

インスタンスの大きさ、選択したその背後にある EBS ストレージのパフォーマンス レベル、RAID オプション、ファイル システムの選択、各スキーマのデータ量など、その質問に答えるにはさらに多くの変数が関係します。 、サーバーが取得しているトラフィックの量、およびトラフィックの種類。

実際に機能するかどうかを確認するために、特定の設計に対してキャパシティ テストを実行する以外に方法はありません。そこから得られる特定の質問に対する回答は、現在提供されている最小限の情報で提供できる他のどのアドバイスよりもはるかに価値があると思います.

20,000 のスキーマが存在できるかどうかという最初の質問については、単純なループを作成し、アイデアを自分でテストして、何が起こるかを確認してください。

于 2013-07-23T18:34:43.730 に答える