[解決済み] 複数のデータベースをそれぞれ1つのスキーマで使用するのと、1つのデータベースを複数のスキーマで使用するのと、どちらが良いですか?
質問
後 このコメント 私の質問に対して、1つのデータベースでX個のスキーマを使用するのが良いのか、それともその逆が良いのか考えています。
私は、人々が登録するときに、(実際には)データベースを作成するWebアプリケーションを開発しています(いいえ、それはソーシャルネットワークではありません:誰もが自分自身のデータにアクセスする必要があり、他のユーザーのデータを見ることはありません)。これは、私のアプリケーションの以前のバージョン(まだMySQLで動作している)で使用した方法です:Plesk APIを通じて、すべての登録について、私は行います。
- 制限された権限を持つデータベースユーザーを作成します。
- 前回作成したユーザーとスーパーユーザー(メンテナンス用)だけがアクセスできるデータベースを作成する。
- データベースを作成する
今度は、PostgreSQLで同じことをする必要があります(プロジェクトは成熟してきており、MySQLではすべてのニーズを満たすことはできません)。すべてのデータベース/スキーマのバックアップを独立させる必要があります。
pg_dump
はどちらの方法でも完璧に機能しますし、1つのスキーマまたは1つのデータベースにのみアクセスするように設定できるユーザーについても同じです。
そこで、私よりも経験豊富なPostgreSQLユーザーであることを前提に、私の状況にとって最良の解決策は何だと思いますか、そしてその理由は?xスキーマの代わりに$xデータベースを使用することで、パフォーマンスの違いはあるのでしょうか?また、どのようなソリューションが将来的なメンテナンス(信頼性)に優れているのでしょうか?私のデータベース/スキーマはすべて 常に は同じ構造を持っています。
バックアップの問題(pg_dumpの使用)については、1つのデータベースと多くのスキーマを使用して、すべてのスキーマを一度にダンプする方が良いかもしれません。リカバリは、開発マシンにメインのダンプをロードして、必要なスキーマだけをダンプしてリストアするだけなので、1つ追加のステップがありますが、すべてのスキーマをダンプする方が一つずつダンプするよりも速く見えます。
2012年最新版
この2年間で、アプリケーションの構成やデザインは大きく変わりました。私はまだquot;one db with many schemas" -のアプローチを使っていますが、それでも、私は1つのデータベースを持っています。 各バージョンに を作成しました。
Db myapp_01
\_ my_customer_foo_schema
\_ my_customer_bar_schema
Db myapp_02
\_ my_customer_foo_schema
\_ my_customer_bar_schema
バックアップは、各データベースを定期的にダンプし、そのバックアップを開発サーバーに移動しています。PITR/WALのバックアップも使っていますが、先ほども言ったように、リストアする必要はなさそうです。 すべてのデータベース を一度に行うことができます。というわけで、今年はおそらく却下されるでしょう(私の状況では最良の方法とは言えません)。
アプリケーションの構造がまったく変わっても、1データベース・1スキーマのアプローチは、これまでと同じようにうまく機能しています。忘れるところだった:私のデータベース/スキーマはすべて 常に は同じ構造を持っています。現在では、すべてのスキーマが独自の構造を持ち、ユーザーのデータフローに動的に反応するようになっています。
どのように解決するのか?
PostgreSQLのquot;スキーマは、MySQLのquot;データベースとほぼ同じものです。PostgreSQLのインストールで多くのデータベースを持つことは問題になりますが、多くのスキーマを持つことは問題なく動作します。そのため、1つのデータベースとそのデータベース内の複数のスキーマを使用することをお勧めします。
関連
-
[解決済み] psql: FATAL: データベース "<user>" が存在しない
-
mysql reports Access denied; you need (at least one of) SUPER privilege(s) for this operation
-
SQL SERVER データベース SELECT INTO および INSERT INTO の使用法(テンポラリテーブルへのデータ挿入を含む)
-
[解決済み] PostgreSQLデータベースへのSQLダンプのインポート
-
[解決済み] パスワードをデータベースに保存する最適な方法【終了しました
-
[解決済み] SQLデータベースのテーブルでn番目の行を選択する方法は?
-
[解決済み] GUIDを主キーとして使用する場合のベストプラクティス、特にパフォーマンスに関して教えてください。[クローズド]。
-
[解決済み] MySQLにおけるスキーマとデータベースの違い
-
[解決済み】データベースをgit(バージョン管理)下に置くには?)
-
[解決済み] NoSQLデータストアを使用して、どのようなスケーラビリティの問題が発生しましたか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
(NTDLL.DLL): 0xC0000005: アクセス違反 - 解決
-
SocketTimeoutExceptionが発生しました。読み取りがタイムアウトした問題のトラブルシューティング
-
IEntityChangeTracker の複数のインスタンスからエンティティオブジェクトを参照できない場合の対処法
-
mongodbの更新操作の更新
-
db2 エラー sqlcode=-420 自動型変換問題
-
2021年版Redisインタビューの質問(継続更新中)
-
データベース接続の問題点基礎となるデータベースから接続を取得できない!
-
[解決済み] データベースフィールドの標準的な長さのリスト
-
Oracle インポートエラー: データファイルのフィールドが最大長を超えています。
-
[解決済み】redisデータベースをあるサーバーから別のサーバーに移動するにはどうすればいいですか?