[H8-ML(6091)] Re: データベースサーバーへの接続
From: Sawaguchi Yuji <issho@xxxxxxxxxxxxxxxxxx>
Date: 2007年01月04日(木)11時03分40秒
澤口@一升金です。

すけ すてたろうさんの<BAY115-F279B0AD938606DAEE6EC83B4BB0@xxxxxxx>から
>しかし、毎回ログイン→プロシージャまたはSQL実行→結果取得→ログアウトという
>処理を行わなければいけないため、処理時間が数十秒と遅く、かつ、全てが文字列で
>の処理なので、結果抽出等が結構面倒くさいという問題が発生しました。
サーバ側で時間がかかっているのか、クライアント側で時間がかかって
いるのかの切り分けが必要だと思います。

>通常Windowsでクライアントソフトを作るときはODBCやADOで簡単に
>接続できますが、マイコンで同様な接続の仕方はないものでしょうか?
>特にODBCライブラリみたいなものって存在するのでしょうか?
ODBCの目的は多種類のDBserverに統一的な手続きでアクセスするための
インタフェースライブラリですが、組み込みではServer接続に必要なク
ライアント側のセキュリティをはじめとするネットワーク補助機能がそ
もそも予め期待できません。
このため、LinuxやBSDなどのようにOS自体がネットワーク接続に必要な
広範なサービスを搭載している場合と違って、ODBCの開発ボリュームが
OSそのものを作り込むのと同じ位かかりますので、ODBCを実装するのは
コストメリットが何もないわけです。

>例えば市販やフリーのRTOSでTCP/IPに対応したものがありますが、これ
>らではどうやってサーバ接続するのでしょう
これはシステムに求められる機能で変わるでしょうし、予め使えるプロト
コルやポートが決められているかどうかでしょう。
サーバ側でhttpポートの使用しか許可していなければマイコンボードに
Webサーバ機能を実装してhttpプロトコルで接続するしかありませんし、
telnetが許可されていればtelnetプロトコルで接続できます。
要するに、TCP/IP対応というのはアドレスとポートを指定してデータの
送受信ができるということで、このデータをどう処理するかはサーバ側、
ボード側で何らかのサービスプログラムを走らせてデータ(プロトコル)
解析処理をする必要があるのですが、サーバ側では普通は新規にサービス
プログラムを作成しなくても予め組み込んであるプロトコル別対応サービ
スが使えるので、これを使えば多少楽(ボード側のサービスプログラムだ
け作成すればよい)ということになります。
もちろん、ボード側にも何らかのプロトコル対応ライブラリが予め提供さ
れていれば、それを使うに越したことはありません。
常識的には、ボード側プログラムが実績や信頼性に欠ける場合はサーバ側
でソケットライブラリ等を使ってそのボード専用の通信サービスを作成し、
ボードが直接にはDBMSなどにアクセスできないようにします。
また、サーバ-クライアント型のデータベースではなく、BerkeleyDBやSQLite
などの組み込みデータベースにすればセキュリティ的にはより楽になります。

>いろいろ探した結果、マイコンをHTTPサーバ等、サーバ側で使用する例は
>あったのですが、SQLServer等のDBMSを相手取ったクライアント側の例はな
>かなか、みつかりませんでした。
通常はプログラム開発やデバッグはPC側の方が圧倒的に楽で制約も少ないの
で、PC側がボードにアクセスしてデータを要求する構成にします。
つまり、ボードはデータを要求に従ってサービスする側、サーバになること
が多いです。
例えば、ボード側からアクセスしようとすると、PC側が落ちていたときの
タイムアウト処理やデータエラー時のデータ復旧など、何かとプログラムが
増えてしまうのです。
今回の件にしても、例えばサーバ側でボードインタフェース用のサービスプロ
グラムを走らせて、それがボードにデータを要求して受け取ったデータを文字
列化してDBMSに格納するという構成であれば、ボード側にはログイン処理やデ
ータの文字列化処理は必要なくなります。
システム管理者の立場もあろうかとは思いますが、このようなケースでマイコ
ンボード側に処理を集めると安全性・安定性・メンテナンス性がかえって落ち
ることの方が多い気がします。
だから、あまりやる人がいないのでしょう。


スレッド概略
[6083(R)](起点)
 └[表示中]
   └[6092(1)]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]