マイクロソフト系技術情報 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

どのOSも(WindowsもLinuxも)バイト・ストリームによる

程度はサポートしています。

本ページでは、これら(ファイルシステム)を使用しての、大量データの処理方式を考えます。

アクセス方式とレコード長

SAM(順次アクセス方式) - シーケンシャル・アクセス

DAM(直接アクセス方式) - ランダム・アクセス

DAM(直接アクセス方式) - ランダム・アクセスを実現するにあたっては、
特にファイル・ポインタ(読み書きの開始点)の制御が問題となります。

固定長

固定長レコードの場合、

余談になりますが、.NETで固定長レコードを処理する場合に便利な
C構造体によるバッファ型抜きを.NET構造体とMarshalクラスを使用して実現できます。

なお、このバッファ型抜き処理は、Open棟梁の共通部品に実装されています。

可変長

可変長レコードの場合、

実装上の考慮点

更新処理

固定長レコードの更新処理以外は、

更新差分情報のみをメモリに保持して、
最終的に全てのデータをバイト・ストリームで書き出し直す必要がある。

このため、I/Oのオーバヘッドが非常に大きくなってしまいます。

MMFの使用ポイント

メモリマップトファイル(MMF)を使用すれば、

が可能になり、効率的に参照処理を
実装できるようになる可能性があります。

余談

COBOL+VSAM

Unix、LinuxとWindowsのFS

Unix、Linuxのファイルシステムでは断片化が発生し難いと言う話があったので、
簡単に技術的な背景を纏めているサイトをリンクしました。

DBを使用する場合

RDBMS+SQLを使用することによって、
アプリケーションはデータ・アクセスの際に

を考慮せずに、論理データに直接アクセスできるようになりました。

バッチ処理

大量データのバッチ処理は、基本的にストアドが高速です。

Java、.NETで実装する場合は、性能的に
問題が無いかを事前に検証した方が良いでしょう。

検索、結合、統合、集計機能

大量データのバッチ処理で、
以下の様なDBMSの機構を使用したいケースもある。

検索や結合機構にはインデックスが使用されているため

等が必要になる。

オーバーヘッド

DBを利用可能にするまでのオーバーヘッドには以下のものがあります。

無償で利用できるDB

補足

しかし、バッチ処理等で高性能なデータ変換処理を要求されるケースでは
未だにファイル・レベルでのデータ処理が必要になることもあります。

例:データのエクスポート → 変換処理(シーケンシャル) → データのインポート

ETLツールを導入する方式

HULFT DataMagic?などを使用することで
可変長レコードの大量データも容易に処理できる可能性があります。


Tags: :データアクセス


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS