Accessの2G制限で困ったときの対応
システム屋さんだとAccessってと言われてしまうAccess。
でもビジネス目線で考えると、今やシステム人材確保が難しいので、比較的安い人をそろえやすいAccessは要件さえ詰めてしまえば全然ありだと思ってます。
ただ、こいつを使う上で大変な問題の一つ2G制限。これについて今まで対応してきたことや今後提案していきたいな~っていう対策をまとめます。
2G制限とは?
拡張子が.accdbや.mdbのAccessのファイルはSQLクライアント(およびSQL文達)とDBが一体になっているものです。 ですので、テーブルに収められるデータが多くなればなるほどファイルサイズが大きくなります。
そして、問題のAccessの仕様はこちら↓
Access 2016 の仕様 - Access
Access 2016 データベース (.accdb) の合計サイズ (すべてのデータベース オブジェクトおよびデータを含む)
2 GB からシステム オブジェクトに必要な領域を差し引いたもの
これが業務内容によってはかるーく超えてしまうので、実務者の方々どうにかこうにか苦労してAccessを利用しています。
対応策
- フロントエンドとバックエンドを分ける
- 1を実行した上でバックエンドをDBにする
1. フロントエンドとバックエンドを分ける
Access のパフォーマンスを向上させる - Access
こちらの[データベースを分割する]にある内容となります。
つまりはSQLクライアント部分とDB部分を別ファイルにしちゃえというものです。
別のファイルにしてSQLクライアント側からリンクテーブルを使いDB側に接続します。
ただこれを行ってもAccessファイル自体の2G制限は改善されませんので、2Gを超えるテーブルはDBファイルを増やしSQLクライアント側でUNIONを行う等面倒な作業が必要となります。
2. 1を実行した上でバックエンドをDBにする
1ではバックエンドAccessの2G制限自体は変わらないため、バックエンドをSQLserverやmysql、postgresSQLに置き換える方法です。
最近ではAmazon RDSやAzure SQL Databaseなど、クラウドサービスで簡単にDB構築ができるようになったのでこちらがおすすめです。(業務では未経験だがすすめる)
ただし、複数人で利用する場合は普通のDB設計、DB管理が必要となります。(とはいっても複数人で利用する場合はAccessでも考慮が必要です。)
言いたいこと
データソースは一元管理しよう(戒め)