これを実装する最良の方法を提案してください:
基本的に、私が必要としているのは、PostgreSQL の仮想テーブルです。クエリを実行すると、他のテーブルからデータを検索します (これを生データ テーブルと呼びます)。しかし問題は、生データ テーブルのデータを変換する必要があることです。変換すると、元のテーブルにあるかのように結果が返されます。
イラストと例を使って説明します (私の実際のプログラムではなく、必要な主なものを説明するための単純化された例です):
生データ表
| id (int) | data (byte[]) |
----------------------------
| ... | ... |
| ... | ... |
Person テーブル (仮想テーブル)
| name (varchar) | address (varchar) | phone (varchar) |
--------------------------------------------------------
| ... | ... | ... |
| ... | ... | ... |
| ... | ... | ... |
私が今したいのは、次のようなことをするときです:
SELECT * FROM person WHERE name = 'Kim';
- 生のテーブルからのデータを照会する必要があります。つまり、すべての byte[] 配列を取得します。
- 生データから取得するデータ (名前、住所、電話番号) を逆シリアル化します。
- name = 'Kim' など、任意の条件を適用します。
- Person テーブルを単にクエリしたかのように、この一連の結果をユーザーに返します。
逆シリアル化/変換などのために、いくつかのプログラミング言語関数が必要になるかもしれないと推測しているので、Java ではPl/Javaなどの何かが役立つかもしれません。
また、Raw-data テーブルはそれほど長くないと想定できます。これは固定サイズのバッファーとして機能するように実装されているため、各クエリのすべてのエントリを読み取ることはそれほど問題ではありません。
概念的には、トリガー関数が必要ですが、READ にトリガーを設定することはできないようです。これについてどうすればよいかについての助けをいただければ幸いです。