フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: エンべデッドからC/Sへのスケールアップ
peterpan
メンバー
投稿数: 10
エンべデッドからC/Sへのスケールアップ
on: 2015/07/23 09:38 Thu

「Firebird徹底入門」の「エンデベッドサーバー」に関する説明(10ページ)に次の記述があります。

———————————————-
Firebirdのエンデベッドサーバーには,アプリケーションを大きく変更することなくクライアント/サーバー型に変更できるという利点があります。これにより,最初はエンデベッドサーバーで作成していたものを,途中からクライアント/サーバー構成に変更できます。
———————————————-

しかし,具体的な変更方法に関する記述が見当たりません。
ネット等を調べてみましたが同様です。

現在エンデベッドサーバー環境でアプリケーションを開発し,これを運用していますが,今回これをクライアント/サーバー構成に変更する必要が生じました。

おそらく何らかの設定変更を行うことになると思いますが,具体的作業手順を教えてください。

※参考
開発環境:DelphiXE8 エンタープライズ版 FireDACを使用
Firebird:2.5

igy
メンバー
投稿数: 473
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/23 14:31 Thu

このフォーラムでDEKOさんが書かれている、

何度も出てくるので Firebird の接続方法
http://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1255

あたりはいかがですか?

peterpan
メンバー
投稿数: 10
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/24 13:53 Fri

→igyさん

>何度も出てくるので Firebird の接続方法
>http://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1255

これはこれで十分参考になるのですが,私が困っているのは次の現象です。

◇現状について

現在運用しているシステムはエンベデッド用に開発したシステムです。

※開発環境は以下のとおり
DB:Firebird embeded
言語:Delphi XE3 PRO版
ミドルウェアとして dbExpress を採用し,サードバーティー(ロシアの会社)のfirebirdドライバを使用。

◇CS版開発について

今回,これをC/Sシステムに変更する必要が生じました。
XE3,PRO版ではリモート接続をサポートしていないということなので,この際XE8(エンタープライズ版)にアップグレードしました。
同時に dbExpress から FireDAC に変更しました。

この環境でシステムを改修(FireDAC対応)し,従来のエンデベデッド環境で動作することを確認しました。

次にこのシステムをネットワーク環境(ホスト=A,クライアント=B)で起動したところ,Aでは正常起動しましたが,Bでは「DB接続エラー」が発生しました。

なお,A,Bともにfirebirdサーバーシステムをインストールしています。

◇テスト処理

テスト目的で新しいDB作成し,簡単なテストプログラムを開発し,これをA,Bで実行したところ,正常にDB接続できました。ちなみに,A,B両マシンでデータの登録・訂正・削除もできました。

◇疑問点

こうした状況なので,既存のエンデベッデド版をCS版に移行するに際して,何らかの設定等が必要ではないかと思い質問させていただいています。

igy
メンバー
投稿数: 473
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/24 14:30 Fri

ちなみに、

何度も出てくるので Firebird の接続方法
http://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1255

で、

> また、Embedded Server でない限り TCP/IP 接続を行う事になりますので、ファイアーウォールの影響を受ける事も忘れないようにしてください。

と書いているとおり、

データベースを共有するための設定
http://netakiri.net/soft/esdb_share_tips.shtml

の「ファイアーウォールの設定」の箇所みたいな話じゃないですよね・・・

> ◇テスト処理
>
> テスト目的で新しいDB作成し,簡単なテストプログラムを開発し,これをA,Bで実行したところ,正常にDB接続できました。ちなみに,A,B両マシンでデータの登録・訂正・削除もできました。

これで、Aのデータベースに対し、BからDB接続して、データの登録・訂正・削除を行う簡単なテストプログラムは、動きますか?

peterpan
メンバー
投稿数: 10
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/24 14:50 Fri

>データベースを共有するための設定
>http://netakiri.net/soft/esdb_share_tips.shtml
>の「ファイアーウォールの設定」の箇所みたいな話じゃないですよね・・・

ファイアーウォール設定は問題ないと思います。
というのも,現行システム改修版はホスト側でもクライアント側でも正常に起動およびデータ更新ができるからです。

ただ,現行システムの場合,一方でシステムが立ち上がっている時にもう一方から起動しようとするとDB接続エラーとなるのです。

それに対してテスト目的システムではA,B両方から同時に起動及びデータ更新ができるのです。
不思議です(--;)

> ◇テスト処理
>
> テスト目的で新しいDB作成し,簡単なテストプログラムを開発し,これをA,Bで実行したところ,正常にDB接続できました。ちなみに,A,B両マシンでデータの登録・訂正・削除もできました。

>これで、Aのデータベースに対し、BからDB接続して、
>データの登録・訂正・削除を行う簡単なテストプログラムは、動きますか?

(1)最初にAを起動,次にBを起動…OK
(2)最初にBを起動,次にAを起動…OK

igy
メンバー
投稿数: 473
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/24 19:34 Fri

>ただ,現行システムの場合,一方でシステムが立ち上がっている時にもう一方から起動しようとするとDB接続エラーとなるのです。
>
>それに対してテスト目的システムではA,B両方から同時に起動及びデータ更新ができるのです。
>不思議です(--;)

現行システムとテスト目的システムでは、接続部分のコード(or設定)・使用しているDLL等ファイルに、
違いはありますか?
また、DB接続エラーでは、詳細なエラーメッセージは表示してませんか?

DEKO
管理者
投稿数: 2690
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/25 02:08 Sat

引用 peterpan on 2015/07/24 14:50 Fri
ただ,現行システムの場合,一方でシステムが立ち上がっている時にもう一方から起動しようとするとDB接続エラーとなるのです。

 
恐らく GDS32.DLL が複数存在するのだと思います。
そしてその片方は Embedded Server の GDS32.DLL なのでしょう。

Embedded Server の GDS32.DLL は基本的に同時接続できません。
最新の Firebird Embedded Server は同時接続できますが、これは所謂 C/S で使うためのものではないように思います。

DEKO
管理者
投稿数: 2690
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/26 01:08 Sun

それと、

[何度も出てくるので Firebird の接続方法]
http://ht-deko.com/delphiforum/?vasthtmlaction=viewtopic&t=1255

にも書いてありますが、C/S 形態の場合には TCP/IP 接続となります。
ネットワークドライブや UNC パスでの接続はダメなので注意してください。

peterpan
メンバー
投稿数: 10
Re: エンべデッドからC/Sへのスケールアップ
on: 2015/07/27 16:28 Mon

DEKOさん,ご回答ありがとうございます。

>恐らく GDS32.DLL が複数存在するのだと思います。
>そしてその片方は Embedded Server の GDS32.DLL なのでしょう。

ご指摘のとおり GDS32.DLL が複数存在していました。
どれを削除していいのか分からないのでトライ&エラーで試してみました。

最初うまくいかなかったのですが,ある時点で正常接続ができました。

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

あわせて igy さんにも御礼申し上げます。

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.05 sec.