AccessのデータをクラウドのAzure SQL Databaseへ移行することは可能?

はじめに

業務システムやECサイト等のWebサービス、スマホアプリ、ゲームといまやデータベースは様々な分野で欠かせないITシステムの一つとなっています。データベースには大きく分けて階層型、ネットワーク型、リレーショナル型、NoSQL型の4種類があり、これらカテゴリーの中に特徴の異なった様々なデータベース製品が複数存在します。2023年時点でシステムに採用されるデータベースはリレーショナル型が主流であり、NoSQL型も徐々に増加傾向にある状況です。リレーショナルデータベースとして有名なものとしてはオープンソースのMySQLやPostgreSQL、商用として利用されるOracle、Microsoft SQL Server、そして今回取り上げる小規模データ向けの「Microsoft Access」等が挙げられます。

また近年は仮想マシンやストレージをはじめとした様々なサービスがクラウド上で運用されていますが、データベースもその一つとなっています。クラウド上のデータベースサービスに関しては各社がそれぞれ1つではなく用途に合わせて複数のものを提供している状況で、今回取り上げる「Azure SQL Database」はMicrosoftのクラウドサービスであるAzureが提供しているデータベースサービスの一つとなります。

この記事ではMicrosoft AccessとAzure SQL Databaseのサービス概要を紹介したうえで、AccessのデータをAzure SQL Databaseに移行する方法やそのメリットについて紹介していきます。Azureやクラウドサービスについて総合的に学習している方、これから自社において実際にMicrosoft AccessからAzure SQL Databaseへの移行が必要となっている方、Accessを利用したオンプレミス環境下のデータをクラウドへ移行したいと思っている方はぜひご覧ください。

Azureで提供されている各種データベースサービスとSQL Databaseについて

Azureには「Azure SQL Database」含め「Azure Cosmos DB」「Azure Database for PostgreSQL」「Azure Database for MySQL」「Azure Database for MariaDB」と主に5つのデータベースサービスがあります。Azure SQL Databaseについて紹介する前にその他4つのデータベースについて簡単に紹介します。

Azure Cosmos DBはオープンソースのPostgreSQL、MongoDB、Apache Cassandraを利用できる分散型のNoSQLサービスです。99.999%の可用性を持ち、自動かつ即時のスケーラビリティに対応しているうえ、 10ミリ秒未満の読み書きが可能となっています。また言語としてJava、Node.js、Python、.NET および JavaScriptの利用が可能です。Azure Database for PostgreSQLはフルマネージドのリレーショナルデータベースであり、データベースエンジンとしてオープンソースの「PostgreSQL」を使っています。高可用性、スケーラビリティ、セキュリティ、コンプライアンスに優れていることが特徴で、機能としては自動バックアップ、自動チューニング、監視機能等が可能となっています。

Azure Database for MySQLは名称にある通りデータベースエンジンとしてオープンソースの「MySQL」を使用しており、その他はAzure Database for PostgreSQLと似た特徴を持つサービスです。スケーラブルなeコマースやモバイル・Webアプリ、財務管理アプリ、レイテンシーの低いゲームの開発等に適しています。Azure Database for MariaDBはデータベースエンジンとしてオープンソースの「MariaDB」を使用しており、その他はAzure Database for PostgreSQLやAzure Database for MySQLと似た特徴を持つサービスです。一般的なオープンソースのフレームワークや言語で動作可能であり、特にWEBアプリ、API、サーバレス環境を構築するサービス「Azure Web Apps」との連携に適しています。

またデータベース関連サービスとして「Azure Cache for Redis」というキャッシュサービスもあります。RedisはKVS(Key-Value Store)型のNoSQLデータベースですが、メモリ上で動作するためデータを長期的に保存するのには向いておらず、動作を高速化するためのキャッシュとして利用される傾向にあります。データベースとアプリケーションの間で動作することで高速な読み書きや分散処理をサポートします。

Azure SQL Databaseの特徴

以上のようなデータベースサービスがある中、Azure SQL DatabaseはMicrosoftの提供する「SQL Serve」を使い、クラウド上で常に最新バージョンのSQLを利用できるという特徴があります。オンプレミスで利用できるSQL Serverはリリース後12か月まで毎月更新、その後は隔月で更新という更新プログラムとなっているのに対し、Azure SQL DatabaseはフルマネージドなサービスとなるためAzure側で自動的に更新が行われ、常時最新の状態で利用できるという状況です。SQL Serverのバージョンアップについても同様のことが言えます。そのため特定バージョンのサポート終了等に合わせてオンプレミスで行うことがあるように、メンテナンスを組んでエンジニアによるバージョンアップを実施するという必要がありません。

さらにサービスのメンテナンス操作や停止による影響を最小限に留めており、SLAとして公表している可用性は99.9%となっています。パッチの適用やバックアップ、各種サービスタスクはもちろんのこと、ハードウェア、ソフトウェア、ネットワークにおけるエラーも自動的に処理することが可能となっています。バックアップについては毎週の完全バックアップと12〜24時間ごとの差分バックアップ、5〜10分ごとのトランザクションログバックアップの3パターンによって取得されます。これによりクリティカルなインシデントが発生しても故障直前の状態、またはある時点の状態までリカバリが可能です。

3つの中から適切なデプロイオプションを選択できるのもAzure SQL Databaseの特徴です。専用のリソースを持つことができる単一データベースはスケーリングができるので、リクエスト数の変動が頻繁なことがあらかじめ想定されるシステムで利用するのが適しています。

エラスティックプールはプールという枠組みに複数のデータベースを追加することで、単一のデータベースであるかのように運用できるオプションです。プールから特定のデータベースのみを切り離すことも可能で、必要最低限のコストに抑えるために柔軟なスペック変更をしたい場合に適しています。

もう一つのManaged Instanceは多くのSQL Serverデータベースエンジンと互換性を持ち、最新のSQL Server(Enterprise Edition)との互換性は限りなく100%に近い状況となっています。そのためオンプレミスで運用しているSQL Serverを使ったシステムにおいては、アプリケーションやデータベースに多くの変更を加えることなく移行できる可能性が高いです。なおManaged Instanceに関しては、Azureの公式サイト内でAzure SQL Databaseとは別サービスとして紹介されています。

料金はその他ほとんどのAzureと同様に従量課金制で、購入モデルやサービスレベル、ハードウェアの種類、リージョンによって変わります。

まず購入モデルにおいてはvCore(仮想コア)とDTU(Database Transaction Unit)の2種類があり、vCoreの場合は処理能力とストレージをユーザー側でそれぞれ選択できます。またvCoreかつ単一データベースの場合はコンピューティングレベルも「サーバーレス」「プロビジョニング済み」から選択できるようになります。サービスレベルはバランス型の「汎用」、障害発生時の回復を重視した「Business Critical」、柔軟なスケーリングに適した「ハイパースケール」の中から選択可能です。ハードウェアの種類は2023年時点では「Standard シリーズ(Gen 5)」の一択となっていますが、このハードウェアはほとんどのリレーショナルデータベースに適していることが記載されていました。

一方のDTUは処理能力とストレージがセットとなった3つのプランが用意されており、ハードウェアの種類も選択できません。プランは最大ストレージサイズ2GB、最大バックアップ保有期間7日間の「Basic」、最大ストレージサイズ1TB、最大バックアップ保有期間35日間の「Standard」、最大ストレージサイズ4TB、最大バックアップ保有期間35日間の「Premium」から構成されています。

リージョンに関してはvCore、DTUいずれの場合も日本であれば東日本・西日本から選択が可能です。またこれら料金の他、各種ストレージの追加や長期保存をしたい場合の料金は別途発生します。Managed Instanceに関してはその中でさらに単一データベース、エラスティックプールを選択できるようになっています。単一の場合はハードウェアの種類(Standard、Premium、Premium メモリ最適化)、サービスレベル(汎用、Business Critical)、リージョンの選択が可能で、エラスティックプールの場合はリージョンのみ選択可能です。

最後に紹介するAzure SQL Databaseの特徴は監視機能があるという点です。監視はどんなシステム運用をするにしても稼働を継続させるために欠かせないため、基本的にはメインのシステムとは別で監視サービスを構築することが多いです。しかしAzure SQL Databaseにおいては「Query Performance Insights」という監視機能が付与されています。この機能を利用するとリソースの消費量状況や実行回数の多い上位のクエリ情報といったパフォーマンス監視の他、AI・機械学習が搭載されているためデータに基づいた自動でのパフォーマンスチューニングも行ってくれます。一般的にデータベースのパフォーマンス監視やチューニングはエンジニアの工数を消費しやすく、専門的な深い知識が必要とされますが、Query Performance Insightsによって運用・監視におけるエンジニアの工数を大幅に削減できる可能性があります。

オンプレミスのSQL Serverとの相違点

>大きな違いは、これまでも紹介してきたようにオンプレミスのSQL Serverでユーザー側が行わなければならないアップグレードやバックアップ、トラブルシュートを、Azure SQL DatabaseではAzure側が管理してくれるという点が挙げられます。しかしオンプレミスの場合は様々なメンテナンスパッケージがあるため、社内で独自の規程がある、クライアントとの取り決めがあるという状況でそれらに厳密に合わせたメンテナンスが必要という場合は敢えてオンプレミスで運用するというのも一つの方法になります。

料金に関してもSQL Serverは機器やソフトウェアの購入、ライセンス料という部分に発生し、Azure SQL Databaseは使用量に対して発生するため異なります。クラウドサービスは臨機応変なスケーリングによって無駄なコストをかけずに済む仕組みとなっていますが、使用している限り大なり小なり料金が発生し続けるため、長期利用する場合はオンプレミスの場合よりコストが多くかかる可能性もあります。そのため、あらかじめ将来的なコストを見積もったうえで移行することをおすすめします。

Azureには料金計算ツールと総保有コスト(TCO)計算ツールというサービスがWeb上で提供されており、光熱費や人件費、センターの維持費用等も含めてより詳細に見積もりをしたい場合は後者を利用することとなります。ぜひ状況に応じて使い分けて将来的なコストを見据えたうえでオンプレミス環境からの移行を検討しましょう。

なおAzure SQL Databaseにはクラウドサービスならではの制限がありますが、「Hyperscaleサービスレベル」をオプションとして選択することで最大100TBまでのサイズが利用可能となったり、瞬時のバックアップやリストア、一定時間のスケールアップ/スケールダウンが可能となります。

Accessはデータベースソフトウェアの一つ

Accessは1992年のリリースから長い間継続して提供されており、2023年時点の最新バージョンが「Access 2021」となっています。各バージョンのサポート終了はあるもののサービス自体の終了は今のところアナウンスされている様子がないので、今後もしばらくは提供が継続すると見られます。

インストールされていればパソコンでも利用できるため、業務システム等で利用したことがあるという人もいるのではないでしょうか。なおOfficeやExcel等と同様にMicrosoft製品の一つでありGUIでの操作が可能なため、もしかしたら特にデータベースであったとは知らず何らかの入力システムの一つとして利用していた人もいることでしょう。

しかしAccessは正真正銘のリレーショナルデータベースシステムの一つであり、テーブルやクエリ、フォーム、レポートといったオブジェクトを使って表形式でデータの管理ができます。なおAccessには最大2GBまでのデータを保存でき、レコードの件数に上限はありません。ストレージがTBということも珍しくない中2GBというのは少なく感じるかもしれませんが、Accessに保存されるのは基本的にテキストデータであるため大規模のシステムでなければ十分に利用可能である容量と言えます。

Accessでは内部のデータを集計したり複数のテーブルを結合したりということが可能です。また帳票、リスト、ラベルといった様々な形式でレイアウトをしたうえでの印刷をすることも可能です。通常のデータベースは無機質にデータが並べられているだけなので慣れていない人は非常に見づらい状態となっていますが、Accessを利用すると可視化できることでより多くの人がデータを業務に使えるようになります。

データベースシステムの構築も難しくはなく、サンプルテンプレートも用意されています。そのためデータベースであるということを意識せずとも、例えば顧客管理や社員管理、販売や在庫管理ツールの一つとして利用することができます。さらにフォームを利用することで、アプリケーションでデータの追加等を行うための入力フォームを作成することも可能です。もちろん通常のデータベースと同様にデータの追加・更新・削除・参照も問題なくできます。

なお同じMicrosoft製品であるExcelで表(データベースで言うテーブル)が作成できるのはご存知かと思いますが、実はデータベースとして利用することもできます。ただし基本的には表計算ソフトとして提供されていて入力文字数や行・列数、型の指定がないというように本来のデータベースシステムとしては不十分であるため、少なくとも現段階では簡易的なデータベースとしての利用が可能と覚えておいた方が良いでしょう。

AccessのデータをAzure SQL Databaseに移行するためには?

移行方法について紹介する前に、移行先としてオンプレミスのSQL ServerではなくAzure SQL Databaseを選択することによるメリットを見ていきましょう。1つはデータベースの容量を気にしなくて済むようになるということが挙げられます。Accessの容量上限は2GBですが、Azure SQL Databaseの場合は特に上限の設定がされていません。料金に関しては別途考慮しなければなりませんが、少なくとも容量不足によりシステムの継続が不可になるということはありません。

2つ目は素早く簡単にデータベースの運用を開始できるという点が挙げられます。SQL Serverの方がカスタマイズ性には優れているものの、Azure SQL Databaseの方が利用を開始するまでのスピードが遥かに早いです。SQL Serverの場合はサーバーの構築や環境設定を行ったうえでSQL Server上での様々な設定を行う必要があります。データベースに関する知識が浅い場合はセキュリティリスクを背負ったままサービスを運用することにもなりかねません。対してAzure SQL Databaseは、Azureコンソールから対象の画面にアクセスし、用意されたメニューから名前、サブスクリプション、サービス等を順に選択・入力するだけで、後は自動でデータベースシステムが構築されます。またAccessにテンプレートがあることを述べましたが、Azure SQL Databaseにも豊富なテンプレートが用意されているためプログラミングの知識がないとしてもデータベースの構築・運用が可能となります。

無料枠が利用できることでのコスト削減も望めるでしょう。Azureは無料アカウントの作成をするだけで40以上のサービスが常時無料で利用できる他、200ドルに相当するクレジットを30日間利用して様々なAzureサービスの申し込みに使えるようになります。また、Azure SQL Databaseを含めたAzure Virtual Machines、Load Balancer等の代表的なサービスは12ヶ月間無料で利用できます。Azure SQL Databaseの12ヶ月無料に該当するのは単一データベースS0、データベーストランザクションユニット10個、ストレージ250GBです。

移行方法

移行方法は至ってシンプルですが移行前にソース環境がサポートされていること、ソースとターゲットいずれもアクセスが可能な権限状態になっていることを確認したうえでSSMA(SQL Server Migration Assistant for Access)のインストールを行ってください。

事前確認・準備が完了したらSSMAでプロジェクトを作成し、必要に応じて各種プロジェクトオプションの設定をします。そのプロジェクトにAccessデータベースファイルを追加します。

次にHTMLレポートの作成をし、変換の統計情報やエラー・警告が出ていないかを確認しましょう。移行作業における作業量もこの時に確認できます。必要に応じてデータ型の検証も行いましょう。

続いて移行先のSQL Databaseに関する情報を入力して実際に接続し、AccessのデータをSQL Database用にするためにスキーマの変換を行います。もし問題が発生したら画面上で確認のうえ都度修正が必要となります。以上の評価が完了したら移行を開始します。データ移行先のデータベースを右クリックして「データベースと同期する」をクリックし、ソースプロジェクトやターゲットの間のマッピングを確認しましょう。移行したい項目(全体を移行することも可能)にチェックを入れ、データベースもしくはオブジェクトを右クリックしてさらに「データの移行」をクリックしてください。

移行が完了したらデータ移行レポートを確認後にデータベースに接続して、問題ないことが確認できたら全ての作業が完了となります。また実際にシステムと連携しても問題なくデータの参照等が行えているかも確認することをおすすめします。

まとめ

Microsoft AccessからAzure SQL Databaseへのデータ移行はオンプレミスからクラウドサービスへの移行となるため、移行後はスケーラビリティや、マネージドなシステム上で運用することでのエンジニアの負担軽減・コスト削減といったクラウドのメリットを十分に享受できる有効な手段と言えます。

AccessはMicrosoft製品として1992年から30年以上にも渡って提供されているサービスであるため使い慣れている人が多く、GUIで管理できるのでコマンド操作に慣れていない場合でもある程度直感的に利用できるサービスです。しかしその一方で大規模なシステムでの利用には向いているとは言えず、規模が拡大する場合は別のデータベースサービスを探す必要があります。Azure SQL Databaseは同じMicrosoftのサービスであり、フルマネージドであるうえに高可用性、スケーラビリティ、セキュリティに優れているためAccessの移行先として適した環境の一つと言えます。

現在オンプレミスにおいてMicrosoft Accessのデータベースを利用している方は、ぜひ今回の記事を参考にして、Azure SQL Databaseの仕様を十分に把握したうえで移行先サービスとして検討してみてはいかがでしょうか。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です