質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

2回答

280閲覧

1サイトに複数のDB使用

naonao11

総合スコア97

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2018/04/13 02:05

質問です。

1つのwordpressで作成したサイトを複数のDBを使用したいです。
例えばですが、以下の画像のように1つのサイトに対してHPのデザインや動きの情報について保存するDB、顧客の情報や登録フォームなどを保存するDBといった形で分けたいと思っております。

この考えがそもそもあっているのかどうか、合っている場合どうすればいいのか
また間違っていた場合、打開策があれば教えていただけると幸いです。

イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2018/04/13 02:11

正しいも何も, そのように設計したのであればそのように実装するしか無いでしょう
naonao11

2018/04/13 02:17

申し訳ございません。 DBを複数用いてのサイト制作が初めてであったため、調べてみたはいいもののこれといったものが載っていなくどうすれば。。。というのが現状です。 データベースの名称を2つ用いて使用すればできるものなのでしょうか。
guest

回答2

0

ベストアンサー

なぜ別なDBにするかの理由に依るかと思います。
スケールアウトということなら、MySQLにはその為の機能があります。
17.3.3 スケールアウトのためにレプリケーションを使用する

顧客ごとにワンセットの別DBにするというのは、セキュリティの観点などから選択肢としてあるかと思いますが、言われている理由では、個別のデータベースにしなくとも、識別する項目をレイアウトに持たせれば目的は果たせます。

アクセスするアプリケーション側から考えると、分離されていない方が処理しやすいですし、ハード面で分離する理由がある場合でも、ミドルウェア側で統合されるような構成にするのが一般的だと思います。


MySQLでのデータベースというのは、他のDBMSで言うところのスキーマの概念が統合されたものです。
ですので、機能的な括りとしてデータベース(スキーマ)を分けるという事はあるので、仰っているのがサイトごとに機能が異なる(テーブル構成やレイアウトが違うし、当然プログラムも違う)というのならありかと思いますが、当然保守コストは上がるので、結局共通的な構成を考えた方が無難でしょう。

投稿2018/04/13 02:34

編集2018/04/13 04:44
sazi

総合スコア25184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naonao11

2018/04/13 02:43

毎回のことありがとうございます! プログラムの構成が異なっていたため不安でした。。。 やり方については自力で頑張ってみます!またよろしくお願いいたします!!
guest

0

データベースを分けるというのは、どこかでデータベースを変更したら元のデータベースにその変更を反映させる必要が出てきます。顧客マスターなら社名が変わったり転居で住所が変わったり、代表者が変わったりといろいろな変更が考えられます。
Oracleを例に書くと、それなりに大きなデータべースをひとつ構築して質問のサイト毎に使うであろうスキーマ(ユーザー)毎にgrantで必要なSELECT権やUPDATE権などを与えるのがいちばんシンプルです。
同じテーブルを使うので他のテーブルに変更内容を反映する必要がありません。
サーバーを各々用意して個々のデータべースに配置するとMATERIALIZED VIEWで元のテーブルを共有して定期的にリフレッシュ(変更内容をそれぞのデータベースに反映)する必要が出てきます。だいいちデータベースの数だけライセンスが必要になります。
過去、Oracleのパフォーマンス・チューニングで呼ばれたらMATERIALIZED VIEWで1億件近いデータをのリフレッシュで更新していているのがボトルネックになっていて、データベースの統合が必要でした。

データベースによって用語等が違いますから、使うデータベースがわかっていたら質問のタグで明示した方が適切なコメントが付き易いです。

投稿2018/04/13 02:34

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

naonao11

2018/04/13 02:44

ありがとうございます! まだデータベースの設計までいっていないのでそのあたりがしっかりとしてきたときにまた質問させていただきたいと思います!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問