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

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

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

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

データベース

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

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

データベーススペシャリスト

データベーススペシャリスト試験 (DB)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

Q&A

解決済

1回答

1651閲覧

FuelPHP master/slaveで先にslaveにテーブルを作るのはおかしいと思う

earnest_gay

総合スコア615

MySQL

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

データベース

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

データベース設計

データベース設計はデータベースの論理的や物理的な部分を特定する工程です。

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

データベーススペシャリスト

データベーススペシャリスト試験 (DB)は、IPA 独立行政法人 情報処理推進機構の実施している国家資格です。

0グッド

0クリップ

投稿2018/03/26 16:47

FuelPHPのOrmauthでauthが必要なテーブルを生成するDBの設定箇所が以下でできるのですが、、、

return array( /** * DB connection, leave null to use default */ 'db_connection' => 'slave_users', /** * DB write connection, leave null to use same value as db_connection */ 'db_write_connection' => 'master_users',

想定ではdb_write_connectionで指定しているmaster_usersにテーブル生成されると思いきや、slave_usersの方にテーブル生成されているようです。

イメージ説明

master/slaveは扱ったことがないので分からないのですが、fuelphpに限らず通常は(一般的に)slaveに生成されるものなのでしょうか?

DBについてもそこまで詳しくないですが、master/slaveのメリットとして、参照以外はmasterを参照し、参照はslaveを参照することによって負荷分散することにあると思います。

ということは時系列から考えて、まずデータがないと参照は普通に考えて無理なはずです。

insertがあってselectができるので、時系列的には
masterにテーブル生成して、
master側のトリガーなどでslaveにもテーブル生成やデータ登録を反映させて、
それからようやくslaveを参照できてselectができるようになっていると思うので、
fuelphpのoil r migrate --packages=authで生成されるテーブル対象のDBがslaveであることに論理的に違和感があるのですが
どこか認識がずれていますでしょうか?

return array( 'db_connection' => 'master_users', 'db_write_connection' => 'slave_users',

という風にdb_connectionをmaster_usersにすればmasterに生成されますが、master_usersはdb_write_connectionに相当するはずなのでこれも違う使い方だと思います。。。

何かアドバイスお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

*意味がわかりました。
そもそも使い方がおかしかったです。

return array( /** *Authが必要なテーブル群を生成するDBのkey。 * \Orm\Modelのmaster/slaveと同じ考えだとslaveになるが同じ考え方ではない。 * あくまでも生成するDBなのでmasterを指定する。 */ 'db_connection' => 'master_users', /** * Authで操作する対象となるDBのkey。 */ 'db_write_connection' => 'master_users',

\Orm\Modelにもプロパティーで
db_connection
db_write_connection
を持っているので、\Orm\Modelだと、
db_connectionにslave
db_write_connectionにmaster
を設定するような作りになっていて同じ使い方だと思っていました。

というかdb_connectionもdb_write_connectionも同じDBのkeyにならないケースが思い浮かばないので、内部で処理してほしいですね、、、

命名的にも間違ってないけど、、、同じ名称のプロパティーがあるとごちゃごちゃになります。。。

fuelphp ormauth db_write_connection
で調べてもヒットなし。
fuelphp ormauth db_connectionなら公式にたどり着くけど、db_write_connectionの詳細がない。
ドキュメントを豊富にしてほしいですね、、、

投稿2018/03/26 17:05

編集2018/03/26 17:11
earnest_gay

総合スコア615

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問