有人可以建议实现这一点的最佳方法:
本质上,我想要的是 PostgreSQL 中的一个虚拟表,当被查询时,它会从其他表中查找数据(称为原始数据表)。但问题是,原始数据表中的数据需要转换,转换完成后,返回的结果就像在原始表中一样。
我将用插图和一个例子来解释(不是我的真实程序,只是一个简化的例子来解释我需要的主要内容):
原始数据表
| id (int) | data (byte[]) |
----------------------------
| ... | ... |
| ... | ... |
人员表(虚拟表)
| name (varchar) | address (varchar) | phone (varchar) |
--------------------------------------------------------
| ... | ... | ... |
| ... | ... | ... |
| ... | ... | ... |
我现在想要的是,当我做类似的事情时:
SELECT * FROM person WHERE name = 'Kim';
- 应该查询原始表中的数据,即获取所有字节[]数组;
- 反序列化数据以从原始数据中获取(姓名、地址、电话);
- 应用任何条件,即 name = 'Kim'
- 将这组结果返回给用户,就像他们只是简单地查询了 Person 表一样。
对于反序列化/转换等,我猜我可能需要一些编程语言功能,所以对于 Java,诸如Pl/Java之类的东西可能有用吗?
此外,您可以假设原始数据表不会很长,它被实现为充当固定大小的缓冲区,因此读取每个查询的所有条目并不是什么大问题。
从概念上讲,我需要的是一个触发功能,但似乎我们不能在 READ 上触发。任何有关我如何解决此问题的帮助将不胜感激。