前回華々しくビッグデータの大海原に漕ぎ出したわけですが、大海原を乗り越えるための船がまだ決まっていません。このままではあえなく溺れ死んでしまいます。
ビッグデータを乗り超えるための船
データベースです
まずはこれを決めることから始めたいと思います。
データベース仕様のメリット
Excelではなく、データベースを使用する理由は何でしょうか?
1.データがExcelに無いことでExcelの処理が速くなる
2.Excelの限界を超えたデータ量を扱える
1.たとえ関数が設定されていなくても、大量のデータがシート上にあるだけでExcelの動作は遅くなります。
更に関数が設定されていると大量のデータ全てを計算対象にしなければならず、更に速度が遅くなります。
2.Excelのデータ数の限界は1シートあたりExcel2003で65,536行、2007以降で1,048,576行です。
ただし行の限界値がこれだとしても列が増えれば増えるほど、使用に耐えるスピードで動いてくれる限界値はもっと下になります。
しかも今回データベースに投入したいデータ量は600万行になる予定です。単純にExcelの限界値を超えています。
ではデータベースを使用するとして多数あるデータベースの中から何を使用すればいいでしょうか?
データベースの選定基準
今回使用するデータベースに求める条件は以下です。
1.無料かつインストール不要
2.Excelからデータ抽出が出来る
1.今回のデータベースは職場で使用します。会社のPCにはシステム担当に許可を取らないとソフトをインストールすることが出来ません。正直説明して許可を取ることが手間です。そもそも許可が出るかも不透明です。
2.Excelでシートイベントやボタンクリックに応じてデータベースからデータが抽出できればと考えています。VBAを使用しますが、無料インストール不要の外部の仕組みがExcelとデータベースの架け橋をしてくれるならそれでも可です。
データベース候補
選定にあたっていくつかの無料かつインストール不要データベースをピックアップしました。
・Firebird(Embedded)
・SQL Server Compact
比較
SQLite | Access(mdb) | Firebird (Embedded) |
SQL Server Compact | |
---|---|---|---|---|
容量制限 | 128TiB | 2GB | 64TB | 16TB |
ドライバーインストール | 不要 | 不要 | 必要 | 必要 |
いずれも無料で使用することが出来ます。
容量制限はデータの行数ではなく、ファイルサイズで決まります。
この中ではAccessだけがダントツで少なく、2GBしかありません。今回取り込もうとしているデータは1年分で3GB弱になりそうなので、この時点でAccessは除外です。
残りの3つはいずれも容量制限的には無制限と言って差し支えない。
残りの3つの中ではSQLite以外の2つはドライバーのインストールが必要です。少なくとも私は見つけることが出来ませんでした。
となると今回の要件を満たすデータベースは
SQLiteのみということになりました。
まとめ
せっかくの心機一転の機会でしたので新しい方法があれば試してみるのも良いかと思いましたが、従来より使用していたSQLiteに落ち着きました。
当然現状に不満があるのでブラッシュアップの必要はありますが、基本の操作方法は解っていますので、一から新しい環境に馴染んでいくよりかは省力化になります。
また組込型のデータベースでトップシェアのSQLiteの使い方を知っておくことは将来的に役立つのではないかという憶測もあります。
次回以降はCSVをインサートする方法やデータベースの構築について勉強していきたいと思います。