AccessをVPNで使うと遅い、2つの理由
最近、テレワークを導入しているお客さまから、
AccessをVPNで社外からも使えるようにしたい
というご要望をいただきます。
しかし残念ながら、AccessをVPNで使うと、処理が遅くなる傾向があります。
具体的には、
・Accessの起動が遅くなる
・Accessの動作がモタつく
・Accessの応答がなくなる
などの問題が発生します。
ここでは、
AccessをVPNで使うと遅い理由を、2つご紹介します。
1.VPNは回線が遅い
まず、VPNは回線速度が遅いです。
VPNサービスの種類や価格によって、速度が異なりますが、
いずれも社内ネットワークよりも、かなり遅くなります。
AccessをVPNで使用する場合は、特に、
回線速度の速いサービスを利用することが望ましいですが、
それでも、社内ネットワークに比べると遅いです。
VPNには以下のような性質があり、
回線が遅い原因となっています。
1.インターネット回線を使用する
VPNは、インターネット回線を経由して、
仮想的なプライベートネットワークを構築する仕組みです。
多くの人が利用するインターネット回線は、利用者の混雑状況により、
回線速度が変わる(いわゆる「ベストエフォート」)であるため、
VPNも同様に、回線速度が変わります。
例えば、高速道路が渋滞して、荷物の配達が遅れるの同じです。
2.データを暗号化するのに時間がかかる
VPNを利用している方はご存知だと思いますが、
VPNの回線に接続するときはパスワードが必要です。
パスワードによって、データの暗号化が行われており、
もし誰かがインターネット上で通信データを傍受したとしても、
暗号化されたデータは、意味不明の内容となっています。
データを送受信する際、VPNで接続されているコンピューター同士が
お互いに「暗号化」「復号化」を繰り返すため、
処理に時間がかかり、
CPUへの負荷も高くなります。
データの件数が少なくても、
頻繁にデータの読み書きを繰り返すAccessでは、
暗号化と復号化の回数も多くなるため、
処理に時間がかかります。
2.Accessはサーバー側で処理ができない
Accessは、サーバー側にデータベースファイルを置いても、
データ検索は、クライアント側で処理されます。
それって、どう違うのか?
サーバー側で処理ができないAccessと、
サーバー側で処理ができる、より本格的なデータベースを、
比べてみましょう。
1.Accessはクライアント側だけで検索処理を行う
Accessファイルをサーバーの共有フォルダに置くことはよくありますが、
その場合、サーバーの役割は、
単なるファイル共有スペースとなっているだけです。
サーバーに置かれているデータを検索するには、
クライアント側で全てのデータを読み込んで検索するため、
元のデータが多ければ、ネットワークを流れるデータの量もそれに応じて多くなります。
最初のうちはデータの件数が少ないため、気づきにくいですが、
Accessを使い続けると、データが蓄積されるにつれて、
明らかに検索が遅くなります。
2.サーバー側で検索処理ができるデータベースの場合
SQL Serverや、Oracleなど、より本格的なデータベースでは、
クライアント側から、データ検索の要求を受け取り、
サーバー側で検索処理を行い、
必要なデータのみを返すことができます。
Accessでも、専用のプログラムを組み込んだり、
データの置き場所(テーブル)だけ、SQL Serverに置き換えることで、
これに近い状態にできる可能性はあります。
解決策
手っ取り早いのは、VPNの代わりに、専用線を引くことです。
でもそれって、現実的ではないですよね・・・。
テレワークのために自宅に専用線を引くのは、ほぼ不可能です。
ここでは、VPNを使い、Accessが遅くならないようにする方法を、
4つ、考えてみましょう。
1.テーブルのレコード件数を減らす
不要となったデータを削除することで、
データの流れる量を減らす方法です。
過去データなど、すでに不要となったデータは、
Acessでは早めに削除すべきです。
削除する前のAccessファイルをバックアップしておくことで。
後日、過去データが必要になった場合にバックアップ見ることもできます。
2.重たい処理を行う前に、必要なテーブルを丸ごとローカルにコピーする
集計処理など、重たい処理は、
サーバーとクライアントPCの間で大量のデータのやり取りが行われるため、
VPNを使うと、ものすごく遅くなります。
そのような、重たい処理を行う場合は、
最初に必要なデータが入ったテーブルを、
クライアント側にテーブル丸ごとコピーするという、
プログラミング方法が考えられます。
サーバーとやりとりする処理が最初の1回だけになるので、
(処理の最初だけ重たくなりますが、)
全体の処理時間はあまり遅くならないようにできます。
事前に必要なデータをコピーしたり、
サーバーのデータを見ずに、クライアントのデータを見るように
変更する等、やや大掛かりなプログラムの改修が必要になります。
3.ADOを使ってプログラミングする
Access VBAでプログラムソースコードを書いて
ADO(Access Data Object)を利用して
データベースとやりとりする処理を作る方法です。
効果は非常に高いですが、
大掛かりな改修が必要になります。
プログラミングの知識や、
データベースを読み書きするためのSQLの知識なども必要です。
4.運用方法を見直す
Accessの機能の中でも特に時間がかかる処理
(データ取込処理や、データ集計処理など)は、
VPN環境で速度を改善するのには限界があります。
これらの操作を行う場合は、
クライアントPCにAccessファイルを丸ごとコピーして、
処理を行うようにしたり、
そもそもVPNで行うことはなるべく避けて、
これらの操作は、社内にいる人だけが行うように、
運用方法を見直すことで解決する方法もあります。
より大胆な方法ですが、
Windowsのリモートデスクトップ機能を使い、
サーバーの画面を直接、コントロールして、
サーバーにインストールしたAccessを使うという方法もあります。
(サーバー側にユーザー人分の接続ライセンスが必要です)
まとめ
お使いのAccessを、VPNでも快適に使えるようにするには、
Accessが遅くなる原因を、回避するように作り替えたり、
運用方法を見直す必要があります。
大掛かりな改修を伴うことが多く、
当然、改修費用もかかるため、
場合によっては、Accessを新たに作り直した方が、
全体の費用が安くなる可能性もあります。
詳しくはご相談ください。
大手SIerに長年常駐し大規模システムの経験を重ねプログラムスキルとDB設計を磨く。AccessおよびExcelのVBAを得意とする。
⇒お仕事のご依頼はこちら