C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

Access2013による大量データ管理について /くまくま (20/09/02(Wed) 15:10) #95684
Re[1]: Access2013による大量データ管理について /大谷刑部 (20/09/03(Thu) 13:03) #95690
  └ Re[2]: Access2013による大量データ管理について /??????? (20/09/03(Thu) 19:08) #95698
    ├ Re[3]: Access2013による大量データ管理について /くまくま (20/09/03(Thu) 19:10) #95699
    └ Re[3]: Access2013による大量データ管理について /大谷刑部 (20/09/04(Fri) 10:22) #95702
      └ Re[4]: Access2013による大量データ管理について /くまくま (20/09/04(Fri) 13:09) #95704 解決済み


親記事 / ▼[ 95690 ]
■95684 / 親階層)  Access2013による大量データ管理について
□投稿者/ くまくま (41回)-(2020/09/02(Wed) 15:10:32)

分類:[Microsoft Office 全般] 

Access2013による大量データ管理について
※質問が2種類の為分割しています

現在日本列島の情報を集めています。
質問1. 現在1mdbに1テーブルで6,109,344レコード格納されています。
このmdbのサイズは1,050,218,496バイト(約1GB)になっています。
これをさらに細分化して 6,109,344 * 256倍 = 1,563,992,064レコード格納したいと考えています。
そのままですとmdbの上限2GBを超えてしまう為、256分割で格納しようと思っています。

ただレコードを扱うとき、まとめて読み込みたいので
1mdbに256リンクテーブルを登録、ADOにてSQL"UNION ALL "で扱えるものなのでしょうか?
(使えるが1日かかるとかはNGで...)

また今後テーブルの種類も10以上を予定しているため2560mdbファイル以上できるのも問題かと

mdbを使用して他にレスポンスや制限で懸念となるところはありますでしょうか?

その場合個人での作業の為有料データベースソフトは使えませんが
別のデータベースソフトに切り替えたほうがよろしいでしょうか?
[ □ Tree ] 返信 編集キー/

▲[ 95684 ] / ▼[ 95698 ]
■95690 / 1階層)  Re[1]: Access2013による大量データ管理について
□投稿者/ 大谷刑部 (99回)-(2020/09/03(Thu) 13:03:35)
No95684 (くまくま さん) に返信
> ただレコードを扱うとき、まとめて読み込みたいので
> 1mdbに256リンクテーブルを登録、ADOにてSQL"UNION ALL "で扱えるものなのでしょうか?
> (使えるが1日かかるとかはNGで...)
当然できますが、別ファイルのパスがネットワーク上遠いところにあるとかなら、SQLというよりネットワークの接続がボトルネックになることは考えられますね。
あと項目数によりますが6百万レコードをAccessで処理するのはそもそもおすすめしません。
数万ならExcelよりは速いと断言でき、そんなに遅い印象はないですが、云百万ならそもそもちゃんとしたRDBMSにした方が無難ですね

> また今後テーブルの種類も10以上を予定しているため2560mdbファイル以上できるのも問題かと
プログラム的に何で実装するつもりかわかりませんが、かなりロジックが複雑になりそうですね。

> mdbを使用して他にレスポンスや制限で懸念となるところはありますでしょうか?
そもそもAccessの仕様の限界値までファイルサイズを増やす設計にしてることがナンセンスだと思います。

> その場合個人での作業の為有料データベースソフトは使えませんが
> 別のデータベースソフトに切り替えたほうがよろしいでしょうか?
個人なら商用云々は関係ないんでしょ?
なら、SQL ServerのExpress Editionが一番無難と思いますけど。
ただし、お使いになる端末がSQL Serverのインスタンスを起動してメモリ逼迫を起こさないことが条件にはなりますが。
最近の端末ならたぶん大丈夫です。




[ 親 95684 / □ Tree ] 返信 編集キー/

▲[ 95690 ] / ▼[ 95699 ] ▼[ 95702 ]
■95698 / 2階層)  Re[2]: Access2013による大量データ管理について
□投稿者/ ??????? (2回)-(2020/09/03(Thu) 19:08:36)
大谷刑部 さん
ご返事ありがとうございます

データベースで経験があるのは
Access
Oracle Database
Microsoft SQL Server
PostgreSQL

で1テーブル100万レコードは経験があるのですが
15億レコード越えは経験が無い為相談させていただいた次第です

一応調べたのですが
・Access2016
2GBからシステムオブジェクトに必要な領域を差し引いたもの
・Oracle Database (OTNライセンス)
無制限
・Microsoft SQL Server(Express Edition)
10GB
・PostgreSQL
無制限
・MySQL
無制限

であっていますかね?
[ 親 95684 / □ Tree ] 返信 編集キー/

▲[ 95698 ] / 返信無し
■95699 / 3階層)  Re[3]: Access2013による大量データ管理について
□投稿者/ くまくま (46回)-(2020/09/03(Thu) 19:10:14)
すみませんNo95698は「くまくま」です

[ 親 95684 / □ Tree ] 返信 編集キー/

▲[ 95698 ] / ▼[ 95704 ]
■95702 / 3階層)  Re[3]: Access2013による大量データ管理について
□投稿者/ 大谷刑部 (101回)-(2020/09/04(Fri) 10:22:07)
No95698 (??????? さん) に返信
> 大谷刑部 さん
> ご返事ありがとうございます
>
> データベースで経験があるのは
> Access
> Oracle Database
> Microsoft SQL Server
> PostgreSQL
>
> で1テーブル100万レコードは経験があるのですが
> 15億レコード越えは経験が無い為相談させていただいた次第です
以上の中ではAccess以外は大丈夫なんじゃないでしょうか?
100万レコードでもAccessは動きはするかもしれませんが、格段に遅いと思います。
数万件のデータをselect into するだけでもマシンスペックによっては1分以上かかることがあるので、
俗にいう運用に耐えないレベルな気はします。

> ・Microsoft SQL Server(Express Edition)
> 10GB
おっしゃっているのは、データベース単位と思います。
やってみないと分からない話ではありますが、1インスタンスでデータベース複数でどこまでいけるか
何1インスタンスまで稼働できるか
は試してみてもいいかもしれません。
人によってはExpressは1インスタンスのみと書いている人がいると思いますが、
私の端末は、稼働は1インスタンスしかさせてませんが(重くなるので)
複数インスタンスを存在させることはインストーラーを複数回動かせばいいので可能ですし、実際やってみました。
ただし、ライセンス上可能かどうかの判断は別なので、そこら辺を厳密に考えたい場合はMSに問い合わせた方がいいと思います。

ポスグレやMySQLは確かにフリーですが、GUIやMS系の言語(.NetやVBA)の対応はだいぶOracleやMSSQLより劣る気がします。
ADO.netの.Netプロバイダーも一応存在はしてるみたいですが、ビック2に比べて実装実績も少なく、おそらく作るのに一苦労すると思います。
(以前試そうとしたときはNUGETのリストに出てこなかったりして、インストール自体に手間取った記憶があります)

そして、管理系のGUIでは、最近のバージョンではよくなったとはいえOracleはMSSQLより劣ると思います。
性能の両者の比較はOracleの方がいいというのも、経験上は都市伝説に近いと思います。
7.0より前(6.5とか)のSQL ServerがOracleより性能上劣っていたのは事実と思いますが、
2000以降でSQL Serverが遅いと感じたことはありません。
むしろ統計情報採取が上手くいってないときのOracle(特に9iはひどかった)の方がパフォーマンス上問題になりました。実業務上で。

ということで、無償である程度のデータ量というときは、SQL Server Expressが最適に思います。
もちろん難点はあります。
管理ツール系が結構制限されてたり、最近のバージョン(2016以降)はなぜか構成マネージャーがインストール後のメニューにないので、ファイル名直叩きで実行するする必要があります。
ただ、UI系やデータ加工に関しては、Data Tool(SSIS,SSRS etc:別インストール)で補完すれば、Accessからの劣化も最小限になります。











[ 親 95684 / □ Tree ] 返信 編集キー/

▲[ 95702 ] / 返信無し
■95704 / 4階層)  Re[4]: Access2013による大量データ管理について
□投稿者/ くまくま (47回)-(2020/09/04(Fri) 13:09:25)
2020/09/04(Fri) 13:57:23 編集(投稿者)

大谷刑部さん
詳しい解説ありがとうございます。

>> ・Microsoft SQL Server(Express Edition)
>> 10GB
>おっしゃっているのは、データベース単位と思います。
はい。そうです。
調査したのですがバージョン等不明な状態で書かれている情報が多く
正確な所がわかりませんでした。

私も.NetやVBAの対応および設定については
[Microsoft SQL Server] > [Oracle Database] > [PostgreSQL] = [MySQL]
レスポンス等は
[Microsoft SQL Server] > [PostgreSQL] = [MySQL] > [Oracle Database]
のご意見と同じです。

私の場合経験が大分古い為変わっている可能性もあり、このような解説は大いに助かりました。
([Microsoft SQL Server]、[Oracle Database]で無料版がある事も知りませんでしたので)

教えていただいた情報から
「Microsoft SQL Server(Express Edition)」で試してみて
どうしても問題あるようなら
「PostgreSQL」
に切り替える方針で行ってみようかと思います。

解決済み
[ 親 95684 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -