物理的に別々のサーバのデータベース(同じ構造)をjoinして結果を取得したいと考えています。


Aサーバのtable_aと、Bサーバのtable_bが同じ構造のときに、この2つのテーブルをjoinしたいのですが、どうすればいいのでしょうか?

今考えているのは、table_bのクローンになるようなテーブルtable_a2をAサーバに作っておいて、定期的に同期させておいて、joinしたりするのかなと考えていますが、何かと面倒そうな気がしています。

もっとスマートでいい方法がないでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/04/04 22:23:17
  • 終了:2007/04/11 14:24:53

回答(3件)

id:samasuya No.1

samasuya回答回数315ベストアンサー獲得回数112007/04/04 23:21:48

ポイント27pt

DBによりますが、Oracleであれば、DBLinkを使えば

簡単だと思います。

select * from table_a

union

selsect* from table_b@hogehoge

Joinということであれば、

seldct a.hogehoe ,b.fugafuga from

a ,b@hogehoge

という感じです。

「hogehoge」は、tnsnaes.oraに記述されている値です。

sqlplus で接続するときと同じですね。

sqlplus user/pass@hogehoge

URLはダミーです。

http://www.hogehoge.com

id:dingding

MySQLなんですが、そんなことができれば素敵です。MySQLでは無理でしょうか?

2007/04/04 23:44:04
id:russian-blue No.2

russian-blue回答回数36ベストアンサー獲得回数02007/04/05 02:12:08

ポイント27pt

MYSQLで検索してみるとFederatedエンジン

が使えると(5.0.14以上とあります)

http://dev.mysql.com/doc/refman/5.0/en/federated-use.html

create table nantoka (

・・

) engine=federated

connection="mysql://..."

connectionの部分はThinkITの記事だと

以下の値を設定するみたいです。

(使った事はありません)

mysql://user_name[:password]@host_name[:port_num]/db_name/tbl_name

http://www.thinkit.co.jp/free/article/0608/1/5/

レプリケーション機能を設定すると同期出来るらしい?

http://www.irori.org/doc/mysql-rep.html

id:dingding

ありがとうございます。

確認してみたらメインの方がMysql4.0.24でした。

サブが5なのですが、これは使え無そうですね。


ありがとうございました。

2007/04/05 11:23:59
id:kato-s No.3

kato-s回答回数91ベストアンサー獲得回数32007/04/05 09:27:54

ポイント26pt

詳細は未確認で申し訳ありませんがこちらの内容が参考になるかもです。

http://itpro.nikkeibp.co.jp/article/COLUMN/20050922/221608/

> FEDERATEDストレージ・エンジンは,MySQL 5.0からの新機能だ。他のMySQLサーバーに格納されているテーブルをローカルにあるテーブルと同様にアクセスできるようにする。

id:dingding

mysql4を使っているためこれは使えないようです。

ありがとうございました。

2007/04/05 11:24:18

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません