ゆるオタクの生活改善メモ帳

仕事メモとライフハック。あらゆるものを効率化してダラダラする時間を増やしたい。

Accessの2G制限で困ったときの対応

システム屋さんだとAccessってと言われてしまうAccess
でもビジネス目線で考えると、今やシステム人材確保が難しいので、比較的安い人をそろえやすいAccessは要件さえ詰めてしまえば全然ありだと思ってます。
ただ、こいつを使う上で大変な問題の一つ2G制限。これについて今まで対応してきたことや今後提案していきたいな~っていう対策をまとめます。

2G制限とは?

拡張子が.accdbや.mdbAccessのファイルはSQLクライアント(およびSQL文達)とDBが一体になっているものです。 ですので、テーブルに収められるデータが多くなればなるほどファイルサイズが大きくなります。

そして、問題のAccessの仕様はこちら↓
Access 2016 の仕様 - Access

Access 2016 データベース (.accdb) の合計サイズ (すべてのデータベース オブジェクトおよびデータを含む)
2 GB からシステム オブジェクトに必要な領域を差し引いたもの

これが業務内容によってはかるーく超えてしまうので、実務者の方々どうにかこうにか苦労してAccessを利用しています。

対応策

  1. フロントエンドとバックエンドを分ける
  2. 1を実行した上でバックエンドをDBにする

1. フロントエンドとバックエンドを分ける

Access のパフォーマンスを向上させる - Access

こちらの[データベースを分割する]にある内容となります。 つまりはSQLクライアント部分とDB部分を別ファイルにしちゃえというものです。
別のファイルにしてSQLクライアント側からリンクテーブルを使いDB側に接続します。 ただこれを行ってもAccessファイル自体の2G制限は改善されませんので、2Gを超えるテーブルはDBファイルを増やしSQLクライアント側でUNIONを行う等面倒な作業が必要となります。

2. 1を実行した上でバックエンドをDBにする

1ではバックエンドAccessの2G制限自体は変わらないため、バックエンドをSQLservermysql、postgresSQLに置き換える方法です。
最近ではAmazon RDSやAzure SQL Databaseなど、クラウドサービスで簡単にDB構築ができるようになったのでこちらがおすすめです。(業務では未経験だがすすめる)
ただし、複数人で利用する場合は普通のDB設計、DB管理が必要となります。(とはいっても複数人で利用する場合はAccessでも考慮が必要です。)

言いたいこと

データソースは一元管理しよう(戒め)