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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

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

Q&A

解決済

1回答

614閲覧

複数のシステムから1つの共通データベースにアクセスする一般的な方法について

sujico.net

総合スコア453

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

データベース

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

0グッド

2クリップ

投稿2022/08/30 09:59

お世話になっております。
ご質問をさせて頂きたく存じます。

当方につきましては、DBの初心者です。
初心者の質問となりますこと 何卒ご了承ください。

ご相談事項

複数のシステムから1つの共通データベースにアクセスする場合のスマートな方法に悩んでいます。

 

詳細

ご相談事項の詳細について、記載致します。

簡潔な仕様(前提)

・それぞれ独立したシステムである「システムA」「システムB」「システムC」の開発に着手する。
・「システムA」はデータの参照先として「DBサーバA」に接続する。
・「システムB」はデータの参照先として「DBサーバB」に接続する。
・「システムC」はデータの参照先として「DBサーバC」に接続する。
・3点の各システムは共通のユーザ情報でログイン出来る。
・3点の各システムは共通のユーザ情報参照先として「DBサーバX」に接続する。
・「DBサーバX」のユーザIDを元に「DBサーバA」から抽出したいデータがある。
・「DBサーバX」のユーザIDを元に「DBサーバB」から抽出したいデータがある。
・「DBサーバX」のユーザIDを元に「DBサーバC」から抽出したいデータがある。
・負荷分散の為に各DBサーバは図のように分けておきたい

イメージ説明

 

上記仕様におけるご相談事項

共通ログイン機能を作る際、以下選択のいずれが適切でしょうか。
実際にはシステムの想定アクセスユーザや、具体的な抽出頻度や量、その他要件に基づいて判断すべきかと思いますが、上記情報から「一般的には…」と 考え方の部分についてアドバイス頂ければと考えております。

 

  • DBサーバXから抽出したユーザ情報を元に各DBサーバへクエリを発行する(クエリを2回以上実行する)
  • DBサーバXのユーザ情報と各DBサーバの情報を紐づけたいならばJOINすべきなのでDBサーバを分離しない方が良い(可能な限り1回でクエリを済ませる)
  • その他(共通データの持たせ方に誤りがある, 全てのデータベースは1サーバにまとめるべきである, 等…)

 
また、お差し支えなければその理由についても教えて頂けますと幸甚にございます。
情報が限られている中で大変恐縮ではございますが、何卒宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

ベストアンサー

実際にはシステムの想定アクセスユーザや、具体的な抽出頻度や量、その他要件に基づいて判断すべきかと思いますが、

ご自身で気付いてるようですが、ほんとこれの一言に尽きるのではないでしょうか? けっしてこのやり方が間違っているという事はないとおもいますが、データベースが分かれていることによる弊害は間違いなくあります(JOINができないのもそうですが、とにかくDBの管理コストが格段に跳ね上がります)。

よほどの負荷がかかるという想定があるならば、最初からこのように予防線を張っておくのはありだとは思いますが、大して負荷がかからない可能性があるなら、まずはサーバを分けずに組んだ方がいいではないかという気がします。オンプレ環境であれば最初から慎重になるのもわかりますが、AWSなどのクラウドを利用されるのであればスケールアップも簡単にできますし、そこまで慎重にならなくてもいいのではと感じました。

どういうシステムを開発するかわかりませんし、負荷以外にもセキュリティに関する部分とか含めると一般的な話で議論する意味もなくなってきますので、まずは作ろうとしているシステムをしっかり把握されているご自身や周りの方としっかり議論・検討して判断されるべき案件かと思います。

投稿2022/08/30 11:18

AbeTakashi

総合スコア4537

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

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

sujico.net

2022/08/30 12:43

ご回答を頂き、ありがとうございます。 まさにご指摘を頂きました通りかと存じます。 その中で、一般論としてのアドバイスを頂きありがとうございます…! 自分以外の意見を拝見したいと考えておりましたため、大変ありがたく思います。参考になりました。 頂いたご意見と想定される弊害を参考に 設計について適切な議論を重ねていければと考えております。 ベストアンサーとさせて頂きます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問