2018年8月4日土曜日

Microsoft Accessの2Gバイトの壁

仕事でテキストベースのビッグデータを使うとき、EXCELで対応できない場合、Accessを使うことがあります。
例えば、キーワードでデータを参照するとき、EXCELならVLOOKUP関数を使いますが、
何十万行のデータ同志でVLOOKUPすると、小一時間はかかります。
その間、パソコンは使えません。
つまり仕事にならないです。

Accessならクエリ作成すれば数分(数秒の場合も)で処理ができます。
大量のデータを扱うならAccessは必須です。

しかし、ある時突然、「データベース破損しています」というエラーメッセージが出て、Accessが落ちてしまうようになりました。
Accessには「データベース最適化修復」という機能があり、破損したテーブルを修復することができます。
この機能を使って修復を試みましたが、一時的には修復しても、すぐに「データベース破損」エラーが出てきます。

原因がわからなかったので、ネットで調べてみたところ、テーブルには2Gバイトの制限があるようで、作成したAccessアプリのサイズを確認したところ、2Gは超えていなかったものの、2Gに近い容量でした。
クエリを実行すれば、容易に2Gを超えてしまいます。

テーブル破損の原因はこれかな?と思い、早速、データ量の多い、テーブルを別のアクセスに分割してみました。
分割したAccessの容量は1Gも満たないです。
そこから元のAccessにテーブルをリンク形式にして、容量を減らしました。

この処理を行って以降は「データベース破損」エラーは起きなくなりました。
Accessのアプリ開発を十数年してきていますが、今回の問題は初めての経験でした。
Accessはビッグデータを処理するソフトとして便利に使えますが、
業務規模が大きくなった場合はSASなどの本格的なデータ処理ソフトを使った方がいいと思います。

0 件のコメント:

コメントを投稿