何百もの顧客を持つサービスとしてのソフトウェアとしてpostgresqlにデータベースを用意していますが、現在カスタマーごとにpostgresqlのスキーマがあります。私はキャサンドラについて読んだけど、私はプライマリ、フォージンの鍵と小切手の完全性を失いたくない。また、分散システムでのPostgreSQLについて読むが、私はこれを実装するための最良の方法は何であるかを知らない現在postgresqlを配布する最良の方法
答えて
あなたの顧客を分離することができたのは4つのレベルがあります。
が用に別のPostgreSQLクラスタを実行するには、各顧客。これにより最大の分離が得られます。各クライアントは、独自のシステムテーブル、トランザクションログなどの別のポートにあります。
各顧客を同じクラスタ内の別々のデータベースに配置します。このようにして、それぞれが別々のログインを持ちますが、同じポート番号で、pg_databaseのようなグローバルテーブルを共有します。
各顧客に同じデータベース内の別個のスキーマを提供します。 search_pathを設定するだけでよいので、ソフトウェアを介してのみ接続する場合は、別のユーザーIDは必要ありません。もちろん、別のユーザーIDを使用することもできます。
各テーブルのプライマリキーの一部にcustomer_idを作成し、ソフトウェアでそれを必ず制限してください。これは、数百人のユーザーのそれぞれに対して重複テーブルを持つよりも拡張が容易ですが、常にcustomer_idでクエリを修飾するように注意する必要があります。
たとえば、顧客ごとに個別のデータベースを使用して各クラスターを100個のデータベースに制限することが知られている人もいます。
あなたの状況に最も適した構成を知ることは難しいですが、ユーザーがソフトウェアを経由せずにデータベースに直接アクセスできるようにする場合は、表示されるものについて考える必要があります各オプションを持つシステムテーブルユーザーの観点から、pg_database、pg_user、およびpg_classを見て、公開されているものを確認してください。
カサンドラのようなシステムのポイントは、あなたのデータセットまたはワークロードいったん単一のマシンに収まらないされ私がしたいあなたは、主、foreginキーおよびチェック
の整合性を失うことはありませんあなたがpostgresqlにいてもそれらのことをあきらめなければならない。 (私は非常にお勧めする話で詳細をカバーした:http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2010-what-every-developer-should-know-about-database-scalability-21-3280648)。
カッサンドラは、「外部キーと結合をあきらめなければならない場合は、データベースの設計方法を再考することで何ができますか」という質問に対する答えです。
あなたがその点に決して到達しない場合、カサンドラは過剰です。 (しかし、あなたはまだその話を見なければなりません:)
- 1. のJavaを配布するための最良の方法は、
- 2. Pythonのコマンドラインツールを配布する最も良い方法は何ですか?
- 3. iOS:「N」に1つのアプリケーションを配布する最良の方法
- 4. Excelマクロを共有/配布する最も良い方法は何ですか?
- 5. PostgreSQLのバックアップを作成する最良の方法
- 6. 最適な出力のために所定のリソース(例えば予算)を配布する最良の方法
- 7. サーバー間で複数のサービスコピーを配布する最良の方法は何ですか?
- 8. これは別のユーザーにAPIを配布する最も良い方法ですか?
- 9. Excelアプリケーションをパッケージ化して配布する最良の方法は何ですか
- 10. さまざまな技術的背景を持つ人々にドッカーコンテナを配布する最良の方法
- 11. オフラインのウェブサイトを配信するための最良の方法
- 12. Erlang Mnesiaの配布方法
- 13. ARKITアプリケーションの配布方法
- 14. エンタープライズiPAファイルを配布する方法
- 15. データベースにテキストデータを配布する方法
- 16. condaでライセンスパッケージを配布する方法
- 17. 生成されたファイルを配布に追加する最も良い方法は?
- 18. PostgreSQLデータベースに日付と時刻を保存する最良の方法
- 19. アンドロイドのリニアレイアウトにコンテンツを配置する最も良い方法
- 20. 回転キューブを配列で表現する最良の方法
- 21. スカラーで配列をループする最良の方法
- 22. 配列を作成する最良の方法
- 23. ruby '最良の方法' 2次元配列を生成する
- 24. tomcatに共有jarを配備する最良の方法
- 25. Reactネイティブreduxレデューサーは、配列をプッシュする最良の方法
- 26. Swift:配列をフィルタリングする最良の方法
- 27. 2D配列をMongoDbに保存する最良の方法
- 28. 最良の方法
- 29. PostgreSQLでランダムな行を大量に削除する最も良い方法
- 30. 無料の運転手配を受ける最良の方法
話が大好き! +1 – Abdo
上記のリンクは話につながりません。関連リンクを投稿してください。 – SahuKahn
@SahuKahnこれら2つを試してください: *ビデオ:http://pyvideo.org/video/313/pycon-2010--what-every-developer-should-know-abou *スライド:http://www.slideshare 。net/jbellis/what-every-developer-should-about-about-database-scalability-pycon-2010 –