0

標準のファイル アクセス ルーチンを使用して、実際のライブの適切な MySQL データベースから読み取ることができるようにしたいと考えています。MySQL データベース自身の基礎となるプライベート ファイルを読み取るという意味ではありません。つまり、MySQL データベースをファイルとして「提示」するファイルベースの Linux デバイス ドライバーを実装するということです。つまり、テキスト ファイルは MySQL データベースの「ビュー」です。MySQL レコードは、レガシー コードが最初に理解するために書かれた CSV 形式の独自のカスタム バリエーションで表示されます。

バックグラウンド

非常に大きなデータ テーブルを含むテキスト ファイルから読み取る従来のコードがあり、各行は個別のレコードになっています。新しいレコード (行) を追加する必要がありますが、チーム内でファイルをめぐる競合があり、ソフトウェアを多くのシステムにリリースするときに、レガシー コードとこのファイルを多くのシステムに展開するオーバーヘッドもあります。テキスト ファイル自体もバージョン管理する必要があります。

これらのレコードの MYSQL データベース バージョンを直接呼び出すようにレガシー コードを変更するよりも、そのままにしておく方がよいと考えました。これにより、コードを変更する際のリスクが回避され、展開が容易になります。さらに、コードを変更すると、リスクの軽減、設計の議論、より多くのテストなどで多くのオーバーヘッドが発生します。

だから私がしようとしているのは、ファイルベースのデバイス ドライバーを作成して、MySQL データベースがレガシー コードにファイルとして表示され、データがレガシー コードが期待するフォーマット内にあるようにすることです。そうすれば、レガシー コードは変更されず、ファイルが実際に基盤となるデータベースであることを意識せずに動作できます。データベース内の個々のレコードを個別に更新/追加できるようになったため (MySQL を介して、または個々のレコードのユーザーからのデータ入力をガイドおよび検証する別の Web 管理インターフェイスを使用することをお勧めします)、競合が解消され、展開の労力が大幅に削減されます。それを使用するすべてのシステムでファイル全体をアップイシューする必要があります。

デバイス ドライバーには、標準のファイル読み取り操作を MySQL データベースへの MySQL クエリに内部的に変換するルーチンが含まれ、MySQL の結果を返し、ファイル読み取り操作に戻るためにこれらをテキスト形式に変換するルーチンが含まれます。

これは Linux/Unix プラットフォーム用です。

これは行われましたか?あなたの考えは何ですか?

(質問、文法、説明、読みやすさを整理しました。これは、受け入れられた回答には影響しません。)

4

1 に答える 1

2

この種のことは以前にも行われていました。明確な例は、バージョン管理リポジトリに仮想化されたビューを提供する (おそらくまだ提供している?) ClearCaseの動的ビュー ファイリング システムです。舞台裏では、オブジェクト キャッシュを実装し、必要に応じて RPC を使用して他のホストからオブジェクトをフェッチし、ローカル データベースとリモート データベースの両方を広範囲に使用しました。

ファイリング システムの大部分をユーザー空間に実装しようとしていることは明らかですが、(小さな) カーネル常駐部分が必要になります。特別な理由がない限り、FUSEはあなたが探しているものです。カーネルに常駐する部分を提供してくれます。作成する必要があるのは、ファイル操作を SQL 要求に変換する接着剤だけです。

于 2012-10-25T23:04:01.703 に答える